USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  UPDATE - Banco de dados
XuelD2
SãO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/03/2012 00:05 hs            
Estou tentando alterar um produto dentro da tabela produto no banco de dados bardb.mdb.

Funciona da seguinte forma, vc seleciona o produto que quer alterar num combobox(combo1), o combo joga os dados do produto em 3 texts e em 1 variavel(salvo) p eu usar na hora de alterar, mas esta dando o seguinte erro:
"Run-time error '3709'. A conexão não pode ser usada para realizar esta operação. Ela está fechada ou é invalida neste contexto"


segue o codigo:

Dim conexao As New ADODB.Connection
Dim produto As New ADODB.Recordset
Dim salvo As Long
Dim sql As String

Private Sub cmdcancelar_Click()
conexao.Close
        Set rs = Nothing
Unload Me
End Sub

Private Sub cmdsalvar_Click()
conexao.Close
        Set rs = New ADODB.Recordset

        sql = "UPDATE produto set nome= '" & txtnome & "', preco= '" & txtpreco & "', quantidade= '" & txtquantidade & "' where nome= " & salvo
        rs.Open sql, conexao, adExecuteNoRecords
        
conexao.Execute sql
    
    End Sub

Private Sub combo1_Click()
        Set rs = New ADODB.Recordset
        
        sql = "select nome,preco,disponivel From produto Where nome='"
        sql = sql & Combo1.List(Combo1.ListIndex) & "'"
        rs.Open sql, conexao, adOpenKeyset, adLockPessimistic
        txtnome.Text = rs(0)
        txtpreco.Text = rs(1)
        txtquantidade.Text = rs(2)
        salvo = Val(rs(0))
                        
    conexao.Execute sql


End Sub

Private Sub Form_Load()
    conexao.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" & App.Path & "dbardb.mdb"
      
    
        Set rs = New ADODB.Recordset
        Combo1.Clear
        sql = "SELECT nome FROM produto ORDER BY nome"
        rs.Open sql, conexao, adOpenKeyset, adLockPessimistic
        Do While Not rs.EOF
            Combo1.AddItem rs(0) & ""
            rs.MoveNext
        Loop
        Combo1.Refresh
        rs.Close
        Set rs = Nothing
        
End Sub


Valeu
   
J.Carlos
Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
ENUNCIADA !
Postada em 28/03/2012 07:56 hs            
Tente isso:
 
dim wCm_Executa as new Adodb.Command
With wcm_Executa
   set .ActiveConnection = Conexao
   .CommandType = adCmdText
   .CommandText = "UPDATE produto set nome= '" & txtnome & "', preco= '" & txtpreco & "', quantidade= '" & txtquantidade & "' where nome= " & salvo
   Call .Execute(Options:=adExecuteNoRecords)
End With
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 28/03/2012 08:03 hs            
Colega o erro fala por si, como vc quer salvar se vc fecha a conexão antes


Private Sub cmdsalvar_Click()

' conexao.Close <---------------------------------------<<<

        Set rs = New ADODB.Recordset

        sql = "UPDATE produto set nome= '" & txtnome & "', preco= '" & txtpreco & "', quantidade= '" & txtquantidade & "' where nome= " & salvo
        rs.Open sql, conexao, adExecuteNoRecords
        
conexao.Execute sql
    
    End Sub
   
XuelD2
SãO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/03/2012 10:13 hs            
Treze,  quando tiro o conexao.close aparece o seguinte erro: "Run-time error '3001': Os argumentos estao incorretos, estao fora do intervalo aceitavel ou estao em conflito." e esse acusa a linha "rs.Open sql, conexao, adExecuteNoRecords".

J Carlos, quando coloco isso que me informou acontece o erro: "Run-time error '-214721913 (80040e07)': Tipo de dados imcompativel na expressao de criterio."
   
Treze
não registrado
ENUNCIADA !
Postada em 28/03/2012 11:02 hs   
volte ao que estava

use como antes

rs.Open sql, conexao, adOpenKeyset, adLockPessimistic

e tire o conexao.execute

ai sim se der erro vc pode fechar a conexão antes

   
XuelD2
SãO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 28/03/2012 11:17 hs            
Deste modo deu o mesmo erro do J Carlos "Run-time error '-214721913 (80040e07)': Tipo de dados imcompativel na expressao de criterio."

já olhei e olhei e pelo que via a linha sql="UPDATE..." esta correta, os campos da tabela produto estão todos como texto. acredito que não tenha problema, mas a tabela tem mais campos, como fornecedores, mas como não estou usando-os no momento, eu não preciso informa-las no campo update, correto?

a variavel "salvo" esta como Long e ela esta recebendo valores texto, isso interfere?

a vb esta falando que o erro esta na linha "rs.Open sql, conexao, adOpenKeyset, adLockPessimistic", mas pode ser na linha do UPDATE, não pode? se for, onde esta o erro? o nome dos campos da tabela estao corretos.


Valeu!
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página