pesquisa entre datas por fornecedor
23/01/2006
0
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
Posts
23/01/2006
Adelor Silva
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;
23/01/2006
Vinicius2k
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+
24/01/2006
Adelor Silva
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...
24/01/2006
Vinicius2k
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+
24/01/2006
Adelor Silva
[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!!!
24/01/2006
Vinicius2k
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 ´¬´.
25/01/2006
Adelor Silva
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;
25/01/2006
Vinicius2k
A instrução que você está usando não é a mesma que eu lhe passei. Atenção aos detalhes.
T+
26/01/2006
Adelor Silva
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...
26/01/2006
Aroldo Zanela
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)
26/01/2006
Adelor Silva
Clique aqui para fazer login e interagir na Comunidade :)