ParamByName em DbExpress

03/04/2006

Pessoal, estou usando os seguintes componentes em meu projeto:

* 1 SQlConnection;
* 1 DataSetProvider;
* 1 SQLQuery;
* 1 ClientDataSet;
* 1 DataSource;
* 1 DBGrid;
* 1 BitBtn;

Altera minhas instruções SQL diretamente no SQLQuery como já vi sugestões aqui no fórum, quais os prós e contras disso na arquitetura DbExpress?

Altero as instruções no SQLQuery e meu DataSetProvider está ligado nele(SQLQuery), e por sua vez o ProviderName do meu ClientDataSet está ligado no DataSetProvider, tem algum erro nisso?

alguém aqui poderia me informar qual a diferença entre se usar.

  CDS_Geren.Close;
  SQLQForn.SQL.Clear;
  SQLQForn.SQL.Text := ´Select * from Country where COUNTRY Like :nome´;
  SQLQForn.ParamByName(´Nome´).Value := QuotedStr(´A´+´¬´);
  SQLQForn.Open;
  CDS_Geren.Open;


e se usar assim:

CDS_Geren.Close;
  SQLQForn.SQL.Clear;
  SQLQForn.SQL.Add(´Select * from Employee where job_country like ´ + QuotedStr(Edit1.Text+´¬´));
  SQLQForn.Open;
CDS_Geren.Open;


Porque da segunda forma funciona normal, da primeira é como se ele não conseguisse ver o valor do parametro.

Obrigado pessoal!


Andrew

Respostas

03/04/2006

Eniorm

eu faço assim, supondo que o SQLQuery tenha a propriedade SQL definida como:

SELECT * FROM CLIENTES
WHERE NOME LIKE :NOME
ORDER BY NOME


pra fazer uma pesquisa eu faço:

ClientDataSet1.Close;
SQLQuery1.ParamByName(´NOME´).AsString := EditNome.Text + ´¬´;
ClientDataSet1.Open;


note que o CLOSE/OPEN eu fiz direto no ClientDataSet, e o valor do parâmetro eu coloquei na query, onde está o sql.;.


Responder Citar