none
como actualizar dados no Access com VB 2008

    Pergunta

  • boas,

    estou a desenvolver um programa de gestão para um clube de vídeo em VB 2008.

    estou usar o access como base de dados...

    para actualizar os clientes utilizei este código;

     

     

     Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
    
    
    
            dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Manekas\Desktop\PAP moviemanager\Movie teste 1\Movie teste 1\BD2.mdb;"
    
    
    
    
    
            Dim strQuery As String = "select * From Clientes where @cod_cliente = '" & ComboBox1.Text & "'"
    
    
    
            Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn)
    
    
    
    
    
    
    
            dbCmd = New OleDbCommand("UPDATE Clientes WHERE (cod_cliente =" & ComboBox1.Text & "AND nome =" & ComboBox2.Text & ")) set (morada =" & TextBox11.Text & ",", New OleDbConnection())
    
    
    
            dbConn.Open()
    
            dbCmd.ExecuteNonQuery()
    
            dbCmd = Nothing
    
    
    
    
    
    
    
            MessageBox.Show("modificado registo com sucesso")
    
    
    

     

    mas da-me um erro, diz que a "ExecuteNonQuery requer uma Ligação aberta e disponível. O estado actual da ligação é fechado" 

     

    não compreendo porque?

     

    alguem me poderia ajudar!?

     

    ate uma próxima... 

     

     

    sexta-feira, 11 de junho de 2010 00:49

Respostas

  • Oi, eu dei uma arrumada no seu código, quando for usar sql sempre use com parametros, vc não precisa fazer este select antes do update que vc esta fazendo, e a conexão que vc passou estava errada, veja abaixo como seria bom ficar:

     Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
     dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Manekas\Desktop\PAP moviemanager\Movie teste 1\Movie teste 1\BD2.mdb;"
     dbConn.Open()
    
     Dim dbCmd As OleDbCommand
     dbCmd = New OleDbCommand("UPDATE Clientes set morada=@morada WHERE cod_cliente=@cod_cliente AND nome=@nome", dbConn)
     dbCmd.Parameters.AddWithValue("@morada", TextBox11.Text)
     dbCmd.Parameters.AddWithValue("@cod_cliente", ComboBox1.Text)
     dbCmd.Parameters.AddWithValue("@nome", ComboBox2.Text)
     dbCmd.ExecuteNonQuery()
     dbCmd = Nothing
    
     dbConn.Close()
     dbConn.Dispose()
    
     MessageBox.Show("modificado registo com sucesso")


    MSN: poseidonfba@hotmail.com
    sexta-feira, 11 de junho de 2010 01:17

Todas as Respostas

  • Oi, eu dei uma arrumada no seu código, quando for usar sql sempre use com parametros, vc não precisa fazer este select antes do update que vc esta fazendo, e a conexão que vc passou estava errada, veja abaixo como seria bom ficar:

     Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
     dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Manekas\Desktop\PAP moviemanager\Movie teste 1\Movie teste 1\BD2.mdb;"
     dbConn.Open()
    
     Dim dbCmd As OleDbCommand
     dbCmd = New OleDbCommand("UPDATE Clientes set morada=@morada WHERE cod_cliente=@cod_cliente AND nome=@nome", dbConn)
     dbCmd.Parameters.AddWithValue("@morada", TextBox11.Text)
     dbCmd.Parameters.AddWithValue("@cod_cliente", ComboBox1.Text)
     dbCmd.Parameters.AddWithValue("@nome", ComboBox2.Text)
     dbCmd.ExecuteNonQuery()
     dbCmd = Nothing
    
     dbConn.Close()
     dbConn.Dispose()
    
     MessageBox.Show("modificado registo com sucesso")


    MSN: poseidonfba@hotmail.com
    sexta-feira, 11 de junho de 2010 01:17
  • Pode ser isso, vale a pena testar:

    Verifique a permissão de leitura e escrita sobre o arquivo .MDB em questão.

    Dê permissão de leitura/escrita ao usuário que está tentando acessar o .MDB (no caso, o usuário que está logado no Windows.)

    att.

    Anderson

     

     

    sexta-feira, 11 de junho de 2010 12:34
  • obrigadao!!!

    ja deu....

    ja agora para eliminar um registo.

     

    domingo, 13 de junho de 2010 21:27
  • obrigadao!!!

    ja deu....

    ja agora para eliminar um registo.

     


    segue o mesmo procedimento que o POSEIDON . deu-te. apenas usa o command Delete.

    Podes marcar como respondida.

     

    Thanks


    Just Be Humble Malange!
    domingo, 13 de junho de 2010 22:27
  • mas ainda tenho um problema, ja consigo inserir, alterar e excluir. mas tenho uma datagridview que tem sempre os mesmos dados desde que eu dou inicio á aplicação... Tipo se eu inserir mais um Cliente ele aparece na base de dados, mas nao aparece na DatagridView....

     

     

    domingo, 13 de junho de 2010 22:58