AJUDA COM SELECT

USUARIO.EXCLUIDOS 24/05/2007 02:04:42
#218024
Dim CP as string
Set T1=db.OpenRecordset("Select * From tblVendas Where Data>=CDate('" & DTI & "') and Data<=Cdate('" & DTF & "')")
Set T2=db.openRecordset("tblTempVenda")
Do While not t1.eof
if cp<> t1!cupom then
Set T3=db.openRecordset("Select sum(Qtde*Valor) as Tot From tblVendas Where Cupom='" & t1!Cupom & "'")
T2.AddNew
T2!Data=T1!Data
t2!TotalVEnda=T3!Tot
set T4=db.OpenRecordset("Select Cliente From tblCliente Where CodCli='" & t1!CodCli & "'")
if not T4.EOf then
T2!Cliente=T4!Cliente
end if
t4.close
Set t4=db.OpenRecordset("Select Produto From tblProduto Where CodProd='" & t1!CodPro & "'")
if not T4.eof then
T2!Produto=T4!Produto
endif
T4.close
T2!Cupom=T1!Cupom
T2.UpDate
end if
CP=t1!Cupom
T1.MoveNext
Loop
T1.close
T2.Close

Viram quantas tabelas são abertas para somar o valor de cada venda. Na tabela venda ficam apenas o código do cliente,codigo do produto,Codigo da Marca que é pega também só que eu não coloquei para dimunuir o tamnho.

Existe um jeito que eu possa fazer tudo isso sem abrir tantas tabelas. pois os 28000 registros referem-se a apenas 2500 vendas, só que cada venda(cupom) tem 900,3000 itens que é o que somada.


NETMANIA 24/05/2007 09:06:26
#218037
Dependendo do modelo do seu banco, é possível você fazer relacionamento entre elas e retorna os totais de vendas por cliente. Com esta alteração, que fará o serviço sujo será o banco de dados, e a sua aplicação ficará mais leve e até terá um ganho de performance quando executar este relatório.
USUARIO.EXCLUIDOS 24/05/2007 09:17:29
#218038
Arnaldo, para melhorar o entendimento, poste a estrutura de suas tabelas, bem como seus relacionamentos, vai ajudar bastante, se não puder, então elabore um DER (Diagrama de Relacionamentos).

Mas já estou tentando fazer algo pra você.
USUARIO.EXCLUIDOS 24/05/2007 09:33:10
#218040
Ver se cheguei perto, tente adaptar a seu problema.
VBAPRENDE 24/05/2007 11:10:11
#218058
Resposta escolhida
Set T1=db.OpenRecordset(Select (Select sum(Qtde*Valor) as Tot From tblVendas ve Where ve.cupom=v.Cupom),(Select Cliente From tblCliente c Where c.CodCli=v.CodCli),(Select Produto From tblProduto p Where p.CodProd=v.CodPro) From tblVendas v Where v.CodCli=c.CodCli AND v.CodPro=p.CodProd AND v.Data>=CDate('" & DTI & "') and v.Data<=Cdate('" & DTF & ")"

Ve se da certo assim, mas é +/- assim
DIOGOMUNARIN 24/05/2007 12:08:06
#218079
Faz uma store procedure pra isso.
Tópico encerrado , respostas não são mais permitidas