Bom dia pessoal, esse é o meu segundo tópico criado em foruns na net e fico feliz em usar este recurso. 8)
Minha dificuldade está em criar um Form em Delphi 2006 para pesquisa em um ADOQUERY que puxa os dados da tabela Lancamento, a tabela Lancamento está em um banco MDB chamado bdsis.mdb e dentro da tabela Lancamento tenho um campo chamado Data do tipo Data/hora.
No form que estou criando de nome frmConComAss tem o edit (edtprontuario) e dois TDateTimePicker (aquele combobox que quando clicamos e aparece um calendário bem bacana).
No SQL do ADOQUERY tem a seguinte instrução Select * from Lancamento order by Data desc, assim será visualizado no TOPO o ultimo REG do Lancamento.
No bitbutton que quero filtrar pelo PRONTUARIO E LOGO EM SEGUIDA PELO INTERVALO DAS DATAS INICIAL E FINAL ESCOLHIDAS PELO calDI (componente TDateTimePicker DATA INICIAL) E calDF (componente TDateTimePicker DATA FINAL) tem a seguinte instrução:
var
sql_txt: string;
flag_aux: Boolean; //irá auxiliar na execução dos demais codigos
begin
//Inicio da condição para filtragem do PRONTUARIO
flag_aux := False;
sql_txt := 'Select * from Lancamento where '; //A variavel sql_txt recebe Declaração SQL
//####################MEU PROBLEMA TERMINA AQUI ############################
//Instrução para abertura do MEU ADOQUERY de name adqfiltro
if (flag_aux=true) then
begin
adqfiltro.Close;
adqfiltro.SQL.Clear;
adqfiltro.SQL.Add(sql_txt);
adqfiltro.Open;
end;
A instrução acima funciona perfeitamente quando digito apenas o prontuário e me mostra em meu dbgrip todos os reg correspondentes. Entretanto não estou conseguindo filtrar quando digito o PRONTUÁRIO e escolho a Data inicial e a Data final, pois me reportar um erro de dados incompatíveis entre minha variável sql_txt e o meus componentes calDI e calDF... :huh:
tentei criar duas variáveis publicas chamadas data1 e data2 do tipo string, dai eles receberiam os valores assim:
data1:=DateToStr(calDI.date); // onde converto o valor Data em string pra ser aceito na variável sql_txt
Pergunta
.Léo
Bom dia pessoal, esse é o meu segundo tópico criado em foruns na net e fico feliz em usar este recurso. 8)
Minha dificuldade está em criar um Form em Delphi 2006 para pesquisa em um ADOQUERY que puxa os dados da tabela Lancamento, a tabela Lancamento está em um banco MDB chamado bdsis.mdb e dentro da tabela Lancamento tenho um campo chamado Data do tipo Data/hora.
No form que estou criando de nome frmConComAss tem o edit (edtprontuario) e dois TDateTimePicker (aquele combobox que quando clicamos e aparece um calendário bem bacana).
No SQL do ADOQUERY tem a seguinte instrução Select * from Lancamento order by Data desc, assim será visualizado no TOPO o ultimo REG do Lancamento.
No bitbutton que quero filtrar pelo PRONTUARIO E LOGO EM SEGUIDA PELO INTERVALO DAS DATAS INICIAL E FINAL ESCOLHIDAS PELO calDI (componente TDateTimePicker DATA INICIAL) E calDF (componente TDateTimePicker DATA FINAL) tem a seguinte instrução:
var
sql_txt: string;
flag_aux: Boolean; //irá auxiliar na execução dos demais codigos
begin
//Inicio da condição para filtragem do PRONTUARIO
flag_aux := False;
sql_txt := 'Select * from Lancamento where '; //A variavel sql_txt recebe Declaração SQL
if edtPro.text<>'' then
begin
sql_txt := sql_txt + 'Prontuario = "' + edtPro.text + '" ';
flag_aux := True;
end
else
begin
flag_aux:=false;
Showmessage('Campo vazio, favor, digitar um PRONTUÁRIO válido');
end; //Até aqui está ok
//####################MEU PROBLEMA COMEÇA AQUI ##########################
if calDI.date <> '' then
begin
if flag_aux=true then
sql_txt := sql_txt + 'and data >= "' + calDI.date + '" ';
end;
if calDF <> '' then
begin
if flag_aux=true then
sql_txt := sql_txt + 'and data <= "' + calDF.date + '" ';
end;
//####################MEU PROBLEMA TERMINA AQUI ############################
//Instrução para abertura do MEU ADOQUERY de name adqfiltro
if (flag_aux=true) then
begin
adqfiltro.Close;
adqfiltro.SQL.Clear;
adqfiltro.SQL.Add(sql_txt);
adqfiltro.Open;
end;
A instrução acima funciona perfeitamente quando digito apenas o prontuário e me mostra em meu dbgrip todos os reg correspondentes. Entretanto não estou conseguindo filtrar quando digito o PRONTUÁRIO e escolho a Data inicial e a Data final, pois me reportar um erro de dados incompatíveis entre minha variável sql_txt e o meus componentes calDI e calDF... :huh:
tentei criar duas variáveis publicas chamadas data1 e data2 do tipo string, dai eles receberiam os valores assim:
data1:=DateToStr(calDI.date); // onde converto o valor Data em string pra ser aceito na variável sql_txt
data2:=DateToStr(calDF.date);
daí ficaria assim
if calDI.date <> '' then
begin
if flag_aux=true then
sql_txt := sql_txt + 'and data >= "' + data1 + '" ';
end;
if calDF <> '' then
begin
if flag_aux=true then
sql_txt := sql_txt + 'and data <= "' + data2 + '" ';
end;
Mesmo assim da o erro de dados incompatíveis... Se precisar de mais detalhes, favor perguntar e desde já agradeço a ajuda de todos.
Abs e espero que vocês possam me ajudar, sou novato e sei o básico em SQL e Delphi :unsure:
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.