SQL Duvida em pesquisa
estou tentando fazer uma fitlragem com 3 dados, Nome, data inicial e data final, estou começando agora a programar.meu código ficou assim:
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add(select * from gravacao );
dmdados2.ADOQuerygravacao2.SQL.Add ( where nome=:nome and data>=:data1 and data<=:data2);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(nome).Value:=edit5.Text;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data1).Value:=strTodate(Edit3.Text);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data2).Value:=strTodate(Edit4.Text);
dmdados2.ADOQuerygravacao2.open;
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add(select * from gravacao );
dmdados2.ADOQuerygravacao2.SQL.Add ( where nome=:nome and data>=:data1 and data<=:data2);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(nome).Value:=edit5.Text;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data1).Value:=strTodate(Edit3.Text);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data2).Value:=strTodate(Edit4.Text);
dmdados2.ADOQuerygravacao2.open;
Gabriel Soares
Curtidas 0
Respostas
Bruno Leandro
16/08/2012
Sim gabriel, e qual seria a seu duvida
GOSTEI 0
Gabriel Soares
16/08/2012
o Código não funciona!!!!
Ele filtra o Nome, e data não:
Nome> Fulano > Data inicial 12/02/2012 > Data Final 16/02/2012
estou querendo filtrar todos dados com o fulano nesse intervalo de data
mas meu código está pegando o nome > Fulano e só o dia 12 e o dia 16, não está pegando o mes nem o ano
fica assim
nome | data ini | data fin |
fulano | 12/01/2009 | 16/02/2012....
e assim por diante.
Ele filtra o Nome, e data não:
Nome> Fulano > Data inicial 12/02/2012 > Data Final 16/02/2012
estou querendo filtrar todos dados com o fulano nesse intervalo de data
mas meu código está pegando o nome > Fulano e só o dia 12 e o dia 16, não está pegando o mes nem o ano
fica assim
nome | data ini | data fin |
fulano | 12/01/2009 | 16/02/2012....
e assim por diante.
GOSTEI 0
Douglas Michelino
16/08/2012
Isso deve resolver.
var
wdata_inicio,wdata_fim:string;
begin
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add(select * from gravacao );
dmdados2.ADOQuerygravacao2.SQL.Add ( where data between :data1 and :data2 );
dmdados2.ADOQuerygravacao2.SQL.Add ( and nome = :nome );
wdata_inicio:=copy(edit3.text,4,2)+'/'+copy(edit3.text,1,2)+'/'+copy(edit3.text,7,4);
wdata_fim:=copy(edit4.text,4,2)+'/'+copy(edit4.text,1,2)+'/'+copy(edit4.text,7,4);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data1).Value:=wdata_inicio;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data2).Value:=wdata_fim;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(nome).Value:=edit5.Text;
dmdados2.ADOQuerygravacao2.open;
var
wdata_inicio,wdata_fim:string;
begin
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add(select * from gravacao );
dmdados2.ADOQuerygravacao2.SQL.Add ( where data between :data1 and :data2 );
dmdados2.ADOQuerygravacao2.SQL.Add ( and nome = :nome );
wdata_inicio:=copy(edit3.text,4,2)+'/'+copy(edit3.text,1,2)+'/'+copy(edit3.text,7,4);
wdata_fim:=copy(edit4.text,4,2)+'/'+copy(edit4.text,1,2)+'/'+copy(edit4.text,7,4);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data1).Value:=wdata_inicio;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data2).Value:=wdata_fim;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(nome).Value:=edit5.Text;
dmdados2.ADOQuerygravacao2.open;
GOSTEI 0
Gabriel Soares
16/08/2012
Obrigado pela atenção, mas não resolveu... =/
Vou tentar outro jeito...
está dando a mesma coisa...
não está filtrando a data...
só filtra o nome, a data continua sem filtrar..
vlw galera
Vou tentar outro jeito...
está dando a mesma coisa...
não está filtrando a data...
só filtra o nome, a data continua sem filtrar..
vlw galera
GOSTEI 0
Gabriel Soares
16/08/2012
Obrigado pela atenção, mas não resolveu... =/
Vou tentar outro jeito...
está dando a mesma coisa...
não está filtrando a data...
só filtra o nome, a data continua sem filtrar..
vlw galera
Vou tentar outro jeito...
está dando a mesma coisa...
não está filtrando a data...
só filtra o nome, a data continua sem filtrar..
vlw galera
GOSTEI 0
William
16/08/2012
Colega, qual SGBD vc está usando?
Qual o tipo desse campo no banco de dados(date, datetime, varchar)?
Qual o tipo desse campo no banco de dados(date, datetime, varchar)?
GOSTEI 0
Gabriel Soares
16/08/2012
Bando de dados access
o campo o do tipo : date
o campo o do tipo : date
GOSTEI 0
Romulo Contro
16/08/2012
tem que ver o formato da data que salva no banco...
passei por isso em sql server, e fiz uma gambiarra mais ou menos assim:
print - http://puu.sh/WdI5
a explicação disso aí é a seguinte... to pegando o texto do meu Edit, convertendo pra datetime, e depois dando um format passando pra string de novo no formato que eu quero... e o QuotedStr coloca a data entre aspas pra mandar o comando pro banco...
tenta fazer algo semelhante pra ver se não da certo!
abraço!
passei por isso em sql server, e fiz uma gambiarra mais ou menos assim:
print - http://puu.sh/WdI5
a explicação disso aí é a seguinte... to pegando o texto do meu Edit, convertendo pra datetime, e depois dando um format passando pra string de novo no formato que eu quero... e o QuotedStr coloca a data entre aspas pra mandar o comando pro banco...
tenta fazer algo semelhante pra ver se não da certo!
abraço!
GOSTEI 0
Gabriel Soares
16/08/2012
o Código q eu citei no inicio do Post funciona corretamente pesquisando dia contendo apenas 1 digito
2/2/2012 À 2/8/2012
agora se eu colocar
20/2/2012 à 20/8/2012
ele puxa todos os dados com o nome filtrado, mas com todas as datas
será que é um problema de conversão de string para date no edit
coloquei 2 DateTimerPicker na data inicial e data final, passando o valor para um edit
Edit3.Text := DateToStr(DateTimePicker2.Date);
Estou proximo de encontrar o erro
vlw mais uma vez pela atenção de todos
2/2/2012 À 2/8/2012
agora se eu colocar
20/2/2012 à 20/8/2012
ele puxa todos os dados com o nome filtrado, mas com todas as datas
será que é um problema de conversão de string para date no edit
coloquei 2 DateTimerPicker na data inicial e data final, passando o valor para um edit
Edit3.Text := DateToStr(DateTimePicker2.Date);
Estou proximo de encontrar o erro
vlw mais uma vez pela atenção de todos
GOSTEI 0
William
16/08/2012
Colega trabalhar com datas no Access é sempre uma tortura mesmo, tenta usar esse código no filtro:
//Ajusta o formato das datas
dt1 := formatdatetime('mm/dd/yyyy', DateTimePicker1.Date);
dt2 := formatdatetime('mm/dd/yyyy', DateTimePicker2.Date);
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add(select * from gravacao );
dmdados2.ADOQuerygravacao2.SQL.Add ( where nome=:nome and data>=:data1 and data<=:data2);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(nome).Value:=edit5.Text;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data1).Value:= '#' + dt1 + '#'; //O Access tem essas frescuras de usar #
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data2).Value:= '#' + dt2 + '#'; O Access tem essas frescuras de usar #
dmdados2.ADOQuerygravacao2.open;
Testa se não der certo avisa que vamos encontrar a solução.
//Ajusta o formato das datas
dt1 := formatdatetime('mm/dd/yyyy', DateTimePicker1.Date);
dt2 := formatdatetime('mm/dd/yyyy', DateTimePicker2.Date);
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add(select * from gravacao );
dmdados2.ADOQuerygravacao2.SQL.Add ( where nome=:nome and data>=:data1 and data<=:data2);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(nome).Value:=edit5.Text;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data1).Value:= '#' + dt1 + '#'; //O Access tem essas frescuras de usar #
dmdados2.ADOQuerygravacao2.Parameters.ParamByName(data2).Value:= '#' + dt2 + '#'; O Access tem essas frescuras de usar #
dmdados2.ADOQuerygravacao2.open;
Testa se não der certo avisa que vamos encontrar a solução.
GOSTEI 0
Bruno Leandro
16/08/2012
Ola grabriel ao iniciar voce pode verificar se a configuração do windows esta dd/mm/yyyy caso nao esteja voce pode finalizar o programa e pedir que seja configurado corretamente
ShortDateFormat <> 'dd/MM/yyyy'
para configurar eh no painel de controle / regiao e idioma / formatos de datas abreviadas / e configurar para dd/MM/aaaa
ShortDateFormat <> 'dd/MM/yyyy'
para configurar eh no painel de controle / regiao e idioma / formatos de datas abreviadas / e configurar para dd/MM/aaaa
GOSTEI 0
Romulo Contro
16/08/2012
Olá Gabriel...
eu sugeri vc formatar a data daquele jeito lá pq pode ser que tá filtrando o mês ao invés do dia... faz o teste de filtrar um dia 12 e um dia 13 pra ver... se no 12 der certo e no 13 não, creio que é o formato da data mesmo... se não, aí nao sei.
eu sugeri vc formatar a data daquele jeito lá pq pode ser que tá filtrando o mês ao invés do dia... faz o teste de filtrar um dia 12 e um dia 13 pra ver... se no 12 der certo e no 13 não, creio que é o formato da data mesmo... se não, aí nao sei.
GOSTEI 0
Gabriel Soares
16/08/2012
Pessoal consegui resolver com ajuda de vcs...
caiu minha ficha que no PC que estava funcionando o programa, estava cadastrando com o formato da data diferente daquele que meu PC estava...
O programa já funciona faz 2 anos, mas o cliente solicitou uma atualização, que o formato de data do meu O.S difere da data do Sistema dele, tudo resolvido graças o despertar de vcs, esqueci de pensar na lógica, agradeço a todos pela paciência de responder
begin
if combobox2.text='Nome' then
begin
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add('select * from tabela' );
dmdados2.ADOQuerygravacao2.SQL.Add ( 'where fulano=:fulano and data>=:data1 and data<=:data2');
dmdados2.ADOQuerygravacao2.Parameters.ParamByName('fulano').Value:= edit5.Text;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName('data1').Value:=strtodate (Edit3.Text);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName('data2').Value:=strtodate (edit5.Text);
dmdados2.ADOQuerygravacao2.sql.Add('order by data');
dmdados2.ADOQuerygravacao2.open;
caiu minha ficha que no PC que estava funcionando o programa, estava cadastrando com o formato da data diferente daquele que meu PC estava...
O programa já funciona faz 2 anos, mas o cliente solicitou uma atualização, que o formato de data do meu O.S difere da data do Sistema dele, tudo resolvido graças o despertar de vcs, esqueci de pensar na lógica, agradeço a todos pela paciência de responder
begin
if combobox2.text='Nome' then
begin
dmdados2.ADOQuerygravacao2.Close;
dmdados2.ADOQuerygravacao2.sql.clear;
dmdados2.ADOQuerygravacao2.SQL.Add('select * from tabela' );
dmdados2.ADOQuerygravacao2.SQL.Add ( 'where fulano=:fulano and data>=:data1 and data<=:data2');
dmdados2.ADOQuerygravacao2.Parameters.ParamByName('fulano').Value:= edit5.Text;
dmdados2.ADOQuerygravacao2.Parameters.ParamByName('data1').Value:=strtodate (Edit3.Text);
dmdados2.ADOQuerygravacao2.Parameters.ParamByName('data2').Value:=strtodate (edit5.Text);
dmdados2.ADOQuerygravacao2.sql.Add('order by data');
dmdados2.ADOQuerygravacao2.open;
GOSTEI 0