Ir para conteúdo

Arquivado

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

anabon

[Resolvido] Erro ao salvar dados

Recommended Posts

Olá pessoa boa tarde... Sou nova no forum então me desculpe se cometer algum erro!!!! Imagem Postada

 

Bem estou contruindo um sistema com cadastros de fornecedor, produto, cliente e uma tela de venda que onde está dando o problema ... bem nesta tela de venda tenho 7 textbox, 1 combo, 4 botões de comando, e uma MSFlexGrid, a ideia é lançar os produtos na grid somar mostrar o total da venda, o troco, bem até ai tudo bem... o problema ta q na hora de finalizar a venda eu queria q essa venda fosse salva, mas não ta salvando ta dando erro, o erro q dá é "tipo não correspodente" só isso como se fosse um msgbox, não da o tipo de erro e nem informa em qual linha que ta esse erro.

 

O codigo que estou usando para salvar é o seguinte....

 

 

Private Sub cmdsalvar_Click()Dim Resp As StringDim I As CurrencyOn Error GoTo HANDResp = MsgBox("Confirma ", vbYesNo + vbInformation)If (Resp = vbYes) ThenRS.Open "movimento", db, 1, 3For I = 1 To KeyRS.AddNewRS.Fields("transação") = Label4.CaptionRS.Fields("nomeitem") = grdlistavenda.TextMatrix(I, 1)RS.Fields("preço") = grdlistavenda.TextMatrix(I, 3)RS.Fields("preçototal") = grdlistavenda.TextMatrix(I, 4)RS.UpdateNext IRS.CloseRS.Open "vendas", db, 1, 3RS.AddNewRS.Fields("transação") = Label4.CaptionRS.Fields("DATE") = lbldate.CaptionRS.Fields("total") = txttotal.TextRS.UpdateRS.Closefrmnota.LBNO.Caption = Label4.Captionfrmnota.LNP.Caption = txttotal.TextFor I = 1 To Keyfrmnota.LITEM(frmnota.LITEM.UBound).Caption = grdlistavenda.TextMatrix(I, 1)frmnota.LPREÇO(frmnota.LPREÇO.UBound).Caption = grdlistavenda.TextMatrix(I, 3)frmnota.LQTY(frmnota.LQTY.UBound).Caption = grdlistavenda.TextMatrix(I, 2)frmnota.LTOTAL(frmnota.LTOTAL.UBound).Caption = grdlistavenda.TextMatrix(I, 4)If (frmnota.LITEM.UBound = 0) Then' Load Form2.LPIZZA(Form2.LPIZZA.UBound + 1)' Load Form2.LUP(Form2.LUP.UBound + 1)' Load Form2.LQTY(Form2.LQTY.UBound + 1)' Load Form2.LTOT(Form2.LTOT.UBound + 1)' Form2.Line3.Y2 = Form2.Line3.Y2 + 500' Form2.Line4.Y2 = Form2.Line4.Y2 + 500' Form2.Line5.Y2 = Form2.Line5.Y2 + 500' Form2.Line6.Y2 = Form2.Line6.Y2 + 500' Form2.Line7.Y2 = Form2.Line7.Y2 + 500' Form2.Frame1.Top = Form2.Frame1.Top + 300GoTo SA End If  'Nome Itemfrmnota.LITEM(frmnota.LITEM.UBound).Left = frmnota.LITEM(frmnota.LITEM.UBound - 1).Leftfrmnota.LITEM(frmnota.LITEM.UBound).Top = frmnota.LITEM(frmnota.LITEM.UBound - 1).Top + 250frmnota.LITEM(frmnota.LITEM.UBound).Visible = True'Preçofrmnota.LPREÇO(frmnota.LPREÇO.UBound).Left = frmnota.LPREÇO(frmnota.LPREÇO.UBound - 1).Leftfrmnota.LPREÇO(frmnota.LPREÇO.UBound).Top = frmnota.LPREÇO(frmnota.LPREÇO.UBound - 1).Top + 250frmnota.LPREÇO(frmnota.LPREÇO.UBound).Visible = True'QUANTIdadefrmnota.LQTY(frmnota.LQTY.UBound).Left = frmnota.LQTY(frmnota.LQTY.UBound - 1).Leftfrmnota.LQTY(frmnota.LQTY.UBound).Top = frmnota.LQTY(frmnota.LQTY.UBound - 1).Top + 250frmnota.LQTY(frmnota.LQTY.UBound).Visible = True'Preço Totalfrmnota.LTOTAL(frmnota.LTOTAL.UBound).Left = frmnota.LTOTAL(frmnota.LTOTAL.UBound - 1).Leftfrmnota.LTOTAL(frmnota.LTOTAL.UBound).Top = frmnota.LTOTAL(frmnota.LTOTAL.UBound - 1).Top + 250frmnota.LTOTAL(frmnota.LTOTAL.UBound).Visible = TrueSA: Load frmnota.LITEM(frmnota.LITEM.UBound + 1) Load frmnota.LPREÇO(frmnota.LPREÇO.UBound + 1) Load frmnota.LQTY(frmnota.LQTY.UBound + 1) Load frmnota.LTOTAL(frmnota.LTOTAL.UBound + 1) frmnota.Line3.Y2 = frmnota.Line3.Y2 + 500frmnota.Line4.Y2 = frmnota.Line4.Y2 + 500frmnota.Line5.Y2 = frmnota.Line5.Y2 + 500frmnota.Line6.Y2 = frmnota.Line6.Y2 + 500 frmnota.Line7.Y2 = frmnota.Line7.Y2 + 500 frmnota.Frame1.Top = frmnota.Frame1.Top + 300Next Ifrmnota.ShowMsgBox "Registro SALVO", vbInformationElseMsgBox "Operação cancelada", vbCriticalEnd Ifcmdnova.Enabled = TrueExit SubHAND:MsgBox Err.Description, vbCriticalEnd Sub

 

 

Se alguem pouder me ajudar eu agradeciria de coração, pois não estou muito acustumada com programação, a plataforma q estou usando é VB6, o meu banco é o acess 2003...

 

Grata ... Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para saber exatamente onde está o erro, retire a linha

On Error GoTo HAND

Para incluir EU acho mais fácil fazer por SQL.

 

 

No seu caso para incluir por sql seria algo como

db.Execute("insert into movimento(transação,nomeitem,preço,preçototal) values (" & Label4.Caption
 & "," & grdlistavenda.TextMatrix(I, 1)
 & "," & grdlistavenda.TextMatrix(I, 3)
 & "," & grdlistavenda.TextMatrix(I, 4)
 & ")")

Depois faria o mesmo para a segunda parte do código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá scorpio muito obrigada deu certo nem precisei usar o código que você me passou, tirei a linha de tratamento de erro e corrigi a linha que estava dando erro!

Mas como nem tudo é felicidade (rsrsrs), bem quando execulto o programa e uso a tela de venda na 1° x ele salva normal mas quando eu saio da tela e volto na mesma tela (com o programa ainda em execulção) ele da erro " Run time '3705': Operação não permitida quando o objeto está aberto. "

 

no load do form estou usando o seguinte codigo:

 

Private Sub Form_Load()
frmvendas.Caption = " - venda "
Key = 0
db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Arquivos de programas\bd\gerenciador.mdb;Persist Security Info=False"
RS.Open "cadastroproduto", db, 1, 3
lbldate.Caption = Date
While (RS.EOF = False)
cbonomedoitem.AddItem RS.Fields("nomedoproduto")
RS.MoveNext
Wend
cbonomedoitem.Enabled = False
txtpreçodevenda.Enabled = False
txtquantidade.Enabled = False
txtpreçototal.Enabled = False
cmdsalvar.Enabled = False
RS.Close
End Sub

a linha que aponta o erro é a: [

quote]db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Arquivos de programas\bd\gerenciador.mdb;Persist Security Info=False"[/quote]

se você poder me ajudar mais uma x eu agradeciria muito....

 

Grata

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu erro por que a conexao já estava aberta.

Experimenta algo desse tipo

If cnn.State = adStateOpen then

Msgbox " Conexão ativa "

else

MsgBox " Conexão inativa "

End if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem a demora, obrigado just do a smile, eu resolvi o problema no unload do form eu digitei

db.Close

, e por enquanto deu certo, mas muito obrigada pela dica.... forte abraço!!!!!

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.