Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Boris

Separar por Loja

Recommended Posts

Galera estou com uma duvida.

 

estou tentando colocar na seguinte seguencia minhas informações

 

LOJA_1

 

DINHEIRO

CHEQUE

CARTÃO

------------

LOJA_2

 

DINHEIRO

CHEQUE

CARTÃO

------------

LOJA_3

 

DINHEIRO

CHEQUE

CARTÃO

 

 

No caso do dinheiro, cheque e cartao eu consegui ele pegar cada venda e somar porem eu tenho varias lojas e precisaria separar por loja

 

Exemplo

 

Enquanto loja=loja

loja

 

se tipo_pagto=d

vdinheiro= vdinheiro + valor

 

se tipo_pagto=c

vcheque= vcheque + valor

 

se tipo_pagto=e

vcartao= vcartao + valor

 

 

a parte dos tipos de pagto eu tenho pronto porem não consigo separar por loja

 

Alguem poderia me ajudar....

 

meu codigo:

response.Write(dados("NOME_CLIFOR"))&"<br><br>"

		while not Dados.eof
			
			if dados("tipo_pagto")="D" then
				vdinheiro= vdinheiro + CDbl(dados("valor"))
			end if
			if dados("tipo_pagto")="A" then
				vCartaoA= vCartaoA + CDbl(dados("valor"))
			end if
			if dados("tipo_pagto")="B" then
				vCartaoB= vCartaoB + CDbl(dados("valor"))
			end if
			if dados("tipo_pagto")="E" then
				vCartaoE= vCartaoE + CDbl(dados("valor"))
			end if
			if dados("tipo_pagto")="I" then
				vCartaoI= vCartaoI + CDbl(dados("valor"))
			end if
			if dados("tipo_pagto")="K" then
				vCartaoK= vCartaoK + CDbl(dados("valor"))
			end if
			if dados("tipo_pagto")="C" then
				vChequeC= vChequeC + CDbl(dados("valor"))
			end if
		
		dados.movenext
			vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK
			vChequeTotal=vChequeC+vChequeP
WEND		

response.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"

Valew galera obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer um SELECT em todas as lojas , onde o id for = a loja selecionada,

em seu bd , você tem o id das lojas !?!?!

 

apenas mande exibir os dados igual ao ID da loja

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer um SELECT em todas as lojas , onde o id for = a loja selecionada,

em seu bd , você tem o id das lojas !?!?!

 

apenas mande exibir os dados igual ao ID da loja

 

 

Ok, nesse caso se eu fosse fazer uma busca de loja especifica ....

 

mas neste caso eu gostaria de puxar de todas a lojas.

 

atualmente tenho 19 lojas... eu precisaria puxar como se fosse um resumo

 

eu fiz algo semelhante uma vez é que me deu branco e não estou conseguido fazer....

 

é como se fosse um loop dentro de outro o primeiro verifica se o registro é da mesma loja se for ele imprime apenas uma vez o nome da loja e passa para o segundo loop que faz a soma dos registros que são os tipos de pagto.

 

eu cheguei a fazer assim:

while not dados.eof

	response.Write(dados("NOME_CLIFOR"))&"<br><br>"
	
			while not Dados.eof
				
				if dados("tipo_pagto")="D" then
					vdinheiro= vdinheiro + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="A" then
					vCartaoA= vCartaoA + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="B" then
					vCartaoB= vCartaoB + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="E" then
					vCartaoE= vCartaoE + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="I" then
					vCartaoI= vCartaoI + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="K" then
					vCartaoK= vCartaoK + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="C" then
					vChequeC= vChequeC + CDbl(dados("valor"))
				end if
			
			dados.movenext
				vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK
				vChequeTotal=vChequeC+vChequeP
	WEND		
DADOS.MOVENEXT
WEND

response.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"
%>

mas aparece esse erro:

 

MORUMBI

 

 

ADODB.Recordset erro '800a0bcd'

 

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

 

/closecx/teste_busca_01.asp, line 54

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SLQ para ver o k esta sendo passado

mas neste caso eu gostaria de puxar de todas a lojas

como você ker tipo um resumo, você pode fazer um loop normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SLQ para ver o k esta sendo passado

mas neste caso eu gostaria de puxar de todas a lojas

como você ker tipo um resumo, você pode fazer um loop normal

 

esta aparecendo o mesmo erro :

 

MORUMBI

 

 

ADODB.Recordset erro '800a0bcd'

 

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

 

/ASP/Catalogo/closecx/teste_busca_01.asp, line 58

 

 

 

		dados.movenext
				vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK
				vChequeTotal=vChequeC+vChequeP



	WEND		

DADOS.MOVENEXT

wend
response.Write sql:response.End()

response.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"
%>

como eu poderia utilizar o Loop normal.. ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1º em vez de tanto if neste caso

 if dados("tipo_pagto")="D" then
                                 vdinheiro= vdinheiro + CDbl(dados("valor"))
                         end if
                         if dados("tipo_pagto")="A" then
                                 vCartaoA= vCartaoA + CDbl(dados("valor"))
                         end if
                         if dados("tipo_pagto")="B" then
                                 vCartaoB= vCartaoB + CDbl(dados("valor"))
                         end if
                         if dados("tipo_pagto")="E" then
                                 vCartaoE= vCartaoE + CDbl(dados("valor"))
                         end if
                         if dados("tipo_pagto")="I" then
                                 vCartaoI= vCartaoI + CDbl(dados("valor"))
                         end if
                         if dados("tipo_pagto")="K" then
                                 vCartaoK= vCartaoK + CDbl(dados("valor"))
                         end if
                         if dados("tipo_pagto")="C" then
                                 vChequeC= vChequeC + CDbl(dados("valor"))
                         end if
 
 

coloca um select case

 

 

 

você pode fazer isso de varias maneiras por exemplo pode jogar o nome das lojas ou os ids num array e dar um loop que vai depois fazer o select pelo nome ou id da loja

 

 

assim vai fazer a mesma accao para as trres lojas ou quantas forem

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um while not dados.eof

e abaixo dele , você especifica certinho os dados k ker apresentar...

você vai precisar organizar seu while...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou pode trazer os dados agrupaados na sua consulta. Se voce usa sql server faça uma query que agrupe as informações e use WITH ROLLUP ou WITH CUBE....muito mais rápido e fácil(depois que entende o funcionamento) para trazer dados sumarizados como você quer.

 

Fiz alguns exemplos que acho q voce vai entender melhor...veja abaixo:

 

-- DROP TABLE USADA NO EXEMPLO
IF EXISTS (SELECT 1 FROM sysobjects where name like '%tmp_pagamento%')
	DROP TABLE tmp_pagamento

-- CRIA TABLE PARA EXEMPLIFICAR DADOS
CREATE TABLE tmp_pagamento(
	pagamento_loja 	varchar(20),
	pagamento_tipo 	varchar(20),
	pagamento_valor	numeric(18,2)
)

-- LIMPA REGISTROS DA TABELA
DELETE FROM tmp_pagamento

-- INSERE REGISTROS DE DEMONSTRAÇÃO
INSERT INTO tmp_pagamento VALUES('LOJA_1','CHEQUE',1.00)
INSERT INTO tmp_pagamento VALUES('LOJA_1','DINHEIRO',2.00)
INSERT INTO tmp_pagamento VALUES('LOJA_1','MASTERCARD',3.00)
INSERT INTO tmp_pagamento VALUES('LOJA_1','MASTERCARD',3.50)
INSERT INTO tmp_pagamento VALUES('LOJA_1','VISA',4.00)
INSERT INTO tmp_pagamento VALUES('LOJA_1','DINNERS',6.00)
INSERT INTO tmp_pagamento VALUES('LOJA_1','DINHEIRO',8.00)

INSERT INTO tmp_pagamento VALUES('LOJA_2','MASTERCARD',3.20)
INSERT INTO tmp_pagamento VALUES('LOJA_2','MASTERCARD',3.00)
INSERT INTO tmp_pagamento VALUES('LOJA_2','MASTERCARD',13.00)
INSERT INTO tmp_pagamento VALUES('LOJA_2','DINHEIRO',4.00)

INSERT INTO tmp_pagamento VALUES('LOJA_3','CHEQUE',1.00)
INSERT INTO tmp_pagamento VALUES('LOJA_3','CHEQUE',2.00)
INSERT INTO tmp_pagamento VALUES('LOJA_3','DINNERS',6.00)
INSERT INTO tmp_pagamento VALUES('LOJA_3','DINHEIRO',4.00)

usando WITH ROLLUP

 


SELECT 
	ISNULL(pagamento_loja,'TOTAL GERAL') pagamento_loja,
	ISNULL(pagamento_tipo,'TOTAL') pagamento_tipo,
	SUM(pagamento_valor) TOTAL
FROM 
	tmp_pagamento 
GROUP BY
	pagamento_loja,
	pagamento_tipo WITH ROLLUP

Resultado:

 

LOJA_1 CHEQUE 1.00

LOJA_1 DINHEIRO 10.00

LOJA_1 DINNERS 6.00

LOJA_1 MASTERCARD 6.50

LOJA_1 VISA 4.00

LOJA_1 TOTAL 27.50

LOJA_2 DINHEIRO 4.00

LOJA_2 MASTERCARD 19.20

LOJA_2 TOTAL 23.20

LOJA_3 CHEQUE 3.00

LOJA_3 DINHEIRO 4.00

LOJA_3 DINNERS 6.00

LOJA_3 TOTAL 13.00

TOTAL GERAL TOTAL 63.70

 

usando WITH CUBE

 

SELECT 
	ISNULL(pagamento_loja,'TOTAL GERAL ') pagamento_loja,
	ISNULL(pagamento_tipo,'TOTAL DA LOJA') pagamento_tipo,
	SUM(pagamento_valor) TOTAL
FROM 
	tmp_pagamento 
GROUP BY
	pagamento_loja,
	pagamento_tipo WITH CUBE

Resultado:

 

LOJA_1 CHEQUE 1.00

LOJA_1 DINHEIRO 10.00

LOJA_1 DINNERS 6.00

LOJA_1 MASTERCARD 6.50

LOJA_1 VISA 4.00

LOJA_1 TOTAL DA LOJA 27.50

LOJA_2 DINHEIRO 4.00

LOJA_2 MASTERCARD 19.20

LOJA_2 TOTAL DA LOJA 23.20

LOJA_3 CHEQUE 3.00

LOJA_3 DINHEIRO 4.00

LOJA_3 DINNERS 6.00

LOJA_3 TOTAL DA LOJA 13.00

TOTAL GERAL TOTAL DA LOJA 63.70

TOTAL GERAL CHEQUE 4.00

TOTAL GERAL DINHEIRO 18.00

TOTAL GERAL DINNERS 12.00

TOTAL GERAL MASTERCARD 25.70

TOTAL GERAL VISA 4.00

 

 

Tcham!!!

 

Veja que fiz tudo isso no banco de dados apenas agrupando os registros. O seu loop nao teria mais que acumular nenhum valor de nenhum cartao e mais se voce criar um "cartao novo" nunca vai precisa se preocupar com tamanho de array ou qualquer outro if que você tenha no codigo...isso vale tambem se você implementar uma nova forma de de pagamento tipo BOLETO, TRANSFERENCIA ON LINE...qualquer coisa voce resolve com esse exemplo que fiz. O segredo é você organizar seu while apenas pra colocar as informações em uma tabela html já formatada com sua necessidade.

 

Se ficar com duvida no exemplo me chama.

 

Abs.,

 

Jorge Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um while not dados.eof

e abaixo dele , você especifica certinho os dados k ker apresentar...

você vai precisar organizar seu while...

 

 

Então eu montei porem aparece o seguinte erro:

 

MORUMBI

 

 

ADODB.Recordset erro '800a0bcd'

 

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

 

/ASP/Catalogo/closecx/teste_busca_01.asp, line 58

 

 

O codigo ficou assim:

 

 

while not dados.eof

	response.Write(dados("NOME_CLIFOR"))&"<br><br>"
	
			while not Dados.eof
				
				if dados("tipo_pagto")="D" then
					vdinheiro= vdinheiro + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="A" then
					vCartaoA= vCartaoA + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="B" then
					vCartaoB= vCartaoB + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="E" then
					vCartaoE= vCartaoE + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="I" then
					vCartaoI= vCartaoI + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="K" then
					vCartaoK= vCartaoK + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="C" then
					vChequeC= vChequeC + CDbl(dados("valor"))
				end if
			
			dados.movenext
				vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK
				vChequeTotal=vChequeC+vChequeP



	WEND		

DADOS.MOVENEXT

wend
response.Write sql:response.End()

response.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ta com dois recordsets no mesmo loop com o mesmo nome sem dar movefirst. Da uma olhada na dica de banco que te passei depois voce repensa esse seu loop. Com um unico loop e a consulta bem organizada no banco voce resolve seu problema.

 

Qualquer coisa eh só chamar.

 

Abs.,

 

Jorge Santos

Compartilhar este post


Link para o post
Compartilhar em outros sites

é como te falei

 

dá um while not dados.eof

e abaixo dele , você especifica certinho os dados k ker apresentar...

você vai precisar organizar seu while...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ta com dois recordsets no mesmo loop com o mesmo nome sem dar movefirst. Da uma olhada na dica de banco que te passei depois voce repensa esse seu loop. Com um unico loop e a consulta bem organizada no banco voce resolve seu problema.

 

Qualquer coisa eh só chamar.

 

Abs.,

 

Jorge Santos

 

 

Então Jorge, meu codigo de select é meio complexo não sei muito bem como colocar o que você me passou primeiro pra você ter uma ideia estou colocando meu codigo completo logo abaixo, note que o select que fiz é meio chatinho pois peguei varias tabelas pra obter os dados.

 

<!--#include file="conexao01.asp"-->

<%

SQL ="SELECT CADASTRO_CLI_FOR.NOME_CLIFOR, LOJA_VENDA_PGTO.DATA, LOJA_VENDA_PARCELAS.VALOR AS 'VALOR', TIPOS_PGTO.DESC_TIPO_PGTO, LOJA_VENDA_PARCELAS.TIPO_PGTO as 'TIPO_PAGTO' FROM CADASTRO_CLI_FOR CADASTRO_CLI_FOR, LOJA_VENDA_PARCELAS LOJA_VENDA_PARCELAS, LOJA_VENDA_PGTO LOJA_VENDA_PGTO, TB_FECHA_CAIXA TB_FECHA_CAIXA, TIPOS_PGTO TIPOS_PGTO WHERE TIPOS_PGTO.TIPO_PGTO = LOJA_VENDA_PARCELAS.TIPO_PGTO AND LOJA_VENDA_PGTO.CODIGO_FILIAL = LOJA_VENDA_PARCELAS.CODIGO_FILIAL AND LOJA_VENDA_PGTO.LANCAMENTO_CAIXA = LOJA_VENDA_PARCELAS.LANCAMENTO_CAIXA AND LOJA_VENDA_PGTO.TERMINAL = LOJA_VENDA_PARCELAS.TERMINAL AND LOJA_VENDA_PARCELAS.CODIGO_FILIAL = CADASTRO_CLI_FOR.CLIFOR AND TB_FECHA_CAIXA.codigo_filial = LOJA_VENDA_PARCELAS.CODIGO_FILIAL AND TB_FECHA_CAIXA.codigo_filial = LOJA_VENDA_PGTO.CODIGO_FILIAL AND LOJA_VENDA_PGTO.DATA = TB_FECHA_CAIXA.data_registro AND ((LOJA_VENDA_PGTO.DATA={ts '2009-06-11 00:00:00'})) ORDER BY CADASTRO_CLI_FOR.NOME_CLIFOR ASC"

SET Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 

vDinheiro=0
vCheque=0
vCartaoA=0
vCartaoB=0
vCartaoE=0
vCartaoI=0
vCartaoK=0
vCartaoTotal=0
vChequeC=0
vChequeP=0
vChequeTotal=0

while not dados.eof

	response.Write(dados("NOME_CLIFOR"))&"<br><br>"
	
			while not Dados.eof
				
				if dados("tipo_pagto")="D" then
					vdinheiro= vdinheiro + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="A" then
					vCartaoA= vCartaoA + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="B" then
					vCartaoB= vCartaoB + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="E" then
					vCartaoE= vCartaoE + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="I" then
					vCartaoI= vCartaoI + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="K" then
					vCartaoK= vCartaoK + CDbl(dados("valor"))
				end if
				if dados("tipo_pagto")="C" then
					vChequeC= vChequeC + CDbl(dados("valor"))
				end if
			
			dados.movenext
				vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK
				vChequeTotal=vChequeC+vChequeP
	WEND		

DADOS.MOVENEXT

wend
response.Write sql:response.End()

response.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

while not dados1.eof     
   response.Write(dados("NOME_CLIFOR"))&"<br><br>"   
                             while not Dados2.eof  
                           if dados("tipo_pagto")="D" then 
                                       vdinheiro= vdinheiro + CDbl(dados("valor"))  
                              end if                        
        if dados("tipo_pagto")="A" then   
                                     vCartaoA= vCartaoA + CDbl(dados("valor")) 
                               end if         
                       if dados("tipo_pagto")="B" then
                                        vCartaoB= vCartaoB + CDbl(dados("valor"))
                                end if              
                  if dados("tipo_pagto")="E" then 
                                       vCartaoE= vCartaoE + CDbl(dados("valor")) 
                               end if                               
 if dados("tipo_pagto")="I" then       
                                 vCartaoI= vCartaoI + CDbl(dados("valor"))   
                             end if                         
       if dados("tipo_pagto")="K" then    
                                    vCartaoK= vCartaoK + CDbl(dados("valor")) 
                               end if       
                         if dados("tipo_pagto")="C" then  
                                      vChequeC= vChequeC + CDbl(dados("valor")) 
                               end if            
                                    dados2.movenext  
                              vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK 
                               vChequeTotal=vChequeC+vChequeP      
  WEND          
  DADOS1.MOVENEXT
wend

mas lembre-se de organizar da melhor forma possivel seus dados no while

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o banco de dados? sql server, mysql, access??? voce consegue criar uma View desse seu select? assim otimizamos o codigo e eu consigo visualizar melhor os campos que temos q extrair..ou melhor, se voce conseguir e souber crie uma view e poste o nome das colunas que voce quer totalizar. Se possivel mostre exemplo do resultado da consulta...tipo as 3 primeira linhas ou algo do tipo. Assim consigo ver o que se repete e organizar um group by e codigo pra te auxiliar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

while not dados1.eof     
   response.Write(dados("NOME_CLIFOR"))&"<br><br>"   
                             while not Dados2.eof  
                           if dados("tipo_pagto")="D" then 
                                       vdinheiro= vdinheiro + CDbl(dados("valor"))  
                              end if                        
        if dados("tipo_pagto")="A" then   
                                     vCartaoA= vCartaoA + CDbl(dados("valor")) 
                               end if         
                       if dados("tipo_pagto")="B" then
                                        vCartaoB= vCartaoB + CDbl(dados("valor"))
                                end if              
                  if dados("tipo_pagto")="E" then 
                                       vCartaoE= vCartaoE + CDbl(dados("valor")) 
                               end if                               
 if dados("tipo_pagto")="I" then       
                                 vCartaoI= vCartaoI + CDbl(dados("valor"))   
                             end if                         
       if dados("tipo_pagto")="K" then    
                                    vCartaoK= vCartaoK + CDbl(dados("valor")) 
                               end if       
                         if dados("tipo_pagto")="C" then  
                                      vChequeC= vChequeC + CDbl(dados("valor")) 
                               end if            
                                    dados2.movenext  
                              vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK 
                               vChequeTotal=vChequeC+vChequeP      
  WEND          
  DADOS1.MOVENEXT
wend

mas lembre-se de organizar da melhor forma possivel seus dados no while

 

Não deu certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade naun existem segredo nisto, você deve fazer o SELECT no seu bd, e disponibilizar os dados k ker dentro de seu while, como disse anteriormente, você deve apenas organizar seu modo de exibir os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o banco de dados? sql server, mysql, access??? voce consegue criar uma View desse seu select? assim otimizamos o codigo e eu consigo visualizar melhor os campos que temos q extrair..ou melhor, se voce conseguir e souber crie uma view e poste o nome das colunas que voce quer totalizar. Se possivel mostre exemplo do resultado da consulta...tipo as 3 primeira linhas ou algo do tipo. Assim consigo ver o que se repete e organizar um group by e codigo pra te auxiliar.

 

Meu banco é SQL Server

 

estou criando a View

 

COLUNA - TABELA

NOME_CLIFOR - CADASTRO_CLI_FOR

DATA - LOJA_VENDA_PGTO

VALOR - LOJA_VENDA_PARCELAS

DESC_TIPO_PGTO - TIPOS_PGTO

TIPO_PGTO - LOJA_VENDA_PARCELAS

 

SELECT     dbo.CADASTRO_CLI_FOR.NOME_CLIFOR, dbo.LOJA_VENDA_PGTO.DATA, dbo.LOJA_VENDA_PARCELAS.VALOR, dbo.TIPOS_PGTO.DESC_TIPO_PGTO, 
                     dbo.LOJA_VENDA_PARCELAS.TIPO_PGTO
FROM         dbo.TB_FECHA_CAIXA INNER JOIN
                     dbo.LOJA_VENDA_PGTO ON dbo.TB_FECHA_CAIXA.codigo_filial = dbo.LOJA_VENDA_PGTO.CODIGO_FILIAL AND 
                     dbo.TB_FECHA_CAIXA.data_registro = dbo.LOJA_VENDA_PGTO.DATA INNER JOIN
                     dbo.LOJA_VENDA_PARCELAS ON dbo.LOJA_VENDA_PGTO.CODIGO_FILIAL = dbo.LOJA_VENDA_PARCELAS.CODIGO_FILIAL AND 
                     dbo.LOJA_VENDA_PGTO.TERMINAL = dbo.LOJA_VENDA_PARCELAS.TERMINAL AND 
                     dbo.LOJA_VENDA_PGTO.LANCAMENTO_CAIXA = dbo.LOJA_VENDA_PARCELAS.LANCAMENTO_CAIXA AND 
                     dbo.TB_FECHA_CAIXA.codigo_filial = dbo.LOJA_VENDA_PARCELAS.CODIGO_FILIAL INNER JOIN
                     dbo.TIPOS_PGTO ON dbo.LOJA_VENDA_PARCELAS.TIPO_PGTO = dbo.TIPOS_PGTO.TIPO_PGTO INNER JOIN
                     dbo.CADASTRO_CLI_FOR ON dbo.LOJA_VENDA_PARCELAS.CODIGO_FILIAL = dbo.CADASTRO_CLI_FOR.CLIFOR

 

RESULTADO

NOME_CLIFOR - DATA - VALOR - DESC_TIPO_PGTO - TIPO_PGTO

MORUMBI - 11/6/2009 00:00:00 - 99,99 - CARTAO DE DEBITO - E

MORUMBI - 11/6/2009 00:00:00 - 169,99 - CARTAO DE CREDITO POS - A

MORUMBI - 11/6/2009 00:00:00 - 149,99 - CARTAO DE CREDITO POS - A

....

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera estou tentando fazer assim mas está dando erro.

 

 

CENTER NORTE (NOVA)

 

 

ADODB.Recordset erro '800a0bcd'

 

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

 

/closecx/teste_busca_01.asp, line 50

 

 

 

 

o que devo fazer...

 

<!--#include file="conexao01.asp"-->

<%
SQL ="SELECT CADASTRO_CLI_FOR.NOME_CLIFOR, LOJA_VENDA_PGTO.DATA, Sum(LOJA_VENDA_PARCELAS.VALOR) AS 'VALOR', TIPOS_PGTO.DESC_TIPO_PGTO as 'tipo_pagto' FROM HANDBOOK.dbo.CADASTRO_CLI_FOR CADASTRO_CLI_FOR, HANDBOOK.dbo.LOJA_VENDA_PARCELAS LOJA_VENDA_PARCELAS, HANDBOOK.dbo.LOJA_VENDA_PGTO LOJA_VENDA_PGTO, HANDBOOK.dbo.TB_FECHA_CAIXA TB_FECHA_CAIXA, HANDBOOK.dbo.TIPOS_PGTO TIPOS_PGTO WHERE TIPOS_PGTO.TIPO_PGTO = LOJA_VENDA_PARCELAS.TIPO_PGTO AND LOJA_VENDA_PGTO.CODIGO_FILIAL = LOJA_VENDA_PARCELAS.CODIGO_FILIAL AND LOJA_VENDA_PGTO.LANCAMENTO_CAIXA = LOJA_VENDA_PARCELAS.LANCAMENTO_CAIXA AND LOJA_VENDA_PGTO.TERMINAL = LOJA_VENDA_PARCELAS.TERMINAL AND LOJA_VENDA_PARCELAS.CODIGO_FILIAL = CADASTRO_CLI_FOR.CLIFOR AND TB_FECHA_CAIXA.codigo_filial = LOJA_VENDA_PARCELAS.CODIGO_FILIAL AND TB_FECHA_CAIXA.codigo_filial = LOJA_VENDA_PGTO.CODIGO_FILIAL GROUP BY CADASTRO_CLI_FOR.NOME_CLIFOR, LOJA_VENDA_PGTO.DATA, TIPOS_PGTO.DESC_TIPO_PGTO HAVING (LOJA_VENDA_PGTO.DATA={ts '2009-06-11 00:00:00'}) ORDER BY CADASTRO_CLI_FOR.NOME_CLIFOR"


SET Dados = Server.CreateObject("ADODB.Recordset")
Dados.Open SQL, conexao01, 3 

vDinheiro=0
vCheque=0
vCartaoA=0
vCartaoB=0
vCartaoE=0
vCartaoI=0
vCartaoK=0
vCartaoTotal=0
vChequeC=0
vChequeP=0
vChequeTotal=0

while not dados.eof
        response.Write(dados("NOME_CLIFOR"))&"<br><br>"                                
			while not Dados.eof                                                                
				if dados("tipo_pagto")="D" then                                        
				vdinheiro= vdinheiro + CDbl(dados("valor"))                                
				end if                                
				if dados("tipo_pagto")="A" then                                        
				vCartaoA= vCartaoA + CDbl(dados("valor"))                                
				end if                                
				if dados("tipo_pagto")="B" then                                        
				vCartaoB= vCartaoB + CDbl(dados("valor"))                                
				end if                                
				if dados("tipo_pagto")="E" then                                        
				vCartaoE= vCartaoE + CDbl(dados("valor"))                                
				end if                                
				if dados("tipo_pagto")="I" then                                        
				vCartaoI= vCartaoI + CDbl(dados("valor"))                                
				end if                                
				if dados("tipo_pagto")="K" then                                        
				vCartaoK= vCartaoK + CDbl(dados("valor"))                                
				end if                                
				if dados("tipo_pagto")="C" then                                        
				vChequeC= vChequeC + CDbl(dados("valor"))                                
				end if
			Dados.movenext                                
				vCartaoTotal=vCartaoA+vCartaoB+vCartaoE+vCartaoI+vCartaoK   
				vChequeTotal=vChequeC+vChequeP        
			WEND            
		DADOS.MOVENEXT
		wend
'response.Write sql:response.End()
response.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acima do

while not dados.eof

 

Coloque

If not dados.eof Then

 

Abaixo do

wend

 

Coloque

End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acima do

while not dados.eof

 

Coloque

If not dados.eof Then

 

Abaixo do

wend

 

Coloque

End If

 

Então cheguei a colocar mas não deu certo. fiz da seguinte forma

 

dim loja__old
dim loja_new

loja_old=""
loja_new=""

loja_new= dados("loja") 

if loja_new<>loja_old then

	while not Dados.eof
				if dados("formapagamento")="CARTAO" then
					vCartao= vCartao + CDbl(dados("valor"))
				end if

				if dados("formapagamento")="CHEQUE" then
					vCheque= vCheque + CDbl(dados("valor"))
				end if
				if dados("tipo_pgto")="D" then
					vDinheiro= vDinheiro + CDbl(dados("valor"))
				end if

	loja_old=loja_new 

	Dados.movenext

	wend

end if

	response.write loja_new&"<br><br>"
	response.write "Dinheiro: " & FormatCurrency(vDinheiro)&"<br><br>"
	response.write "Cheque: " & FormatCurrency(vCheque)&"<br><br>"
	response.write "Cartão: " & FormatCurrency(vCartao)&"<br><br>"
	'response.Write sql:response.End()
%>

porem continua dando erro:

 

MORUMBI

Dinheiro: R$ 5.795,55

Cheque: R$ 2.777,71

Cartão: R$ 40.734,47

 

o valor do dinheiro cheque e cartao é o acumulado das duas lojas

 

ele deveria aparecer assim

 

CENTER NORTE

Dinheiro: R$ 3.795,55

Cheque: R$ 2.000,00

Cartão: R$ 18.734,47

 

MORUMBI

Dinheiro: R$ 2.795,55

Cheque: R$ 777,71

Cartão: R$ 22.734,47

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.