Fórum Problamas com select #325399
15/07/2006
0
Estou desenvolvendo uma aplicação com Delphi 7, DBExpress e com o banco firebird, estou com problemas para pesquisar os registros no banco. Meu botão p/consulta está assim:
procedure TFrmPesquisa.SpeedButton1Click(Sender: TObject);
var
vDataIni,
vDataFim : string;
begin
vDataIni := FormatDateTime(´mm/dd/yyyy´, DateTimePicker1.Date);
vDataFim := FormatDateTime(´mm/dd/yyyy´, DateTimePicker2.Date);
DmPesquisa.cdsPesquisa.Close;
DmPesquisa.cdsPesquisa.CommandText :=
´select c.cli_codigo, c.cli_nome, v.cli_codigo, v.vis_data, v.vis_hora´ +
´from cliente c, visita v where c.cli_nome = ´ + Edit1.Text +
´and v.vis_data between ´+ vDataIni + ´and´ + vDataFim +
´and c.cli_codigo = v.cli_codigo´;
DmPesquisa.cdsPesquisa.Open;
end;
Só q na hora em q mando pesquisar ocorre o seguinte erro:
Token unknown -line 1, char 83 c.
O q pode está errado?
Fabiano_aprendiz
Curtir tópico
+ 0Posts
15/07/2006
Marco Salles
Exemplo , como eu faço..
procedure PesquisarEntreDatasAll(cds:TClientDataSet;vDataIni,vDataFim:String); begin cds.Filter:=´´; cds.Filtered:=False; cds.Filter:=´( Data_Recebimento >= ´+QuotedStr(vDataIni)+ ´)And(Data_Recebimento <= ´+QuotedStr(vDataFim)+´)´; cds.Filtered:=True; end;
Para chamar
var vDataIni, vDataFim : string; begin vDataIni := FormatDateTime(´mm/dd/yyyy´, DateTimePicker1.Date); vDataFim := FormatDateTime(´mm/dd/yyyy´, DateTimePicker2.Date); PesquisarEntreDatasAll(cdsPesquisa,vDataIni, vDataFim );
se der algum erro de compilação , comunique porque eu fiz uma adapatação rápida no codigo que eu ja possuia...
Gostei + 0
15/07/2006
Fabiano_aprendiz
Dessa forma aki funcionou:
procedure TFrmPesquisa.SpeedButton1Click(Sender: TObject);
var
vDataIni,
vDataFim : string;
begin
vDataIni := Quotedstr(FormatDateTime(´dd.mm.yyyy´, DateTimePicker1.Date));
vDataFim := Quotedstr(FormatDateTime(´dd.mm.yyyy´, DateTimePicker2.Date));
DmPesquisa.cdsPesquisa.Close;
DmPesquisa.cdsPesquisa.CommandText :=
´select c.cli_codigo, c.cli_nome, v.cli_codigo, v.vis_data, v.vis_hora ´ +
´from cliente c, visita v where c.cli_nome = ´ +Quotedstr(Edit1.Text) +
´ and v.vis_data between´+ vDataIni + ´ and ´ + vDataFim +
´ and c.cli_codigo = v.cli_codigo´;
DmPesquisa.cdsPesquisa.Open;
If DmPesquisa.cdsPesquisa.RecordCount = 0 Then
Begin
ShowMessage(´Nenhum registro foi localizado!´);
Edit1.SetFocus;
End;
end;
O problema agora é q o DBGrig retorna vazio, ou seja, se eu colocar dados q realmente não existam no banco, ocorre a mensagem ´Nenhum registro foi localizado!, agora qdo pesquiso por um registro q realmente existe, a linha do DBGrid vem vazia, mas se eu selecionar a linha e confirmar, a aplicação vai p/o Form principal com os todos os dados corretos. Não sei se tem alguma
ligação, mas tbm ocorre q eu não consigo incluir no DBGrig as colunas
da tabela que eu desejo. Quando insiro uma coluna no DBGrid e tento
editar o campo FieldName, ocorre o seguinte erro: Missing query, table name
or procedure name.
Desculpem a amolação, mas é q essa é a primeira aplicação q estou desenvolvendo usando Delphi 7+DBExpress+Firebird...
Gostei + 0
16/07/2006
Micheus
Gostei + 0
17/07/2006
Marco Salles
´Estas instruções SQL não são executadas no Dataset do ClientDataSet, porque o component CLientDataSet em si não interpreta uma instrução SQL... quando vc seta a propriedade do DataSetProvider poAllowCommandText para true vc ta dizendo que a instrução SQL a ser enviada para o banco será passada no clientdataset e não no component SQLDataSet, no caso de estar usando o DBEXpress.... ´
É claro que não desmereço o fato de voce tentar fazer uma consulta usando o comandText do ClientDataset. Muitas das vezes é questão de Honra. Mas na prática use o filtro do Cds
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)