Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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
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
>
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.. ?
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
dá um while not dados.eof
e abaixo dele , você especifica certinho os dados k ker apresentar...
você vai precisar organizar seu while...
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
>
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>"
%>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
é 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...
>
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>"
%>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.MOVENEXTQual 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.
>
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.MOVENEXTNão deu certo...
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
>
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
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
wendresponse.write "Cartão: " & FormatCurrency(vCartaoTotal)&"<br><br>"
response.write "Cheque: " & FormatCurrency(vChequeTotal)&"<br><br>"
response.write "Dinheiro: " & FormatCurrency(vdinheiro)&"<br><br>"Acima do
while not dados.eof
Coloque
If not dados.eof Then
Abaixo do
wend
Coloque
End If
>
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
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