Ir para conteúdo

Arquivado

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

anabon

Fechamento de Venda do Dia

Recommended Posts

Olá bom dia pessual....

To com um probleminha no vb6... to tentando fazer uma tela para fechar o caixa apos o expediente, na tabela venda coloquei um campo com o nome "totaldia", e na tela venda estou usando o seguinte codigo para somar a venda :

 

Set con = New ADODB.Connection

 

con.Open (cnSQL)

 

 

If RS.EOF <> True And RS.BOF <> True Then

With RS

.Fields("totaldia") = RS.Fields("totaldia") + Val(Me.txtvenda.Text)

.Update

.Close

End With

 

Set RS = Nothing

Set con = Nothing

 

Só que ta dando erro "Tipo de dados incompativel na expressão de críterio" Run time erro-'2147217913(80040e07)':

 

a linha que o erro aponta eh:

RS.Open "Select * from venda where datavenda= '" & lbldate & "'", con, adOpenKeyset, adLockOptimistic

Como corrigir esse erro?

 

ops: estou usando o vb6 e banco de dados acess 2003

 

desde já agradeço

 

Forte Abraço!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suponho que lblIdade seja um label, correto?

 

No VB6 você precisa especificar qual a propriedade do elemento esta usando. Nesse caso, seria caption. Ficaria entao:

 

RS.Open "Select * from venda where datavenda= '" & lbldate.caption & "'", con, adOpenKeyset, adLockOptimistic

Att,

 

Claudio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suponho que lblIdade seja um label, correto?

 

No VB6 você precisa especificar qual a propriedade do elemento esta usando. Nesse caso, seria caption. Ficaria entao:

 

RS.Open "Select * from venda where datavenda= '" & lbldate.caption & "'", con, adOpenKeyset, adLockOptimistic

Att,

 

Claudio

 

 

Olá Claudio Boa Tarde !!!!!

 

 

Obrigada pela dica e sim lbl eh uma label, coloquei lbldate.Caption como você havia me dito mas continuou dando o mesmo erro, então fui no banco e troquei o tipo de dados de DATA/HORA para TEXTO, ai deu certo ... so q o problema eh q ele soma, mas não sai da mesma linha, desculpa - me se eu tiver sendo óbvia, mas acho que eh porque estou usando o campo datavenda como criterio ... então criei uma nova tabela "fechamento_caixa" com os campos (datavenda - totalpreço e total dia) .... Estou certa? Ou ah outra solução para o meu problema?

 

Mas uma vez agradeço pela ajuda e peço desculpas se minha pergunta for um tanto quanto boba, mas eh que estou aprendedo...

 

Forte Abraço!!!!

 

Grata

Ana Bon

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, primeiro de tudo: se esta trabalhando com campo tipo data, precisa tomar alguns cuidados na hora de passar valores.

Nao aconselho que mantenha o que fez, de alterar para texto, principalmente se realiza consultas por essas datas.

 

Nao sei qual SGBD esta usando, mas para evitar problemas na hora de selecionar ou inserir sua data, use o formato:

yyyy-MM-dd hh:mm:ss, sendo:

yyyy o ano configurado com 4 digitos

MM o mes configurado com 2 digitos

dd o dia configurado com 2 digitos

hh a hora configurada com 2 digitos

mm o minuto configurado com 2 digitos

ss o segundo configurado com 2 digitos

 

Eu nao entendi o que quis dizer como sair da mesma linha. você fez uma consulta e atualizou os dados retornados da cunsulta. O que era para acontecer apos isso? Pelo codigo que colocou lah em cima era para parar nisso mesmo. Eu nao sei dizer se ha outra solucao para seu problema pq nao entendi seu problema e nao entendi para que serviu essa outra tabela.

 

E soh mais uma coisinha. Nessa linha:

If RS.EOF <> True And RS.BOF <> True Then
você pode trocar por isso:

If not RS.EOF Then

Funcionara de igual maneira, mas economiza codigo, logo economiza processamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá bom Dia...

Desculpe a demora ... a correria de fim de ano ......

 

Mais uma vez agradeço por sua ajuda e dica....

 

Nao sei qual SGBD esta usando, mas para evitar problemas na hora de selecionar ou inserir sua data, use o formato:

 

O banco que estou usando é o acess 2003,

Eu nao entendi o que quis dizer como sair da mesma linha.
: oque eu quiz dizer eh q eu posso por exemplo efetuar 10 vendas e registrar nessa tabela so q ele só registra o primeiro, ele até soma certinho, so que registrar a venda ele so registra a primeira.

 

você fez uma consulta e atualizou os dados retornados da cunsulta. O que era para acontecer apos isso?

a minha intenção era que todas as vendas fosse somada e registrada EX:

 

quant. Descrição ValorUn. ValorTotal Soma

1 Caneta 1,00 1,00 1,00

2 Cadernos 2,00 4,00 5,00

 

Pelo codigo que colocou lah em cima era para parar nisso mesmo. Eu nao sei dizer se ha outra solucao para seu problema pq nao entendi seu problema e nao entendi para que serviu essa outra tabela.

 

Como sou nova em vb, não tinha sacado ainda ... mas depois de pensa um pouco e analisar aonde eu havia usado ele no projeto percebi que ele iria me retornar esse resultado mesmo, porisso criei a outra tabela "fechacaixa" a inteção eh que essa tabela some as vendas do dia enquanto a tabela "venda" registra as vendas...

 

Mas o problema é q parou de salvar, tanto as vendas na tabela "venda" e a soma na tabela "fechacaixa"

 

Para salvar as vendas to usando os seguintes códigos

 

Dim I As Currency

 

RS.Open "venda", db, 1, 3

For I = 1 To Key

 

RS.AddNew

RS.Fields("nomeproduto") = grdvendas.TextMatrix(I, 1)

RS.Fields("cliente") = cbocliente.Text

RS.Fields("preço") = grdvendas.TextMatrix(I, 3)

RS.Fields("quantidade") = grdvendas.TextMatrix(I, 2)

RS.Fields("vendedor") = lblvendedor.Caption

RS.Fields("totalpreço") = txtvenda.Text

RS.Fields("datavenda") = lbldate.Caption

RS.Update

Next I

RS.Close

 

para a tabela "fechacaixa" uso:

 

Set RS = New ADODB.Recordset

Set rs1 = New ADODB.Recordset

Set rs2 = New ADODB.Recordset

Set con = New ADODB.Connection

Set rsbill = New ADODB.Recordset

 

Set con = New ADODB.Connection

 

con.Open (cnSQL)

 

RS.Open "Select * from fechacaixa where datavenda= '" & lbldate & "'", con, adOpenKeyset, adLockOptimistic

 

If not RS.EOF Then

 

With RS

.Fields("totaldia") = RS.Fields("totaldia") + Val(Me.txtvenda.Text)

.Update

.Close

 

 

End With

Me.txtvenda.Text = ""

Me.txtpago.Text = ""

Me.txttroco.Text = ""

Set RS = Nothing

Set con = Nothing

 

Else

 

rs1.Open "Select * from fechacaixa", con, adOpenKeyset, adLockOptimistic

With rs1

.AddNew

.Fields("datavenda") = Me.lbldate

.Fields("totalpreço") = Me.txtvenda

.Update

.Close

End With

 

 

Só que não esta mais salvando em nenhuma das duas tabelas ... Porque?

 

Se poder me ajudar agradeceria muito

 

Mas uma vez muito obrigada pela ajuda

 

Att

 

Ana Bon

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.