ERRO AO USAR PARÂMETROS
Boa tarde, seguindo exemplos tanto do VBM como de outros sites, montei consulta My-SQL com parâmetros e funciona lindamente, mas ao tentar usar esse mesmo esquema com oledb e banco Access (.mdb) os dados são inseridos de forma errônea, segue abaixo o codigo quer estou usando
obs: dscN e dscV são classes com os valores a serem lançados
os valores estão corretos Diretor com nome de diretor, cardo com cargo de diretor
se puderem me dizer onde estou errando....
Dim sSql As String = [Ô][Ô]
Dim Conn As New OleDbConnection
Dim cmd As OleDbCommand
Conn.ConnectionString = AcessoDados.GetConnectionString([Ô][Ô])
cmd = New OleDbCommand
cmd.Connection = Conn
sSql = [Ô]UPDATE Diretoria SET Diretor1=@Diretor1, Cargo1=@Cargo1, Diretor2=@Diretor2, Cargo2=@Cargo2, [Ô] _
& [Ô]Diretor3=@Diretor3, Cargo3=@Cargo3 WHERE Diretor1=@Diretor1Vel AND Cargo1=@Cargo1Vel[Ô]
cmd.Connection.Open()
cmd.CommandText = sSql
cmd.Parameters.AddWithValue([Ô]@Diretor1[Ô], dscN.Diretor1)
cmd.Parameters.AddWithValue([Ô]@Diretor2[Ô], dscN.Diretor2)
cmd.Parameters.AddWithValue([Ô]@Diretor3[Ô], dscN.Diretor3)
cmd.Parameters.AddWithValue([Ô]@Cargo1[Ô], dscN.Cargo1)
cmd.Parameters.AddWithValue([Ô]@Cargo2[Ô], dscN.Cargo2)
cmd.Parameters.AddWithValue([Ô]@Cargo3[Ô], dscN.Cargo3)
[ô]-----
cmd.Parameters.AddWithValue([Ô]@Diretor1Vel[Ô], dscV.Diretor1)
cmd.Parameters.AddWithValue([Ô]@Cargo1Vel[Ô], dscV.Cargo1)
cmd.ExecuteNonQuery()
cmd.Connection.Close()
cmd.CommandText = Nothing
cmd.Connection = Nothing
obs: dscN e dscV são classes com os valores a serem lançados
os valores estão corretos Diretor com nome de diretor, cardo com cargo de diretor
se puderem me dizer onde estou errando....
DifÃcil dizer o que está errado sem saber ao menos a mensagem de erro...
Os seus parâmetros devem seguir exatamente a ordem que está no comando SQL, portanto, você deve ter @Diretor1, @Cargo1, etc.
KERPLUNK, não dá mensagem de erro, salva os dados fora de ordem
vou fazer como o FFCOUTO falou pra ver se funfa
vou fazer como o FFCOUTO falou pra ver se funfa
Minha dica é você utilizar Try Catch e Finally quando abre e fecha a conexão com banco de dados..
Faça com o FCouto disse e aproveite para dar uma organizada também fica muito mais limpo seu código:
Faça com o FCouto disse e aproveite para dar uma organizada também fica muito mais limpo seu código:
Dim objCmd As New MySqlCommand(sql, objConexao) (< uso mysql)
objCmd.Parameters.AddWithValue([Ô]@Diretor1[Ô], [Ô]dscN.Diretor1[Ô])
objCmd.Parameters.AddWithValue([Ô]@Cargo1[Ô], [Ô]dscN.Cargo1[Ô])
Try
objConexao.Open()
objCmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show([Ô]Falha de conexão com Banco de Dados[Ô],[Ô]Aviso[Ô])
[ô]Messagebox.Show(ex.ToString)
Finally
objConexao.Close()
End Try
é o que o FFCOUTO disse, o que acontece é que com o banco de dados do Access, apesar de você poder usar parâmetros nomeados na SQL ele na verdade não suporta isso, ele precisa é que todos os parâmetros estejam na ordem que está na SQL
Realmente OCELOT, segui a dica do FFCOUTO e resolveu o problema
Agora tenho quer me atentar para sempre que mexer com Access colocar os parametros em orderm rsrsrsrs
Agora tenho quer me atentar para sempre que mexer com Access colocar os parametros em orderm rsrsrsrs
Tópico encerrado , respostas não são mais permitidas