Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa noite.
Estou tentando efetuar uma pesquisa em um dbgrid informando alguns parâmetros.
O problema é que não retorna nada. Também não dá erro e eu tenho os dados na tabela.
Então peguei o string do SQL e joguei num memo para ver o que esta fazendo.
Código no Delphi:
DMSisAlma.QRListaHistoricoVisitas.Close;
DMSisAlma.QRListaHistoricoVisitas.SQL.Clear;
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('SELECT informacoes_pessoais.nome, historico_visitas.data_visita, historico_visitas.nome_loja, historico_visitas.oriente, historico_visitas.uf, ritos.nom_rito, ordem_sessao.desc_ordem_sessao, tipo_sessao.desc_tip_sessao, historico_visitas.obediencia');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('FROM historico_visitas, informacoes_pessoais, ritos, ordem_sessao,tipo_sessao');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('WHERE historico_visitas.num_cpf = informacoes_pessoais.num_cpf');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('AND historico_visitas.cod_rito = ritos.cod_rito');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('AND historico_visitas.cod_ordem_sessao = ordem_sessao.cod_ordem_sessao');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('AND historico_visitas.cod_tip_sessao = tipo_sessao.cod_tip_sessao');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('AND informacoes_pessoais.nome LIKE :NomeCon ');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('AND historico_visitas.nome_loja LIKE :LojaCon ');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('AND historico_visitas.data_visita BETWEEN :DataConIni AND :DataConFim ');
DMSisAlma.QRListaHistoricoVisitas.SQL.Add('ORDER BY data_visita DESC, nome');
DMSisAlma.QRListaHistoricoVisitas.ParamByName('NomeCon').AsString := QuotedStr('%' + CXnomeCon.text + '%' );
DMSisAlma.QRListaHistoricoVisitas.ParamByName('LojaCon').AsString := QuotedStr('%' + CXLojaCon.text + '%' );
DMSisAlma.QRListaHistoricoVisitas.ParamByName('DataConIni').AsDate := CXiniCon.Date;
DMSisAlma.QRListaHistoricoVisitas.ParamByName('DataConFim').AsDate := CXfimCon.Date;
Memo1.Lines.Add(DMSisAlma.QRListaHistoricoVisitas.SQL.text);
Memo1.Lines.Add('Parametro1:' + DMSisAlma.QRListaHistoricoVisitas.Params.ParamValues['NomeCon']);
Memo1.Lines.Add('Parametro2:' + DMSisAlma.QRListaHistoricoVisitas.Params.ParamValues['LojaCon']);
Memo1.Lines.Add('Parametro3:' + datetostr(DMSisAlma.QRListaHistoricoVisitas.Params.ParamValues['DataConIni']));
Memo1.Lines.Add('Parametro3:' + datetostr(DMSisAlma.QRListaHistoricoVisitas.Params.ParamValues['DataConFim']));
DMSisAlma.QRListaHistoricoVisitas.Open;
Gerou isso pra mim:
SELECT informacoes_pessoais.nome, historico_visitas.data_visita, historico_visitas.nome_loja, historico_visitas.oriente, historico_visitas.uf, ritos.nom_rito, ordem_sessao.desc_ordem_sessao, tipo_sessao.desc_tip_sessao, historico_visitas.obediencia
FROM historico_visitas, informacoes_pessoais, ritos, ordem_sessao,tipo_sessao
WHERE historico_visitas.num_cpf = informacoes_pessoais.num_cpf
AND historico_visitas.cod_rito = ritos.cod_rito
AND historico_visitas.cod_ordem_sessao = ordem_sessao.cod_ordem_sessao
AND historico_visitas.cod_tip_sessao = tipo_sessao.cod_tip_sessao
AND informacoes_pessoais.nome LIKE :NomeCon
AND historico_visitas.nome_loja LIKE :LojaCon
AND historico_visitas.data_visita BETWEEN :DataConIni AND :DataConFim
ORDER BY data_visita DESC, nome
Variáveis:
Parametro1:'lip% '
Parametro2:'%abc% '
Parametro3:1/5/2009
Parametro3:28/5/2009
Se eu copiar e executar este comando direto no editor do banco e substituir as variáveis, me retorna os valores corretamente.
Alguem sabe o que pode estara contecendo?
Acredito ser os coringas "%"
Desde já, obrigado pela atenção.
Carregando comentários...