Respondido como actualizar dados no Access com VB 2008

  • sexta-feira, 11 de junho de 2010 00:49
     
      Contém Código

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

     

     

Todas as Respostas

  • sexta-feira, 11 de junho de 2010 01:17
     
     Respondido Contém Código

    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 12:34
     
     

    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

     

     

  • domingo, 13 de junho de 2010 21:27
     
     

    obrigadao!!!

    ja deu....

    ja agora para eliminar um registo.

     

  • domingo, 13 de junho de 2010 22:27
    Moderador
     
     

    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:58
     
     

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