consultando por data
bom dia
estou tentando fazer uma consulta entre duas tabelas onde retorne pra mim os nomes q ñ sejam encontrados na 2ª tabela. esse procedimento ja consegui mas existe um detalhe preciso realizar entre um determinado intervalo d tempo. e o campo q armazena a data esta no formato date (estou trabalhando c/ paradox) a rotina p/ consultar é esta:
select nom_memb from membros where cod_memb not in (select codmembent from entradas)
o campo data esta na tabela de entradas
ñ consigo trazer pela data como fazer?
desde ja agradeço
marcos andre
estou tentando fazer uma consulta entre duas tabelas onde retorne pra mim os nomes q ñ sejam encontrados na 2ª tabela. esse procedimento ja consegui mas existe um detalhe preciso realizar entre um determinado intervalo d tempo. e o campo q armazena a data esta no formato date (estou trabalhando c/ paradox) a rotina p/ consultar é esta:
select nom_memb from membros where cod_memb not in (select codmembent from entradas)
o campo data esta na tabela de entradas
ñ consigo trazer pela data como fazer?
desde ja agradeço
marcos andre
Marquinhospe
Curtidas 0
Respostas
Arc
14/12/2006
pq vc não usa a clausula WHERE na query [b:8cf6104014]select codmembent from entradas[/b:8cf6104014], tipo
select codmembent from entradas
where data >= :datainicial and data <= :datafinal
ou
where data between :datainicial and :datafinal
:?:
select codmembent from entradas
where data >= :datainicial and data <= :datafinal
ou
where data between :datainicial and :datafinal
:?:
GOSTEI 0
Marquinhospe
14/12/2006
arc tentei mas da a seguinte mensagem de erro:
´01/06/2006´ is not a valid integer value
se vc tiver outra maneira em q possa me ajudar, agradeço muito
marcos andré
´01/06/2006´ is not a valid integer value
se vc tiver outra maneira em q possa me ajudar, agradeço muito
marcos andré
GOSTEI 0
Arc
14/12/2006
[b:5e8b7d0d96]is not a valid integer value [/b:5e8b7d0d96]
a data não é um valor inteiro valido , !!!!!!!!!
vc ja verificou o DataType do seu parametro ?
a data não é um valor inteiro valido , !!!!!!!!!
vc ja verificou o DataType do seu parametro ?
GOSTEI 0
Arc
14/12/2006
o campo date pode ser convertido para float, a parte inteira desse float representa a quantidade de dias da data inicial do seu so até hj, talvez ele esteja considerando esse numero de dias
GOSTEI 0
Marquinhospe
14/12/2006
kra fiz da maneira q vc falou mas continua dando a mesma mensagem de erro. quando peço p/ consultar pelo campo dataent no formato date sempre dar este erro. ñ consigo fazer esta consulta sempre dar o bendito erro de data invalida.
se tiver alguma rotina em q eu possa comparar c/ a minha eu agradeço
valeu
se tiver alguma rotina em q eu possa comparar c/ a minha eu agradeço
valeu
GOSTEI 0
Joao Marcos
14/12/2006
Caro amigo eu vejo duas formas para você consultar.
with QConsulta do
begin
Close;
SQL.Clear;
SQL.Add(´ SELECT NOM_MEMB FROM MEMBROS ´+
´ WHERE COD_MEMB NOT IN (SELECT CODMEMBENT FROM ENTRADAS) ´+
´ AND DATA BETWEEN :DATAINI AND :DATAFIN´);
ParamByName(´DATAINI´).AsDate := StrToDate(edt_DataInicial.Text);
ParamByName(´DATAFIN´).AsDate := StrToDate(edt_DataFinal.Text);
Open;
end;
ou
with QConsulta do
begin
Close;
SQL.Clear;
SQL.Add(´ SELECT NOM_MEMB FROM MEMBROS ´+
´ WHERE COD_MEMB NOT IN (SELECT CODMEMBENT FROM ENTRADAS) ´+
´ AND DATA BETWEEN :DATAINI AND :DATAFIN´);
ParamByName(´DATAINI´).AsString := FormatDateTime(´YYYY/MM/DD´,StrToDate(edt_DataInicial.Text));
ParamByName(´DATAFIN´).AsString := FormatDateTime(´YYYY/MM/DD´,StrToDate(edt_DataFinal.Text));
Open;
end;
with QConsulta do
begin
Close;
SQL.Clear;
SQL.Add(´ SELECT NOM_MEMB FROM MEMBROS ´+
´ WHERE COD_MEMB NOT IN (SELECT CODMEMBENT FROM ENTRADAS) ´+
´ AND DATA BETWEEN :DATAINI AND :DATAFIN´);
ParamByName(´DATAINI´).AsDate := StrToDate(edt_DataInicial.Text);
ParamByName(´DATAFIN´).AsDate := StrToDate(edt_DataFinal.Text);
Open;
end;
ou
with QConsulta do
begin
Close;
SQL.Clear;
SQL.Add(´ SELECT NOM_MEMB FROM MEMBROS ´+
´ WHERE COD_MEMB NOT IN (SELECT CODMEMBENT FROM ENTRADAS) ´+
´ AND DATA BETWEEN :DATAINI AND :DATAFIN´);
ParamByName(´DATAINI´).AsString := FormatDateTime(´YYYY/MM/DD´,StrToDate(edt_DataInicial.Text));
ParamByName(´DATAFIN´).AsString := FormatDateTime(´YYYY/MM/DD´,StrToDate(edt_DataFinal.Text));
Open;
end;
GOSTEI 0
Marquinhospe
14/12/2006
galera ja tentei essas formas q vcs passaram mas nada.
eu ñ sei se estou errando na declaração das variaveis e na inclusão das mesmas dentro da rotina. ñ sei realmente como fazer p/ buscar um resultado entre duas datas 01/12/2006 e 31/12/2006 por exemplo. se alguem podr ajudar aí fico muito grato.
lembrando q estou trabalhando c/ paradox e o campo data esta no formato date. Preciso d um rotina q traga pra mim todos as pessoas q ñ contribuiram em um determinado mês. estou comparando os dados das pessoas entre duas tabelas membros e entradas amarrando pelo campo codmemb e codmembent comparando entre elas.
aguardo noticias
eu ñ sei se estou errando na declaração das variaveis e na inclusão das mesmas dentro da rotina. ñ sei realmente como fazer p/ buscar um resultado entre duas datas 01/12/2006 e 31/12/2006 por exemplo. se alguem podr ajudar aí fico muito grato.
lembrando q estou trabalhando c/ paradox e o campo data esta no formato date. Preciso d um rotina q traga pra mim todos as pessoas q ñ contribuiram em um determinado mês. estou comparando os dados das pessoas entre duas tabelas membros e entradas amarrando pelo campo codmemb e codmembent comparando entre elas.
aguardo noticias
GOSTEI 0
Aroldo Zanela
14/12/2006
Colega,
Na propriedade SQL de seu componente TQuery, coloque assim:
Feche a query (Close);
// Atribua os parâmetros nos seguintes formatos:
ParamByName(´DATAINI´).AsDate := FormatDateTime(´MM/DD/YYYY´,StrToDate(edt_DataInicial.Text));
ParamByName(´DATAFIN´).AsDate := FormatDateTime(´MM/DD/YYYY´,StrToDate(edt_DataFinal.Text));
Abra a query (Open);
Particularmente, prefiro usar componentes DateTimePicker (Paleta Win32) para datas ao invés de TEdits, pois simplifica o código.
Exemplo:
Na propriedade SQL de seu componente TQuery, coloque assim:
SELECT NOM_MEMB FROM MEMBROS WHERE COD_MEMB NOT IN (SELECT CODMEMBENT FROM ENTRADAS AND DATA BETWEEN :DATAINI AND :DATAFIN)
Feche a query (Close);
// Atribua os parâmetros nos seguintes formatos:
ParamByName(´DATAINI´).AsDate := FormatDateTime(´MM/DD/YYYY´,StrToDate(edt_DataInicial.Text));
ParamByName(´DATAFIN´).AsDate := FormatDateTime(´MM/DD/YYYY´,StrToDate(edt_DataFinal.Text));
Abra a query (Open);
Particularmente, prefiro usar componentes DateTimePicker (Paleta Win32) para datas ao invés de TEdits, pois simplifica o código.
Exemplo:
ParamByName(´DATAINI´).AsDate := dtp_DataInicial.Date; ParamByName(´DATAFIN´).AsDate := dtp_DataFinal.Date;
GOSTEI 0
Marquinhospe
14/12/2006
as variaveis dataini e datafin declaro como o q?
acredito q seja aí o meu erro
acredito q seja aí o meu erro
GOSTEI 0
Aroldo Zanela
14/12/2006
as variaveis dataini e datafin declaro como o q?
acredito q seja aí o meu erro
Colega,
Elas devem ser do mesmo tipo que a sua coluna de dados na tabela. Creio que seja do tipo Date. Certo?
Por favor, tente o exemplo que passei e informe-nos o resultado.
GOSTEI 0