Verificando Se Valor Ja Existe No Banco de Dados

February 28, 2019 | Author: Adriano Vieira da Silva | Category: Microsoft Access, Windows Vista, Firefox, Microsoft Windows, Sql
Share Embed Donate


Short Description

Download Verificando Se Valor Ja Existe No Banco de Dados...

Description

Verificando se valor ja existe no banco de dados

Código //Utilizando Zeos para postgreSQL //incluir sql com parametros a serem comparados //Código utilizado na hora de um cadastro  procedure  begin

TFRM_LOGIN.DBEdit3Exit TFRM_LOGIN. DBEdit3Exit( (Sender: TObject TObject) );

ZQuery1.Close; ZQuery1.ParamByName ZQuery1. ParamByName( ('usuario' 'usuario') ).Value Value:= := DBEdit3.Text DBEdit3. Text; ; ZQuery1.Open ZQuery1. Open; ; if ZQuery1.Eof= False then  begin

ShowMessage ('Usuário informado já consta em sua Base de Dados!' ); ZQuery1.Active ZQuery1. Active:= := True; DBEdit3.SetFocus DBEdit3. SetFocus; ; DBEdit3.Text DBEdit3. Text:= := '' ''; ; end  else

Abort; DBEdit2.SetFocus DBEdit2. SetFocus; ; end ;

Verificar se Usuário já existe com Locate dando erro Enviada: Sex Nov 19, 2010 8:46 am Assunto: Verificar se Usuário já existe com Locate dando erro

Estou criando um cadastro de usuário e senha. Tentei fazer ele buscar o Nome com Locate e DBEdit.Text para verificar se o usuário já existe no banco de dados, mas ele aparece erro sempre. Código:

if (ClientDataSet.Locate('Nome',DBEdit.Text,[])) then begin if MessageBox(Handle, 'Usuário já Existe!!', 'Atenção!', MB_OK or MB_ICONEXCLAMATION) = IDOK then end else begin ADODataSet.Close; ClientDataSet.ApplyUpdates(0); ADODataSet.Open; end;

Ele está aparecendo que existe usuário mesmo não existindo o nome do usuário no banco e não insere no banco. Voltar ao Topo  joemil Moderador

Enviada: Sex Nov 19, 2010 9:16 am

Assunto:

toda vez q vc muda o ponteiro do registro em um Dataset, o delphi automaticamente da um post no registro q esta em edicao/insercao. Registrado: Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 5872 Localização: Sinop-MT

entao vc deveria usar um Edit pra digitar os dados e gravar essas informacoes manualmente.  _________________  ________________ _ SEMPRE COLOQUE [RESOLVIDO] NO SEU POST Enviar imagens: http://tinypic.com/

Voltar ao Topo carbox Mestre

Enviada: Sex Nov 19, 2010 9:57 am Assunto: Re: Verificar se Usuário já existe com Locate dando erro

Amigo, eu uso assim pra localizar o CPF_CNPJ já cadastrado, você poder adaptar a sua necessidade.. Registrado: Quarta-Feira, 3 de Março de 2010 Mensagens: 992

Código:

procedure TFClientes.DBE TFClientes.DBEdit9KeyDown(Sende dit9KeyDown(Sender: r: TObject; var Key: Word; Shift: TShiftState); //VERIFICAÇÃO DE CPF/CNPJ IMPLEMENTADA/MODIFICADA IMPLEMENTADA/MO DIFICADA EM 17/08/2010. begin IF Qytabela.State In [DsInsert] then if (key = 13) or (key = 9) Then Begin if (( DBEdit9.Text = '00000000000') or (DBEdit9.Text = '00000000000000' '00000000000000')) )) then

DBEdit17.SetFocus else With ExecSql('Select * from Clientes where CPF_CNPJ = :Nom',varArrayOf([DbEdit9.Text]) ) Do if not(bof and eof) then Begin ShowMessage('CPF/CNPJ JÁ CADASTRADO NO SISTEMA, FAVOR VERIFICAR'); QyTabela.Cancel; end end; end;

RAFFAEL1983 escreveu: Estou criando um cadastro de usuário e senha. Tentei fazer ele buscar o Nome com Locate e DBEdit.Text para verificar se o usuário já existe no banco de dados, mas ele aparece erro sempre. Código:

if (ClientDataSet.Locate('Nome',DBEdit.Text,[])) then begin if MessageBox(Handle, 'Usuário já Existe!!', 'Atenção!', MB_OK or MB_ICONEXCLAMATION) = IDOK then end else begin ADODataSet.Close; ClientDataSet.ApplyUpdates(0); ADODataSet.Open; end;

Ele está aparecendo que existe usuário mesmo não existindo o nome do usuário no banco e não insere no banco. Voltar ao Topo RAFFAEL1983 Membro Junior

Enviada: Sex Nov 19, 2010 4:30 pm

Assunto:

Não estou conseguindo. Pensei em colocar um ADOQuery só para consultar e depois verificar se existe no banco por ele. Caso tivesse ele exibiria a mensagem, caso contrario ele voltaria para o DataSet e incluiria no ClientDataSet; Sem sucesso não consegui até agora um jeito de fazer isso funcionar. Registrado: Segunda-Feira, 19 de Mai de 2008 Mensagens: 309

Voltar ao Topo lucas_alves Colaborador

Enviada: Sex Nov 19, 2010 5:08 pm

Dê uma olhada, veja se te ajuda: Código:

Assunto:

Function TForm5.ValidarDocumento : Boolean; Function CNPJCPFValido : Boolean; begin Result:=False; Registrado: Domingo, 30 de Agosto de 2009 Mensagens: 1632 Localização: São Gonçalo - Rio de Janeiro

Case RadioGroup1.ItemIndex of 0: begin if not (ValidarCNPJ(edtCNPJ.Text)) then begin MessageDlg('CNPJ Inválido, favor digitar corretamente!',mtWarning,[mbOK],0); edtCNPJ.SetFocus; end else Result:=True; end; 1: begin if not (ValidarCPF(edtCNPJ.Text)) then begin MessageDlg('CPF Inválido, favor digitar corretamente!',mtWarning,[mbOK],0); edtCNPJ.SetFocus; end else Result:=True; end; end; end; Var Novo_ADODataSet : TADODataSet; S_Tipo : String; begin Case RadioGroup1.ItemIndex of 0: S_Tipo:='CNPJ '; else S_Tipo:='CPF '; end; result:=False; if edtCNPJ.ReadOnly then Exit; if Length(SomenteNumeros(edtCNPJ.Text))=0 then begin result:=True; Exit; end; With Novo_ADODataSet do begin Novo_ADODataSet:=TADODataSet.Create(Application); Connection:=ADOConnection1; if (DataSource1.State in [dsEdit]) then CommandText:='select * from Clientes where Código '+ADOQuery1Cdigo.AsString+' and CNPJ = '+quotedstr(edtCNPJ.Text) else CommandText:='select * from Clientes where CNPJ = '+quotedstr(edtCNPJ.Text); Open; end; if not Novo_ADODataSet.IsEmpty then begin MessageDlg(S_Tipo+'Já Cadastrado',mtError,[mbOK],0); edtCNPJ.SetFocus; end else if CNPJCPFValido then result:=True; FreeAndNil(Novo_ADODataSet);

end;

Essa função cria um TADODataSet em tempo de execução! Abraços!!!  _________________

Agora eu também programo em PHP.

Delphi

Desenvolvimento Fortes Report - Tutorial - Parte 1 Neste artigo veremos como fazer um relatório simples usando um outro componente bem parecido com o Quick Report, que já vem com o Delphi, porém com várias vantagens que poderemos ver em futuros artigos que serão publicados no portal.

Read more: http://www.linhadecodigo.com.br/artigo/725/fortes-report-tutorial-parte-1.aspx#ixzz2DEs1uYlo

Desenvolvendo o Primeiro Relatório Amigos, fazer relatórios é o famoso mal necessário, que particul armente eu não me incomodo em desenvolver, até porque, geralmente é a parte mais rentável do negócio ! Ao final do artigo tem o link onde você poderá baixar este componente e ensina como instalar. Bom, mas deixemos de delongas e vamos ao trabalho... Primeiros Passos Não vou me prender em detalhes de banco e conexão. Eu usei um banco de dados de exemplo em Firebird que se encontra na pasta Examples do mesmo. Abra um projeto novo no Delphi e renomeie o formulário corrente para frmChamaRel , coloque um Data Module e chame-o de dmDados e um segundo formulário para frmRelEmpregados. Coloque os componentes no Data Module como mostra a Figura 1, apontando o SQLConnection para o banco EMPLOYEE.FDB da pasta C:\Arquivos de programas\Firebird\Firebird_1_5\examples.

Figura 1. Data Module com os componentes de conexão Coloque o SQL descrito na Listagem 1 no SQLDataSet na propriedade CommandText: Listagem 1 SQL do relatório select e.emp_no, e.first_name, e.last_name, e.phone_ext, e.job_country, d .department from employee e –

 Inner join department D On d.dept_no = e.dept_no

Ligue os componentes e vamos seguir em frente... Criando o Relatório Agora vamos começar a brincadeira com o Fortes Report. Vá para o form frmRelEmpregados. Adicione no formulário o componente RLReport da paleta do Fortes (Fortes Report) e posicione-o conforme a Figura 2.

Figura 2. Posicionamento de RLReport no formulário de impressão Este componente é o que faz toda a manipulação dos outros componentes de impressão que já iremos ver. Pressione Alt+F11 para dar um Uses na unit do DataModule dmDados. Inclua um DataSource a este formulário e aponte a propriedade DataSet ao ClientDataSet do DataModule. Inclua agora três componentes RLBand ao RLReport e modifique as propriedades dos componentes do relatório como descrito na Tabela 1. Componente

Propriedade

Valor

RLReport1

DataSource

DataSource1

Title

Relatório de Empregados

BandType

btHeader

Color

ClSilver

Font/Style/fsBold

True

BandType

btHeader

Font/Style/fsBold

True

RLBand3

BandType

btDetail

RLBand3

BandType

btFooter

RLBand1

RLBand2

Tabela 1. Valores para as propriedades dos comp. do relatório Na primeira banda do relatório, o título do relatório, insira um componentes RLLabel e dois RLSystemInfo. Altere as propriedades como descrito na Tabela 2. Componente

Propriedade

Valor

RLLabel1

Align

faLeftTop

Caption

linhadecodigo.com.br

Align

faCenterTop

Info

itTitle

Align

faRightTop

RLSystemInfo1

RLSystemInfo2

Info

itPageNumber

Text

Pág.: Tabela 2. Valores para as propriedades da banda de título

Posicione agora na segunda banda do relatório, RLBand , insira seis RLLabel e altere as propriedades como descrito na Tabela 3. Componente

Propriedade

Valor

Todos

Align

faTopOnly

RLLabel2

Caption



Left

0

Caption

Nome

Left

48

Caption

Sobrenome

Left

200

Caption

Ramal

Left

392

Caption

País

Left

448

Caption

Departamento

Left

592

RLLabel3

RLLabel4

RLLabel5

RLLabel6

RLLabel7

Tabela 3. Valores para as propriedades da banda de título Na banda de detalhe, insira seis RLDBText, que serão os componentes DataWare contendo os dados de cada coluna da tabela. Veja a na Tabela 4 os valores de suas propriedades. Componente

Propriedade

Valor

Todos

Align

faTopOnly

AutoSize

False

DataSource

DataSource1

DataField

EMP_NO

Left

0

DataField

FIRST_NAME

Left

48

DataField

LAST_NAME

Left

200

DataField

PHONE_EXT

Left

392

DataField

JOB_COUNTRY

Left

448

RLDBText1

RLDBText2

RLDBText3

RLDBText4

RLDBText5

RLDBText6

DataField

DEPARTMENT

Left

592 Tabela 4. Valores para as propriedades da banda de detalhe

E finalmente vá para a última banda, que é a de rodapé, insira dois RLSystemInfo e altere as propriedades como descrito na Tabela 5. Componente

Propriedade

Valor

RLSystemInfo3

Align

faRightTop

Info

itDate

Text

Data:

Align

faRightTop

Info

itHour

Text

Hora:

RLSystemInfo4

Tabela 5. Valores para as propriedades da banda do rodapé E para terminar este formulário, vá no evento BeforePrint e coloque a seguinte linha em negrito descrita abaixo em negrito: procedure TfrmRelEmpregados.RLReport1BeforePrint(Sender: TObject; var PrintIt: Boolean); begin dmDados.ClientDataSet.Open; end; Este evento irá abrir o ClientDataSet antes do início da impressão. Salve este formulário e vá para o formulário ( frmChamaRel ) que irá chamar o relatório. O resultado final ficará como a Figura 3.

Figura 3. Posicionamento de de todos os componentes em RLReport no formulário de impressão Chamando o Relatório Agora iremos programar o formulário para a chamada do relatório propriamente dito. Insira um RadioGroup e um BitBtn e posicione-os como mostra a Figura 4.

Figura 4. Formulário para chamada do relatório Aperte Alt+F11 e de um Uses na unit que contém o relatório.

No evento OnClick do botão coloque o código descrito abaixo em negrito: procedure TfrmChamaRel.BitBtn1Click(Sender: TObject); begin If RadioGroup1.ItemIndex = 0 Then frmRelEmpregados.RLReport1.Preview() // preview do relatório Else frmRelEmpregados.RLReport1.Print; // imprime direto para impressora end; Executando o relatório O próximo passo é executar o relatório apertando F9 no Delphi. Já executando, marque a primeira opção do RadioGroup e clique no botão “Imprimir”. O relatório será mostrado como na Figura 5.

Figura 5. Parte do preview do relatório E depois, informe a opção “Impressora” e veja como sairá a impressão no papel. Conclusões Vimos aqui como podemos fazer um relatório simples em um outro componente bem parecido com o Quick Report , que já vem com o Delphi, porém com várias vantagens que poderemos ver em futuros artigos que serão publicados aqui no site. Abraço a todos e até a próxima. Links www.fortesinformatica.com.br 

Site para baixar os componentes do FortesReport , com instruções para instalação. Read more: http://www.linhadecodigo.com.br/artigo/725/fortes-report-tutorial-parte-1.aspx#ixzz2DErrkGEr ]

Lazarus - Criando relatórios com FortesReport (Parte II)

No post Lazarus - Criando relatórios com FortesReport (Parte I) mostramos a criação de um relatório simples com agrupamento. Neste artigo vamos mostrar como criar um relatório mestre detalhe usando o FortesReport. Para implementar o exemplo usei um banco de dados Firebird e ZeosLib. Use o seguinte script para criar as tabelas. Neste caso o relacionamento mestre detalhe é formado pelas tabelas VENDA e ITEM. O Data Module

Inicie uma aplicação no Lazarus e insira um Data Module. Selecione a aba Zeos Access e coloque um TZConnection no Data Module. Defina as propriedades da seguinte forma: Database - informe o banco de dados Firebird que foi criado. Name - dê um nome ao componente. Por exemplo: dbVendas. Password - masterkey. Protocol - firebird-2.0 ou a versão que está sendo usada. User - sysdba.

Mude Connected para true, para verificar se a conexão está configurada corretamente. Coloque um TZReadOnlyQuery e defina: Connection - selecione o TZConnection. Name - defina um nome para o componente. Por exemplo: queVenda. SQL - select a.id_venda, a.data_venda, b.nome from venda a, cliente b where a.id_cliente = b.id_cliente.

Selecione a aba Data Access e coloque um TDataSource, onde DataSetdeve estar associado à Query anterior. Defina Name como dsVenda. Coloque um segundo TZReadOnlyQuery, defina Connection da mesma maneira e em Name digite queItem, por exemplo. Na propriedade SQLinforme select a.id_produto, b.nome, a.quantidade, b.preco_venda, a.quantidade * b.preco_venda total from item a, produto b where a.id_produto = b.id_produto and id_venda = :id_venda . Defina a propriedade DataSource desta Query com dsVenda. Isto, juntamente com o parâmetro :id_venda definem o relacionamento mestre detalhe entre as duas Queries. O parâmetro :id_venda é definido porqueVenda através de dsVenda. Coloque mais um TDataSource e defina a propriedade DataSet com a Query queItem. Defina Name como dsItem. Leia mais para conexão com Firebird em Lazarus - Conectando Firebird com SQLdb ou ZeosLib . O relatório

Esse é o aspecto do relatório que iremos construir:

Agora adicione um novo form à aplicação. Localize a aba Fortes Report e coloque um TRLReport. No Inspetor de Objetos expanda a propriedadeAllowedBands e coloque em True as opções btColumnHeader , btDetaile btHeader. Na propriedade DataSource selecione dsVenda, a tabela mestre. Agora coloque um TRLBand. Defina a propriedade BandType comobtHeader. Aumente a altura da banda e coloque um TRLLabel sobre aTRLBand. Defina a propriedade Caption como Relatório de Vendas. Na propriedade Align selecione faCenter, para centralizar o rótulo na banda. Expanda a propriedade Font e defina Size como 14, por exemplo. Coloque um TRLSystemInfo no lado esquerdo da banda. Na propriedade Infoselecione itDate. Isso mostrará a data atual na banda. Coloque outroTRLSystemInfo, este no lado direito da banda e defina a propriedade Infocomo itPageNumber. Isso mostra o número da página. Coloque outro TRLBand e defina a propriedade BandType como btDetail. Sobre essa banda, que deve mostrar os dados da tabela mestre, coloqueTRLLabels definindo seus Caption como Venda, Data, Cliente, CÓDIGO,NOME, QTDE, PREÇO e TOTAL. Coloque também três TRLDBTexts. Defina seus DataSource como dsVenda e DataField como ID_VENDA,DATA_VENDA e NOME.

A banda deve ser dimensionada adequadamente de acordo com a figura acima. Coloque um TRLSubDetail e defina a propriedade DataSourcecomo dsItem. Esta banda irá mostrar os dados da tabela detalhe. Expanda a propriedade AllowedBands e coloque em True as opções btDetail ebtSummary. Sobre essa banda coloque um TRLBand. Defina BandTypecomo btDetail. Coloque cinco TRLDBTexts e defina DataSource comodsItem. Em DataField informe ID_PRODUTO, NOME, QUANTIDADE, PRECO_VENDA e TOTAL. Coloque outro TRLBand sobre TRLSubDetaile defina BandType como btSummary. Esta banda é usada para imprimir totais de relatórios ou grupos. Sobre esta banda coloque um TRLLable e defina seu Caption como Total da Venda:. Ao lado dele coloque umTRLDBResult. Este componente é usado para totalizar uma coluna, por exemplo. Defina DataSource como dsItem. Em DataField informeTOTAL. A propriedade Info define a operação que será realizada. Defina como riSum. que indica que a coluna TOTAL será somada. Na propriedadeDisplayMask escreva #,###,##0.00. Isso irá formatar o valor mostrado. Pode-se definir DisplayMask para os TRLDBTexts referentes aPRECO_VENDA e TOTAL. No form que irá chamar o relatório coloque um botão e no evento OnClick escreva o código que mostrar uma prévia do relatório: frmMestreDetalhe.rlVendas.Preview();

É necessário informar na cláusula uses o nome da unit do relatório. Abrir a conexão e as Queries também é necessário para que o relatório seja visualizado.

Configurar os parâmetro na conexão DataBase Arquivo Ini DbExpress Publicado em fevereiro 10, 2011

Quem é que nunca precisou , nunca utilizou um Arquivo Ini para carregar os parâmetros de uma conexão no DbExpress . Tudo muito bonito e prático , sem ter que recompilar a aplicação , só alterando o database no Arquivo Ini . Mas não se pode falar de parâmetros de conexão do DbExpress sem entender as propriedades LoadParamsOnConnect , DriveName , connectionName e os métodos Params.LoadFromFile e LoadParamsFromIniFile … Existe uma mágica por trás disso , e na maioria das vezes fazemos sem entender ou não querermos entender o que esta passando , bem ao estilo : “ já que deu certo é assim que eu vou fazer “. E  vamos ”simbora” para o mundo dos sem “Tempo” . Mas agora é a hora de mudar isto e evitar dores de cabeça no futuro . No delphi crie novo projeto e adicione ao Form um Componente TButton. todos os exemplo abaixo poderão estar sendo programados no evento Onclick . Declare na Uses da secção Interface ou implementation os namespaces DB, SqlExpr,dbxfirebird; Pois esteremos instanciando e configurando um objeto sqlconexao (tSqlConnection) em rumTime e precisaremos dessas unidades . Obs) Aqui eu estarei utilizando o Delphi2010 .Para uma versão anterior do Delphi2010 a diferença esta no Nome do Driver e da respectiva Unidade que o Driver foi definido . Pode-se fazer todos os Teste escolhendo o DiverName Interbase (Nativo do Delphi) e definindo na Uses a Unidade DBXpress no lugar do dbxfirebird  Vamos começar com a propriedade LoadParamsOnConnect . Esta propriedade esta no Objecto inspector , e tem um impacto importante neste processo. O Padrão desta propriedade é False , mas quando cetada para True , o SqnConnection carrega para a propriedade p arams o Driver que esta definido na propriedade ConnectionName . Para isto este Driver deve existir no Arquivo dbxconnections.ini . Veja o exemplo abaixo 1)Exemplo com a Propriedade LoadParamsOnConnect cetada em True 01

02

03

04

05

var

sqlConexao:TSQLConnection;

begin

sqlConexao:=TSQLConnection.Create(nil);

try

06

sqlconexao.Close;

07

sqlconexao.ConnectionName:='EMPLOYEE_2_1.FDB';

08

sqlconexao.DriverName:='FIREBIRD';

09

sqlconexao.LoadParamsOnConnect:=true;

10

sqlconexao.LoginPrompt:=false;

11

sqlconexao.Open;

12

13

showmessage(sqlconexao.Params.Text); //faça o Exemplo

finally

14

15

16

sqlConexao.Free;

end;

end;

ps)no meu caso particular eu tenho um Driver de Nome [EMPLOYEE_2_1.FDB] no  Arquivo dbxconnections.ini Perceba que o SqlConexao , procurou no Arquivo DBXCONNECTIOS.INI a definição do driver EMPLOYEE_2_1.FDB e carregou na propriedade params do SqlConexao . Alterando agora , esta propriedade para False , será nossa a responsabilidade de passar um Arquivo Ini Válido , para isto iremos carregar este Arquivo ini para a propriedade params do SqlConexao . Para fazer isto temos os métodos Params.LoadFromFile ouLoadParamsFromIniFile . Há uma diferença sutil e significativa entre eles . No diretorio do exe da aplicação defina um Arquivo Ini com as seguintes configuração . Salve este Arquivo com o Nome de Config.ini . Veja que este Driver tem um Nome , que no caso é [EXEMPLO.FDB] . “Guarde este nome pois iremos precisar dele”

01

02

[EXEMPLO.FDB]

drivername=FIREBIRD

03

blobsize=-1

04

commitretain=False

05

Database=Coloque aqui um diretorio válido

06

localecode=0000

07

password=masterkey

08

rolename=RoleName

09

sqldialect=3

10

isolationlevel=ReadCommitted

11

user_name=sysdba

12

waitonlocks=True

13

trim char=False

Definido oArquivo Config.ini vamos as diferenças entre os métodos 2)Utilizando o Params.LoadFromFile 01

02

var

sqlConexao:TSQLConnection;

03

04

begin

sqlConexao:=TSQLConnection.Create(nil);

05

try

06

07

sqlconexao.Close;

sqlconexao.ConnectionName:='Qualquer_Nome';//não pode deixar em branco

08

sqlconexao.DriverName:='FIREBIRD';

09

sqlconexao.LoadParamsOnConnect:=False;

10

sqlconexao.Params.LoadFromFile('Config.ini'); //Arquivo Ini

11

sqlconexao.LoginPrompt:=false;

12

sqlconexao.Open;

13

showmessage(sqlconexao.Params.Text);

14

finally

15

sqlConexao.Free;

16

17

end;

end;

3)Utilizando o LoadParamsFromIniFile(„config.ini‟); 01

var

02

03

04

05

sqlConexao:TSQLConnection;

begin

sqlConexao:=TSQLConnection.Create(nil);

try

06

07

sqlconexao.Close;

sqlconexao.ConnectionName:='Exemplo.FDB'; //Nome do Driver válido ***

08

sqlconexao.DriverName:='FIREBIRD';

09

sqlconexao.LoadParamsOnConnect:=False;

10

sqlconexao.LoadParamsFromIniFile('config.ini');

11

sqlconexao.LoginPrompt:=false;

12

sqlconexao.Open;

13

showmessage(sqlconexao.Params.Text);

14

finally

15

16

17

sqlConexao.Free;

end;

end;

perceba que a diferença é que o método LoadParamsFromIniFile so carrega para o Params se o Nome do Driver , que no nosso caso é [EXEMPLO.FDB] , for válido , Isto é , seexistir o  Alias [EXEMPLO.FDB] no Arquivo Config.Ini . Mas atenção , além desse quesito de “segurança” , existe ainda uma caracteristica mais importante neste método , que é a possibilidade de carregar para o params um Driver especifico . Vc pode ter no Arquivo Config.ini vários drivers criados definidos por vc , e em tempo de execução , escolher qual o driver que vc quer se conectar , so alterando o valor do sqlconexao.ConnectionName. Recapitulando : Assim como no Dbxconnections.ini tem vários drivers definidos , podemos ter também no config.ini varios drivers e escolher qual deles acessar com a propriedade sqlconexao.ConnectionName e carregando com o métodoLoadParamsFromIniFile .  Vamos agora entender a propriedade DriveName do SqlConnection . A principio é o nome do Driver que estamos utilizando , porém introduz no params algumas propriedades característica do Driver Mas internamente qnd se atribui um nome de um Driver para esta propriedade , o delphi no método procedure TSQLConnection.SetDriverName(Value: string); faz uma série de operações , atribuições , comparações , de modo que ele “recria” o Params do Sqlconnection .  Agora PENSE e tente escolher qual das duas situações é mais indicado 01

02

03

04

05

var

sqlConexao:TSQLConnection;

begin

sqlConexao:=TSQLConnection.Create(nil);

try

06

sqlconexao.Close;

07

sqlconexao.ConnectionName:='Exemplo.FDB';

08

sqlconexao.LoadParamsOnConnect:=False;

09

sqlconexao.DriverName:='FIREBIRD';//Antes de carregar o Params

10

sqlconexao.LoadParamsFromIniFile('config.ini');

11

sqlconexao.LoginPrompt:=false;

12

sqlconexao.Open;

13

showmessage(sqlconexao.Params.Text);

14

finally

15

sqlConexao.Free;

16

17

end;

end;

e/ou 01

02

03

04

05

var

sqlConexao:TSQLConnection;

begin

sqlConexao:=TSQLConnection.Create(nil);

try

06

sqlconexao.Close;

07

sqlconexao.ConnectionName:='Exemplo.FDB';

08

sqlconexao.LoadParamsOnConnect:=False;

09

10

sqlconexao.LoadParamsFromIniFile('config.ini');

sqlconexao.DriverName:='FIREBIRD';//Depois de carregar o Params

11

sqlconexao.LoginPrompt:=false;

12

sqlconexao.Open;

13

showmessage(sqlconexao.Params.Text);

14

finally

15

16

17

sqlConexao.Free;

end;

end;

 Ao fazermos Sqlconexao.DriverName:=‟FIREBIRD‟ após termos carregado o params por um dos métodos anteriores (LoadParamsFromIniFile , params.LoadFromFile) , estaremos recriando o params e com isto algumas definições serão sobre escritas . Por isto Sugerimos que a atribuição do Nome do Driver Ocorra antes de carregar os parâmetros com o Arquivo Ini , conforme estamos fazendo desde o inicio Consideraçoes finais: 

 A propriedade LoadParamsOnConnect em true o Driver carregado será do Arquivo dbxconnections



 A propriedade LoadParamsOnConnect em False o Driver carregado será definido por nos e carregado por um dos métodos (LoadParamsFromIniFile e/ou params.LoadFromFile)



 A diferença além da segurança entre o método LoadParamsFromIniFile do params.LoadFromFile é que o primeiro temos conduções de escolher qual o Driver que queremos acessar , basta definir corretamente a propriedade connectionName



Por último vimos que o Nome do driver deve vir antes de carregar o params do sqnconection

Com isto terminamos este artigo , Lembrando que qualquer dúvida , opinião , manifestação estaremos de prontidão e aptos para receber qualquer tipo de crítica .espero ter sido útil agradeço a paciência , meu muito obrigado e atê a próxima .

CategoryPanelGroup Outro componente que achei muito bom, pois tem a capacidade de criar painéis e dentro desses, adicionar controles. Com isso, podemos fazer um painel de navegação semelhante ao NavBar da suíte DevExpress. Se você não conhece o NavBar, veja nesse link: www.devexpress.com/Products/VCL/ExNavBar . Vamos criar um painel de navegação muito incrementado. Adicione o controle em um formulário. Adicione três painéis, clicando com o botão direito e escolhendo Add Panel . Na propriedade Images do CategoryPanelGroup, vamos vincular um ImageList com imagens  “grandes”, do tipo 24x24, que são as imagens que aparecerão no título dos painéis. Você pode configurar a imagem que vai aparecer quando o painel estiver “expandido” ou “recolhido”, quando o mouse passar sobre a imagem, tudo isso usando as propriedades: XXHotImageIndex , XXImageIndex e XXPressedImageIndex , onde o XX indica ser Collapsed ou Expanded . Vamos configurar a imagem dos painéis e dar títulos aos mesmos (propriedade Caption), exemplificado pela Figura 6.

Figura 6. Configurando títulos e imagens do painel

Agora, vamos adicionar um Button ao primeiro painel. Altere as seguintes propriedades do Button: Align = alTop, Style = bsCommandLink . Adicione um ImageList no formulário com imagens do tamanho 16x16 ou a seu critério. As mesmas serão vinculadas aos botões. Vincule o ImageList ao botão, através da propriedades Images e adicione a imagem através da propriedadeImageIndex . Para finalizar a configuração do botão, vamos incluir um texto alternativo sobre o Caption do botão, usando a propriedade CommandLinkHint . Veja que temos um Caption e um texto abaixo do mesmo. Esse padrão é do Windows Vista, portanto essa configuração só funciona nesse SO (ou claro no Windows 7). Claro, que poderíamos ter uma ActionList para concentrar as regras dos botões, mas aqui, vamos apenas copiar e colar os botões, alterando apenas Caption, CommandLinkHint e ImageIndex . Veja na Figura 7 como fica o componente na sua configuração final.

Figura 7. CategoryPanelGroup configurado

BallonHint Outro controle bastante requisitado pelos desenvolvedores é um Hint mais incrementado. Agora, controles visuais, receberam uma nova propriedade chamada CustomHint , nela vamos vincular um BallonHint para mostrar dicas em formato de balão, com título, subtítulo e imagens. Se você não quiser usar o CustomHint do controle, não tem problema, seu hint continuará funcionando perfeitamente. No BalonHint , configuramos um ImageList através da propriedade Imagens. Após, vinculamos o BallonHint , através do CustomHint do controle. Na propriedade Hint , escrevemos a dica que será mostrada. Podemos “dividir” o texto em três partes: a primeira é o título do Hint , a segunda um texto auxiliar e a terceira, a imagem que vamos usar. Elas devem ser separadas pelo caractere pipe “|”, assim um hint pode ser colocado com o seguinte valor: “Cadastro|Cadastro de Clientes|2”. O primeiro texto, será o título do balão, o segundo a descrição do hint e o último o índice da imagem que temos no ImageList vinculado ao BallonHint . Se quisermos, podemos "jogar" com essas três opções, por exemplo: “Cadastro||2”, não mostrará a descrição do hint , somente o título e a imagem. Assim, podemos mostrar várias formas diferentes, sem esquecer é claro, de colocar o caractere “|” para separar as partes ( Figura 8).

Figura 8. CategoryPanelroup configurado

Atualizações Tivemos algumas alterações nos componentes para a versão 2009/2010 do Delphi. Button: recebeu uma propriedade chamada Style, onde podemos configurar o botão no estilo Vista com uma descrição auxiliar (como vimos no exemplo do CategoryPanelGroup). Temos também no Style uma configuração para que seja mostrado a opção de mostrar uma lista suspensa, usando o tipo bsSplitButton. Depois, basta configurar a propriedade DropDownMenu com um PopupMenu para ter as opções ao clicar no botão (Figura 9).

Figura 9. Button com estilos diferentes

ListView: agora podemos criar grupos para os itens do ListView . Vale ressaltar que essa funcionalidade esta presente apenas no ambiente do Windows Vista. Adicione um ListView e crie dois grupos, clicando com o botão direito e escolhendo o item Groups Editor . Em Header indicamos o texto que será mostrado no grupo. Crie uma coluna e alguns itens. No editor de itens, agora temos mais uma opção que se refere ao grupo ao qual o item estará vinculado, como podemos ver na Figura 10.

Figura 10. Vinculando o item ao grupo

Basta indicar as imagens que deseja e temos u m ListView com um layout com grupos (Figura 11).

Figura 11. ListView com grupos

Outras novidades Novo Search no editor de código Aproveitando o padrão utilizado em browsers (FireFox e Internet Explorer) onde o texto a ser localizado fica sombreado, agora temos a mesma funcionalidade no IDE do Delphi. No edi tor de código, aperte Crtl+F e será mostrada uma barra inferior no editor para a digitação do texto de busca (Figura 12).

Figura 12. Configurações para localizar texto

Digite o texto e veja que o mesmo é sombreado e todas as palavras encontradas são também destacadas (Figura 13)

Figura 13. Configurações para localizar texto

Melhoria no dialog Use Unit Agora para adicionar uma unit (ALT + F11), podemos filtrar pelo nome das mesmas e também podemos escolher se vamos adicionar a referência na seção Interface ou Implementation (Figura 14).

Figura 14. Novo editor para adicionar referencia de units

Melhoria no debugger para visualizar dados

Agora podemos visualizar valores para variáveis do tipo TDate, TDateTime ou TTime, o que ajuda em muito a usabilidade do debugger no desenvolvimento. Assista na vídeo-aula disponível, um exemplo da utilização dessa nova funcionalidade do IDE. Conclusão Vimos neste artigo, algumas novidades do maior e mel hor Delphi lançado até hoje. Temos muitas outras novidades que não cabem nesse artigo. Fica a dica para você se aprofundar mais, verificando vídeos e artigos no site da Embarcadero ou aqui na The Club. Um grande abraço a todos e sucesso em seus projetos!

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF