pesquisa entre datas por fornecedor
agradeço a ajuda de ontem sobre a pesquisa entre datas... esta funcionando perfeitamente bem...
mas surgiu uma nova necessidade, pesquisar entre datas e por fornecedor...
fiz da seguinte forma... mas não tive sucesso... tentei algumas variações...
mas surgiu uma nova necessidade, pesquisar entre datas e por fornecedor...
fiz da seguinte forma... mas não tive sucesso... tentei algumas variações...
with DataModule1.Qry_Pesq_Datas do begin Close; SQL.Text := ´select * from Tab_Entrada_Produto where Data_Entr_Prod between :DataInicial and :DataFinal´; ParamByName(´DataInicial´).AsDate := DateTimePickerInicio.Date; ParamByName(´DataFinal´).asDate := DateTimePickerFinal.Date; Open; end;
Adelor Silva
Curtidas 0
Respostas
Adelor Silva
23/01/2006
Desculpem... copiei o texto errado... a pesquisa que eu tentei fazer ficou desta forma...
with DataModule1.Qry_Pesq_Datas do begin Close; SQL.Text := ´select * from Tab_Entrada_Produto where(select * from Tab_Entrada_Produto where Fornec_Entr_Prod like: Fornecedor) Data_Entr_Prod between :DataInicial and :DataFinal´; ParamByName(´DataInicial´).AsDate := DateTimePickerInicio.Date; ParamByName(´DataFinal´).asDate := DateTimePickerFinal.Date; ParamByName(´Fornecedor´).AsString := Edit1.Text; Open; end;
GOSTEI 0
Vinicius2k
23/01/2006
Colega,
Eu não tenho certeza se entendi bem o que você precisa...
Seria: retornar os registros de um fornecedor X em um período Y?
Qual a relação existente entre Tab_Entrada_Produto e Fornec_Entr_Prod ?
Como uma é entrada é relacionada a um fornecedor? Através de um código?
Se possível, poste a estrutura de ambas as tabelas para que fique mais fácil que o ajudemos.
T+
Eu não tenho certeza se entendi bem o que você precisa...
Seria: retornar os registros de um fornecedor X em um período Y?
Qual a relação existente entre Tab_Entrada_Produto e Fornec_Entr_Prod ?
Como uma é entrada é relacionada a um fornecedor? Através de um código?
Se possível, poste a estrutura de ambas as tabelas para que fique mais fácil que o ajudemos.
T+
GOSTEI 0
Adelor Silva
23/01/2006
na (Tab_Entr_Prod) eu tenho eu tenho os ítens normais como:
Prod_Entr;
Cod_Fornec_Entr_Prod
Fornec_Entr_Prod;
Data_Entr_Prod;
etc;
gostaria de fazer uma pesquisa onde possa retornar entre um periodo de tempo todos o ítens de um Fornecedor... a pesquisa entre datas vc já me ajudou, e agora gostaria de incluir na mesma pesquisa escolhendo um fornecedor... esta é a pesquisa que vc montou pra mim...
with DataModule1.Qry_Pesq_Datas do
begin
Close;
SQL.Text := ´select * from Tab_Entrada_Produto where Data_Entr_Prod between :DataInicial and :DataFinal´;
ParamByName(´DataInicial´).AsDate := DateTimePickerInicio.Date;
ParamByName(´DataFinal´).asDate := DateTimePickerFinal.Date;
Open;
end;
nesta mostra todos os produtos comprados... mas gostaria de poder escolher... todos os produtos comprados de um fornecedor naquele periodo...
[color=red:0946a527b2]outro detalhe... eu tenho que pesquisar pelo código do Fornecedor né...???[/color:0946a527b2]
espero ter sido claro...
Prod_Entr;
Cod_Fornec_Entr_Prod
Fornec_Entr_Prod;
Data_Entr_Prod;
etc;
gostaria de fazer uma pesquisa onde possa retornar entre um periodo de tempo todos o ítens de um Fornecedor... a pesquisa entre datas vc já me ajudou, e agora gostaria de incluir na mesma pesquisa escolhendo um fornecedor... esta é a pesquisa que vc montou pra mim...
with DataModule1.Qry_Pesq_Datas do
begin
Close;
SQL.Text := ´select * from Tab_Entrada_Produto where Data_Entr_Prod between :DataInicial and :DataFinal´;
ParamByName(´DataInicial´).AsDate := DateTimePickerInicio.Date;
ParamByName(´DataFinal´).asDate := DateTimePickerFinal.Date;
Open;
end;
nesta mostra todos os produtos comprados... mas gostaria de poder escolher... todos os produtos comprados de um fornecedor naquele periodo...
[color=red:0946a527b2]outro detalhe... eu tenho que pesquisar pelo código do Fornecedor né...???[/color:0946a527b2]
espero ter sido claro...
GOSTEI 0
Vinicius2k
23/01/2006
Colega,
Para lhe ajudar com o que você precisa, precisamos da estrutura da tabela de fornecedores e que você informe qual a relação entre elas (qual campo na tabela de entradas é responsável por armazenar o código do fornecedor).
T+
Para lhe ajudar com o que você precisa, precisamos da estrutura da tabela de fornecedores e que você informe qual a relação entre elas (qual campo na tabela de entradas é responsável por armazenar o código do fornecedor).
T+
GOSTEI 0
Adelor Silva
23/01/2006
InterBase
[color=red:9ce15c0e79]Tab_Fornecedor[/color:9ce15c0e79]
CREATE TABLE TAB_FORNECEDOR (
COD_FORNEC INTEGER NOT NULL,
NOME_FORNEC VARCHAR(30),
CONTATO_FORNEC VARCHAR(20),
END_FORNEC VARCHAR(30),
EMAIL_FORNEC CHAR(20),
BAIRRO_FORNEC VARCHAR(20),
CEP_FORNEC CHAR(15),
CIDADE_FORNEC VARCHAR(20),
UF_FORNEC CHAR(2),
´I.E._FORNEC´ CHAR(15),
CNPJ_FORNEC CHAR(20),
FONE_FORNEC CHAR(20),
CEL_FORNEC CHAR(15),
NUM_COMPRAS_FORNEC INTEGER,
DATA_CADASTRO_FORNEC DATE,
OBS_FORNEC BLOB SUB_TYPE 1 SEGMENT SIZE 150
);
ALTER TABLE TAB_FORNECEDOR ADD CONSTRAINT PK_TAB_FORNECEDOR PRIMARY KEY (COD_FORNEC);
[color=red:9ce15c0e79] Tab_Entrada_Produto[/color:9ce15c0e79]
CREATE TABLE TAB_ENTRADA_PRODUTO (
COD_ENTR_PROD INTEGER NOT NULL,
DESCR_ENTR_PROD VARCHAR(50),
COD_PROD_ENTR_PROD INTEGER,
FORNEC_ENTR_PROD VARCHAR(50),
COD_FORNEC_ENTR_PROD INTEGER, [color=red:9ce15c0e79] Aqui fica o código do fornecedor na hora da entrada[/color:9ce15c0e79]
DATA_ENTR_PROD DATE,
VLRUNIT_ENTR_PROD NUMERIC(15,2),
VLRTOT_ENTR_PROD NUMERIC(15,2),
QTD_ENTR_PROD NUMERIC(15,2),
PESO_ENTR_PROD NUMERIC(15,2),
OBS_ENTR_PROD BLOB SUB_TYPE 0 SEGMENT SIZE 200
);
ALTER TABLE TAB_ENTRADA_PRODUTO ADD CONSTRAINT PK_TAB_ENTRADA_PRODUTO PRIMARY KEY (COD_ENTR_PROD);
o relacionamento entre as tabelas eu não sei fazer também...
Grato pela ajuda!!!
[color=red:9ce15c0e79]Tab_Fornecedor[/color:9ce15c0e79]
CREATE TABLE TAB_FORNECEDOR (
COD_FORNEC INTEGER NOT NULL,
NOME_FORNEC VARCHAR(30),
CONTATO_FORNEC VARCHAR(20),
END_FORNEC VARCHAR(30),
EMAIL_FORNEC CHAR(20),
BAIRRO_FORNEC VARCHAR(20),
CEP_FORNEC CHAR(15),
CIDADE_FORNEC VARCHAR(20),
UF_FORNEC CHAR(2),
´I.E._FORNEC´ CHAR(15),
CNPJ_FORNEC CHAR(20),
FONE_FORNEC CHAR(20),
CEL_FORNEC CHAR(15),
NUM_COMPRAS_FORNEC INTEGER,
DATA_CADASTRO_FORNEC DATE,
OBS_FORNEC BLOB SUB_TYPE 1 SEGMENT SIZE 150
);
ALTER TABLE TAB_FORNECEDOR ADD CONSTRAINT PK_TAB_FORNECEDOR PRIMARY KEY (COD_FORNEC);
[color=red:9ce15c0e79] Tab_Entrada_Produto[/color:9ce15c0e79]
CREATE TABLE TAB_ENTRADA_PRODUTO (
COD_ENTR_PROD INTEGER NOT NULL,
DESCR_ENTR_PROD VARCHAR(50),
COD_PROD_ENTR_PROD INTEGER,
FORNEC_ENTR_PROD VARCHAR(50),
COD_FORNEC_ENTR_PROD INTEGER, [color=red:9ce15c0e79] Aqui fica o código do fornecedor na hora da entrada[/color:9ce15c0e79]
DATA_ENTR_PROD DATE,
VLRUNIT_ENTR_PROD NUMERIC(15,2),
VLRTOT_ENTR_PROD NUMERIC(15,2),
QTD_ENTR_PROD NUMERIC(15,2),
PESO_ENTR_PROD NUMERIC(15,2),
OBS_ENTR_PROD BLOB SUB_TYPE 0 SEGMENT SIZE 200
);
ALTER TABLE TAB_ENTRADA_PRODUTO ADD CONSTRAINT PK_TAB_ENTRADA_PRODUTO PRIMARY KEY (COD_ENTR_PROD);
o relacionamento entre as tabelas eu não sei fazer também...
Grato pela ajuda!!!
GOSTEI 0
Vinicius2k
23/01/2006
Colega,
Creio que o que você precisa é:
A passagem dos parametros, no que se refere ao fornecedor, seria desta forma :
Isto faria uma busca no intervalo datas e especificando parte do nome do fornecedor, de acordo com como você pretende utilizar o like em conjunto com o ´¬´.
Creio que o que você precisa é:
select F.NOME_FORNEC, E.* from TAB_ENTRADA_PRODUTO E left join TAB_FORNECEDOR F on (E.COD_FORNEC_ENTR_PROD = F.COD_FORNEC) where (E.DATA_ENTR_PROD between :datainicial and :datafinal) and (F.NOME_FORNEC like :fornecedor)
A passagem dos parametros, no que se refere ao fornecedor, seria desta forma :
... ParamByName(´Fornecedor´).AsString := Edit1.Text + ´¬´; // ou ParamByName(´Fornecedor´).AsString := ´¬´ + Edit1.Text + ´¬´; ...
Isto faria uma busca no intervalo datas e especificando parte do nome do fornecedor, de acordo com como você pretende utilizar o like em conjunto com o ´¬´.
GOSTEI 0
Adelor Silva
23/01/2006
vou testar... obrigado...
GOSTEI 0
Adelor Silva
23/01/2006
Tentei desta forma... mas não deu certo...
begin
with DataModule1.Qry_Pesq_Datas do
begin
Close;
SQL.Text := ´select NOME_FORNEC, Data_Entr_Prod * from TAB_ENTRADA_PRODUTO E left join TAB_FORNECEDOR on (COD_FORNEC_ENTR_PROD = COD_FORNEC) where(DATA_ENTR_PROD between :datainicial and :datafinal) and(NOME_FORNEC like:fornecedor)´;
ParamByName(´DataInicial´).AsDate := DateTimePickerInicio.Date;
ParamByName(´DataFinal´).asDate := DateTimePickerFinal.Date;
ParamByName(´Fornecedor´).AsString := Edit1.Text;
Open;
end;
begin
with DataModule1.Qry_Pesq_Datas do
begin
Close;
SQL.Text := ´select NOME_FORNEC, Data_Entr_Prod * from TAB_ENTRADA_PRODUTO E left join TAB_FORNECEDOR on (COD_FORNEC_ENTR_PROD = COD_FORNEC) where(DATA_ENTR_PROD between :datainicial and :datafinal) and(NOME_FORNEC like:fornecedor)´;
ParamByName(´DataInicial´).AsDate := DateTimePickerInicio.Date;
ParamByName(´DataFinal´).asDate := DateTimePickerFinal.Date;
ParamByName(´Fornecedor´).AsString := Edit1.Text;
Open;
end;
GOSTEI 0
Vinicius2k
23/01/2006
Colega,
A instrução que você está usando não é a mesma que eu lhe passei. Atenção aos detalhes.
T+
A instrução que você está usando não é a mesma que eu lhe passei. Atenção aos detalhes.
T+
GOSTEI 0
Adelor Silva
23/01/2006
1° - a pesquisa funcionou perfeitamente... muito obrigado...
2° - desculpa por ter modificado a sua instrução... é que eu não entendi ela e achei que alguns ítens deveria ser modificados...
3° - o que significa o ´F.´ e o ´E.´ e tem também somente ´F sem ponto´
gostaria de entender a instrução, para poder fazer outras com base nesta... para não ter que cada vez pedir socorro no forum...
4° - Mais uma vez... muito obrigado...
2° - desculpa por ter modificado a sua instrução... é que eu não entendi ela e achei que alguns ítens deveria ser modificados...
3° - o que significa o ´F.´ e o ´E.´ e tem também somente ´F sem ponto´
gostaria de entender a instrução, para poder fazer outras com base nesta... para não ter que cada vez pedir socorro no forum...
4° - Mais uma vez... muito obrigado...
GOSTEI 0
Aroldo Zanela
23/01/2006
Colega,
Estas “Letras” podem ser nomes, ou melhor, alias (apelidos) atribuídos a nomes de tabelas dentro do escopo da instrução SQL. Isto facilita a leitura de scripts e a lógica de associações complexas.
Veja um exemplo com e sem o uso de alias:
Usando ALIAS:
Sem ALIAS:
Estas “Letras” podem ser nomes, ou melhor, alias (apelidos) atribuídos a nomes de tabelas dentro do escopo da instrução SQL. Isto facilita a leitura de scripts e a lógica de associações complexas.
Veja um exemplo com e sem o uso de alias:
Usando ALIAS:
select F.NOME_FORNEC, E.* from TAB_ENTRADA_PRODUTO E left join TAB_FORNECEDOR F on (E.COD_FORNEC_ENTR_PROD = F.COD_FORNEC) where (E.DATA_ENTR_PROD between :datainicial and :datafinal) and (F.NOME_FORNEC like :fornecedor)
Sem ALIAS:
select TAB_FORNECEDOR.NOME_FORNEC, TAB_ENTRADA_PRODUTO.* from TAB_ENTRADA_PRODUTO left join TAB_FORNECEDOR on (TAB_ENTRADA_PRODUTO.COD_FORNEC_ENTR_PROD = TAB_FORNECEDOR.COD_FORNEC) where (TAB_ENTRADA_PRODUTO.DATA_ENTR_PROD between :datainicial and :datafinal) and (TAB_FORNECEDOR.NOME_FORNEC like :fornecedor)
GOSTEI 0
Adelor Silva
23/01/2006
Obrigado Aroldo Zanela... vou fazer alguns testes para ver se entendi...
GOSTEI 0