You are on page 1of 26

Verificando se valor ja existe no banco de dados

Cdigo
//Utilizando Zeos para postgreSQL //incluir sql com parametros a serem comparados //Cdigo utilizado na hora de um cadastro procedure TFRM_LOGIN.DBEdit3Exit(Sender: TObject); begin ZQuery1.Close; ZQuery1.ParamByName('usuario').Value:= DBEdit3.Text; ZQuery1.Open; if ZQuery1.Eof= False then begin ShowMessage('Usurio informado j consta em sua Base de Dados!'); ZQuery1.Active:= True; DBEdit3.SetFocus; DBEdit3.Text:= ''; end else Abort; DBEdit2.SetFocus; end;

Verificar se Usurio j existe com Locate dando erro


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

Estou criando um cadastro de usurio e senha. Tentei fazer ele buscar o Nome com Locate e DBEdit.Text para verificar se o usurio j existe no banco de dados, mas ele aparece erro sempre.
Cdigo: if (ClientDataSet.Locate('Nome',DBEdit.Text,[])) then begin if MessageBox(Handle, 'Usurio j Existe!!', 'Ateno!', MB_OK or MB_ICONEXCLAMATION) = IDOK then end else begin ADODataSet.Close; ClientDataSet.ApplyUpdates(0); ADODataSet.Open; end;

Ele est aparecendo que existe usurio mesmo no existindo o nome do usurio no banco e no insere no banco.
Voltar ao Topo joemil
Enviada: Sex Nov 19, 2010 9:16 am Assunto:

Moderador

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. entao vc deveria usar um Edit pra digitar os dados e gravar essas informacoes manualmente. _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b> Enviar imagens: http://tinypic.com/

Registrado: Quinta-Feira, 25 de Maro de 2004 Mensagens: 5872 Localizao: Sinop-MT

Voltar ao Topo carbox


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

Registrado: Quarta-Feira, 3 de Maro de 2010 Mensagens: 992

Amigo, eu uso assim pra localizar o CPF_CNPJ j cadastrado, voc poder adaptar a sua necessidade..
Cdigo: procedure TFClientes.DBEdit9KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); //VERIFICAO DE CPF/CNPJ IMPLEMENTADA/MODIFICADA 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')) 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 usurio e senha. Tentei fazer ele buscar o Nome com Locate e DBEdit.Text para verificar se o usurio j existe no banco de dados, mas ele aparece erro sempre. Cdigo: if (ClientDataSet.Locate('Nome',DBEdit.Text,[])) then begin if MessageBox(Handle, 'Usurio j Existe!!', 'Ateno!', MB_OK or MB_ICONEXCLAMATION) = IDOK then end else begin ADODataSet.Close; ClientDataSet.ApplyUpdates(0); ADODataSet.Open; end;

Ele est aparecendo que existe usurio mesmo no existindo o nome do usurio no banco e no insere no banco.
Voltar ao Topo RAFFAEL1983
Membro Junior Enviada: Sex Nov 19, 2010 4:30 pm Assunto:

No 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 no 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 Assunto:

D uma olhada, veja se te ajuda:


Cdigo:

Function TForm5.ValidarDocumento : Boolean; Function CNPJCPFValido : Boolean; begin Result:=False;


Registrado: Domingo, 30 de Agosto de 2009 Mensagens: 1632 Localizao: So Gonalo - Rio de Janeiro

Case RadioGroup1.ItemIndex of 0: begin if not (ValidarCNPJ(edtCNPJ.Text)) then begin MessageDlg('CNPJ Invlido, favor digitar corretamente!',mtWarning,[mbOK],0); edtCNPJ.SetFocus; end else Result:=True; end; 1: begin if not (ValidarCPF(edtCNPJ.Text)) then begin MessageDlg('CPF Invlido, 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 Cdigo <>'+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 funo cria um TADODataSet em tempo de execuo! Abraos!!! _________________

Agora eu tambm programo em PHP.

Desenvolvimento Fortes Report - Tutorial - Parte 1 Neste artigo veremos como fazer um relatrio simples usando um outro componente bem parecido com o Quick Report, que j vem com o Delphi, porm com vrias vantagens que poderemos ver em futuros artigos que sero publicados no portal.

Delphi

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

Desenvolvendo o Primeiro Relatrio Amigos, fazer relatrios o famoso mal necessrio, que particularmente eu no me incomodo em desenvolver, at porque, geralmente a parte mais rentvel do negcio ! 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 No vou me prender em detalhes de banco e conexo. 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 formulrio corrente para frmChamaRel, coloque um Data Module e chame-o de dmDados e um segundo formulrio 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 conexo Coloque o SQL descrito na Listagem 1 no SQLDataSet na propriedade CommandText: Listagem 1 SQL do relatrio 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 Relatrio Agora vamos comear a brincadeira com o Fortes Report. V para o form frmRelEmpregados. Adicione no formulrio o componente RLReport da paleta do Fortes (Fortes Report) e posicione-o conforme a Figura 2.

Figura 2. Posicionamento de RLReport no formulrio de impresso Este componente o que faz toda a manipulao dos outros componentes de impresso que j iremos ver. Pressione Alt+F11 para dar um Uses na unit do DataModule dmDados. Inclua um DataSource a este formulrio e aponte a propriedade DataSet ao ClientDataSet do DataModule. Inclua agora trs componentes RLBand ao RLReport e modifique as propriedades dos componentes do relatrio como descrito na Tabela 1. Componente RLReport1 Propriedade DataSource Title RLBand1 BandType Color Font/Style/fsBold RLBand2 BandType Font/Style/fsBold RLBand3 RLBand3 BandType BandType Valor DataSource1 Relatrio de Empregados btHeader ClSilver True btHeader True btDetail btFooter

Tabela 1. Valores para as propriedades dos comp. do relatrio Na primeira banda do relatrio, o ttulo do relatrio, insira um componentes RLLabel e dois RLSystemInfo. Altere as propriedades como descrito na Tabela 2. Componente RLLabel1 Propriedade Align Caption RLSystemInfo1 Align Info RLSystemInfo2 Align Valor faLeftTop linhadecodigo.com.br faCenterTop itTitle faRightTop

Info Text

itPageNumber Pg.: Tabela 2. Valores para as propriedades da banda de ttulo

Posicione agora na segunda banda do relatrio, RLBand, insira seis RLLabel e altere as propriedades como descrito na Tabela 3. Componente Todos RLLabel2 Propriedade Align Caption Left RLLabel3 Caption Left RLLabel4 Caption Left RLLabel5 Caption Left RLLabel6 Caption Left RLLabel7 Caption Left Valor faTopOnly N 0 Nome 48 Sobrenome 200 Ramal 392 Pas 448 Departamento 592 Tabela 3. Valores para as propriedades da banda de ttulo Na banda de detalhe, insira seis RLDBText, que sero os componentes DataWare contendo os dados de cada coluna da tabela. Veja a na Tabela 4 os valores de suas propriedades. Componente Todos Propriedade Align AutoSize DataSource RLDBText1 DataField Left RLDBText2 DataField Left RLDBText3 DataField Left RLDBText4 DataField Left RLDBText5 DataField Left Valor faTopOnly False DataSource1 EMP_NO 0 FIRST_NAME 48 LAST_NAME 200 PHONE_EXT 392 JOB_COUNTRY 448

RLDBText6

DataField Left

DEPARTMENT 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 RLSystemInfo3 Propriedade Align Info Text RLSystemInfo4 Align Info Text Valor faRightTop itDate Data: faRightTop itHour Hora:

Tabela 5. Valores para as propriedades da banda do rodap E para terminar este formulrio, 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 incio da impresso. Salve este formulrio e v para o formulrio (frmChamaRel) que ir chamar o relatrio. O resultado final ficar como a Figura 3.

Figura 3. Posicionamento de de todos os componentes em RLReport no formulrio de impresso Chamando o Relatrio Agora iremos programar o formulrio para a chamada do relatrio propriamente dito. Insira um RadioGroup e um BitBtn e posicione-os como mostra a Figura 4.

Figura 4. Formulrio para chamada do relatrio Aperte Alt+F11 e de um Uses na unit que contm o relatrio.

No evento OnClick do boto coloque o cdigo descrito abaixo em negrito: procedure TfrmChamaRel.BitBtn1Click(Sender: TObject); begin If RadioGroup1.ItemIndex = 0 Then frmRelEmpregados.RLReport1.Preview() // preview do relatrio Else frmRelEmpregados.RLReport1.Print; // imprime direto para impressora end; Executando o relatrio O prximo passo executar o relatrio apertando F9 no Delphi. J executando, marque a primeira opo do RadioGroup e clique no boto Imprimir. O relatrio ser mostrado como na Figura 5.

Figura 5. Parte do preview do relatrio E depois, informe a opo Impressora e veja como sair a impresso no papel. Concluses Vimos aqui como podemos fazer um relatrio simples em um outro componente bem parecido com o Quick Report, que j vem com o Delphi, porm com vrias vantagens que poderemos ver em futuros artigos que sero publicados aqui no site. Abrao a todos e at a prxima. Links www.fortesinformatica.com.br Site para baixar os componentes do FortesReport, com instrues para instalao.

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

Lazarus - Criando relatrios com FortesReport (Parte II)


No post Lazarus - Criando relatrios com FortesReport (Parte I) mostramos a criao de um relatrio simples com agrupamento. Neste artigo vamos mostrar como criar um relatrio 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 aplicao 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 verso que est sendo usada. User - sysdba. Mude Connected para true, para verificar se a conexo 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 parmetro :id_venda definem o relacionamento mestre detalhe entre as duas Queries. O parmetro :id_venda definido porqueVenda atravs de dsVenda. Coloque mais um TDataSource e defina a propriedade DataSet com a Query queItem. Defina Name como dsItem. Leia mais para conexo com Firebird em Lazarus - Conectando Firebird com SQLdb ou ZeosLib. O relatrio Esse o aspecto do relatrio que iremos construir:

Agora adicione um novo form aplicao. Localize a aba Fortes Report e coloque um TRLReport. No Inspetor de Objetos expanda a propriedadeAllowedBands e coloque em True as opes 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 Relatrio de Vendas. Na propriedade Align selecione faCenter, para centralizar o rtulo 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 nmero da pgina. 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, CDIGO,NOME, QTDE, PREO e TOTAL. Coloque tambm trs 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 opes 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 relatrios 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 operao 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 relatrio coloque um boto e no evento OnClick escreva o cdigo que mostrar uma prvia do relatrio: frmMestreDetalhe.rlVendas.Preview(); necessrio informar na clusula uses o nome da unit do relatrio. Abrir a conexo e as Queries tambm necessrio para que o relatrio seja visualizado.

Configurar os parmetro na conexo DataBase Arquivo Ini DbExpress


Publicado em fevereiro 10, 2011

Quem que nunca precisou , nunca utilizou um Arquivo Ini para carregar os parmetros de uma conexo no DbExpress . Tudo muito bonito e prtico , sem ter que recompilar a aplicao , s alterando o database no Arquivo Ini . Mas no se pode falar de parmetros de conexo do DbExpress sem entender as propriedades LoadParamsOnConnect , DriveName , connectionName e os mtodos Params.LoadFromFile e LoadParamsFromIniFile Existe uma mgica por trs disso , e na maioria das vezes fazemos sem entender ou no 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 cabea no futuro . No delphi crie novo projeto e adicione ao Form um Componente TButton. todos os exemplo abaixo podero estar sendo programados no evento Onclick . Declare na Uses da seco 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 verso anterior do Delphi2010 a diferena 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 comear com a propriedade LoadParamsOnConnect . Esta propriedade esta no Objecto inspector , e tem um impacto importante neste processo. O Padro desta propriedade False , mas quando cetada para True , o SqnConnection carrega para a propriedade params 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 var

02

sqlConexao:TSQLConnection;

03

begin

04

sqlConexao:=TSQLConnection.Create(nil);

05

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

showmessage(sqlconexao.Params.Text); //faa o Exemplo

13

finally

14

sqlConexao.Free;

15

end;

16

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 definio 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 Vlido , para isto iremos carregar este Arquivo ini para a propriedade params do SqlConexao . Para fazer isto temos os mtodos Params.LoadFromFile ouLoadParamsFromIniFile . H uma diferena sutil e significativa entre eles . No diretorio do exe da aplicao defina um Arquivo Ini com as seguintes configurao . 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

[EXEMPLO.FDB]

02

drivername=FIREBIRD

03

blobsize=-1

04

commitretain=False

05

Database=Coloque aqui um diretorio vlido

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 diferenas entre os mtodos 2)Utilizando o Params.LoadFromFile


01 var

02

sqlConexao:TSQLConnection;

03

begin

04

sqlConexao:=TSQLConnection.Create(nil);

05

try

06

sqlconexao.Close;

07

sqlconexao.ConnectionName:='Qualquer_Nome';//no 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

end;

17

end;

3)Utilizando o LoadParamsFromIniFile(config.ini);
01 var

02

sqlConexao:TSQLConnection;

03

begin

04

sqlConexao:=TSQLConnection.Create(nil);

05

try

06

sqlconexao.Close;

07

sqlconexao.ConnectionName:='Exemplo.FDB'; //Nome do Driver vlido ***

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

sqlConexao.Free;

16

end;

17

end;

perceba que a diferena que o mtodo LoadParamsFromIniFile so carrega para o Params se o Nome do Driver , que no nosso caso [EXEMPLO.FDB] , for vlido , Isto , seexistir o Alias [EXEMPLO.FDB] no Arquivo Config.Ini . Mas ateno , alm desse quesito de segurana , existe ainda uma caracteristica mais importante neste mtodo , que a possibilidade de carregar para o params um Driver especifico . Vc pode ter no Arquivo Config.ini vrios drivers criados definidos por vc , e em tempo de execuo , escolher qual o driver que vc quer se conectar , so alterando o valor do sqlconexao.ConnectionName. Recapitulando : Assim como no Dbxconnections.ini tem vrios drivers definidos , podemos ter tambm no config.ini varios drivers e escolher qual deles acessar com a propriedade sqlconexao.ConnectionName e carregando com o mtodoLoadParamsFromIniFile . Vamos agora entender a propriedade DriveName do SqlConnection . A principio o nome do Driver que estamos utilizando , porm introduz no params algumas propriedades caracterstica do Driver Mas internamente qnd se atribui um nome de um Driver para esta propriedade , o delphi no mtodo procedure TSQLConnection.SetDriverName(Value: string); faz uma srie de operaes , atribuies , comparaes , de modo que ele recria o Params do Sqlconnection . Agora PENSE e tente escolher qual das duas situaes mais indicado
01 var

02

sqlConexao:TSQLConnection;

03

begin

04

sqlConexao:=TSQLConnection.Create(nil);

05

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

end;

17

end;

e/ou
01 var

02

sqlConexao:TSQLConnection;

03

begin

04

sqlConexao:=TSQLConnection.Create(nil);

05

try

06

sqlconexao.Close;

07

sqlconexao.ConnectionName:='Exemplo.FDB';

08

sqlconexao.LoadParamsOnConnect:=False;

09

sqlconexao.LoadParamsFromIniFile('config.ini');

10

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

11

sqlconexao.LoginPrompt:=false;

12

sqlconexao.Open;

13

showmessage(sqlconexao.Params.Text);

14

finally

15

sqlConexao.Free;

16

end;

17

end;

Ao fazermos Sqlconexao.DriverName:=FIREBIRD aps termos carregado o params por um dos mtodos anteriores (LoadParamsFromIniFile , params.LoadFromFile) , estaremos recriando o params e com isto algumas definies sero sobre escritas . Por isto Sugerimos que a atribuio do Nome do Driver Ocorra antes de carregar os parmetros com o Arquivo Ini , conforme estamos fazendo desde o inicio Consideraoes 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 mtodos (LoadParamsFromIniFile e/ou params.LoadFromFile) A diferena alm da segurana entre o mtodo LoadParamsFromIniFile do params.LoadFromFile que o primeiro temos condues 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 dvida , opinio , manifestao estaremos de prontido e aptos para receber qualquer tipo de crtica .espero ter sido til agradeo a pacincia , meu muito obrigado e at a prxima .

CategoryPanelGroup Outro componente que achei muito bom, pois tem a capacidade de criar painis e dentro desses, adicionar controles. Com isso, podemos fazer um painel de navegao semelhante ao NavBar da sute DevExpress. Se voc no conhece o NavBar, veja nesse link: www.devexpress.com/Products/VCL/ExNavBar. Vamos criar um painel de navegao muito incrementado. Adicione o controle em um formulrio. Adicione trs painis, clicando com o boto direito e escolhendo Add Panel. Na propriedade Images do CategoryPanelGroup, vamos vincular um ImageList com imagens grandes, do tipo 24x24, que so as imagens que aparecero no ttulo dos painis. 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 painis e dar ttulos aos mesmos (propriedade Caption), exemplificado pela Figura 6.

Figura 6. Configurando ttulos 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 formulrio com imagens do tamanho 16x16 ou a seu critrio. As mesmas sero vinculadas aos botes. Vincule o ImageList ao boto, atravs da propriedades Images e adicione a imagem atravs da propriedadeImageIndex. Para finalizar a configurao do boto, vamos incluir um texto alternativo sobre o Caption do boto, usando a propriedade CommandLinkHint. Veja que temos um Caption e um texto abaixo do mesmo. Esse padro do Windows Vista, portanto essa configurao s funciona nesse SO (ou claro no Windows 7). Claro, que poderamos ter uma ActionList para concentrar as regras dos botes, mas aqui, vamos apenas copiar e colar os botes, alterando apenas Caption, CommandLinkHint e ImageIndex. Veja na Figura 7 como fica o componente na sua configurao 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 balo, com ttulo, subttulo e imagens. Se voc no quiser usar o CustomHint do controle, no tem problema, seu hint continuar funcionando perfeitamente. No BalonHint, configuramos um ImageList atravs da propriedade Imagens. Aps, vinculamos o BallonHint, atravs doCustomHint do controle. Na propriedade Hint, escrevemos a dica que ser mostrada. Podemos dividir o texto em trs partes: a primeira o ttulo 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 ttulo do balo, o segundo a descrio do hint e o ltimo o ndice da imagem que temos no ImageList vinculado ao BallonHint. Se quisermos, podemos "jogar" com essas trs opes, por exemplo: Cadastro||2, no mostrar a descrio do hint, somente o ttulo e a imagem. Assim, podemos mostrar vrias formas diferentes, sem esquecer claro, de colocar o caractere | para separar as partes (Figura 8).

Figura 8. CategoryPanelroup configurado Atualizaes Tivemos algumas alteraes nos componentes para a verso 2009/2010 do Delphi. Button: recebeu uma propriedade chamada Style, onde podemos configurar o boto no estilo Vista com uma descrio auxiliar (como vimos no exemplo do CategoryPanelGroup). Temos tambm no Style uma configurao para que seja mostrado a opo de mostrar uma lista suspensa, usando o tipo bsSplitButton. Depois, basta configurar a propriedade DropDownMenu com um PopupMenu para ter as opes ao clicar no boto (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 boto 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 opo 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 um ListView com um layout com grupos (Figura 11).

Figura 11. ListView com grupos Outras novidades Novo Search no editor de cdigo Aproveitando o padro 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 editor de cdigo, aperte Crtl+F e ser mostrada uma barra inferior no editor para a digitao do texto de busca (Figura 12).

Figura 12. Configuraes para localizar texto Digite o texto e veja que o mesmo sombreado e todas as palavras encontradas so tambm destacadas (Figura 13)

Figura 13. Configuraes para localizar texto Melhoria no dialog Use Unit Agora para adicionar uma unit (ALT + F11), podemos filtrar pelo nome das mesmas e tambm podemos escolher se vamos adicionar a referncia na seo 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 variveis do tipo TDate, TDateTime ou TTime, o que ajuda em muito a usabilidade do debugger no desenvolvimento. Assista na vdeo-aula disponvel, um exemplo da utilizao dessa nova funcionalidade do IDE. Concluso Vimos neste artigo, algumas novidades do maior e melhor Delphi lanado at hoje. Temos muitas outras novidades que no cabem nesse artigo. Fica a dica para voc se aprofundar mais, verificando vdeos e artigos no site da Embarcadero ou aqui na The Club. Um grande abrao a todos e sucesso em seus projetos!