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
|
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
|
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!
|
|
|
|
|