Juniorocha
28/06/2006 - 11:09
Tenho uma query e queria da um where com um dbedit
tipow
select * from tbl where codigo = (dbedit1)
como faço essa concatenação?
vlw
Micheus
28/06/2006 - 11:47
se o seu campo código for numerico no banco então:
query1.SQL.Add('select * from tbl where codigo = '+dbedit1.Text);
se for string:
query1.SQL.Add('select * from tbl where codigo = '''+dbedit1.Text+'''');
aqui não estou certo quanto a quantidade de aspas simples. alguns colegas costumam citar a função QuotedStr:
query1.SQL.Add('select * from tbl where codigo = '+QuotedStr(dbedit1.Text)); (acho que é assim)
mas, ao meu ver, a melhor opção é utilizar parâmetros pois você não tem que se preocupar com esses detalhes:
query1.SQL.Add('select * from tbl where codigo = :Codigo');
query1.ParamByName('Codigo').AsInteger := StrToInt(dbedit1.Text); // se código for numérico (integer)
query1.ParamByName('Codigo').AsString := dbedit1.Text; // se código for texto (varchar)
ainda prefiro usar diferente. supondo que o campo associado ao dbedit1 seja CODIGO e o dataset (no datasource associado ao dbedit1) TabQualquer, então usaria assim:
query1.SQL.Add('select * from tbl where codigo = :Codigo');
query1.ParamByName('Codigo').AsInteger := TabQualquerCODIGO.AsInteger; // se código for numérico (integer)
query1.ParamByName('Codigo').AsString := TabQualquerCODIGO.AsString; // se código for texto (varchar)
como sempre digo (na assinatura), há sempre uma outra forma de fazer a mesma coisa.