StonerX Publicado 8 Abril 2011 (editado) Boa noite pessoal, Foi-me proposto que criasse um programa em VB que se complementasse com uma BD em Access. Já consegui fazer um "Inserir" e um "Listar", mas dá-me erro a fazer o "Alterar" e o "Eliminar". Alguém me pode ajudar? Este é o código que tenho para o alterar: Dim myConn As Data.OleDb.OleDbConnection = New Data.OleDb.OleDbConnection("Provider= Microsoft.ACE.OLEDB.12.0 ;Data Source= C:\Users\Afonso\Desktop\Projecto Empresa\VB - Empresa\VB - Empresa\bin\Debug\BD Empresa.accdb") Dim n As Integer n = tb1.Text Dim MySQL As String = "Update TabelaGeral Set [NomeProduto] = @NomeProduto, [PrecoUnitario] = @PrecoUnitario, [iVA] = @IVA, [QuantidadeStock] = @QuantidadeStock Where " & n & " = @Codigo Produto" Dim Cmd As New Data.OleDb.OleDbCommand(MySQL, myConn) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@CodigoProduto", tb1.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@NomeProduto", TextBox1.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@PrecoUnitario", TextBox2.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@IVA", TextBox3.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@QuantidadeStock", TextBox4.Text)) myConn.Open() Cmd.ExecuteNonQuery() --------- Quanto está a ler dá erro aqui! --------- myConn.Close() MsgBox("O produto - " & TextBox1.Text & " - foi alterado com êxito.") Obrigado! Editado 8 Abril 2011 por StonerX Compartilhar este post Link para o post
FMmaniac Publicado 8 Abril 2011 Dim MySQL As String = "Update TabelaGeral Set [NomeProduto] = @NomeProduto, [PrecoUnitario] = @PrecoUnitario, [iVA] = @IVA, [QuantidadeStock] = @QuantidadeStock Where " & n & " = @Codigo Produto" esta linha tens no fim @Codigo Produto separado por espaço penso que seja esse o problema coloca @CodigoProduto... Compartilhar este post Link para o post
StonerX Publicado 8 Abril 2011 Dá este erro na mesma: Tipo de dados incorrecto na expressão de critérios. Compartilhar este post Link para o post
Guest Masha Publicado 8 Abril 2011 Tu nunca chegas a usar a variavel "n" que declaraste? Compartilhar este post Link para o post
StonerX Publicado 8 Abril 2011 Neste caso uso, mas acho que não é preciso, dá para fazer de diferentes maneiras, mas sempre que tento dá-me este erro... Não sei resolvê-lo :confuso: Compartilhar este post Link para o post
FMmaniac Publicado 8 Abril 2011 (editado) tenta colocar os campos @codigoproduto como "@codigoproduto" ou '@codigoproduto' Editado 8 Abril 2011 por FMmaniac Compartilhar este post Link para o post
StonerX Publicado 8 Abril 2011 Não sei se isto é melhor ou pior, mas agora já diz que foi alterado mas não altera nada :facepalm: O código neste momento está assim: Dim myConn As Data.OleDb.OleDbConnection = New Data.OleDb.OleDbConnection("Provider= Microsoft.ACE.OLEDB.12.0 ;Data Source= C:\Users\Afonso\Desktop\Projecto Empresa\VB - Empresa\VB - Empresa\bin\Debug\BD Empresa.accdb") Dim n As Integer = tb1.Text Dim MySQL As String = "Update TabelaGeral Set [NomeProduto] = '@NomeProduto', [PrecoUnitario] = @PrecoUnitario, [iVA] = @IVA, [QuantidadeStock] = @QuantidadeStock Where " & n & " = @CodigoProduto" Dim Cmd As New Data.OleDb.OleDbCommand(MySQL, myConn) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@CodigoProduto", tb1.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("'@NomeProduto'", TextBox1.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@PrecoUnitario", TextBox2.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@IVA", TextBox3.Text)) Cmd.Parameters.Add(New Data.OleDb.OleDbParameter("@QuantidadeStock", TextBox4.Text)) myConn.Open() Cmd.ExecuteNonQuery() myConn.Close() MsgBox("O produto - " & TextBox1.Text & " - foi alterado com êxito.") Compartilhar este post Link para o post
FMmaniac Publicado 8 Abril 2011 Dim MySQL As String = "Update TabelaGeral Set [NomeProduto] = '@NomeProduto', [PrecoUnitario] = @PrecoUnitario, [iVA] = @IVA, [QuantidadeStock] = @QuantidadeStock Where " & n & " = @CodigoProduto" substitui por isto Dim MySQL As String = "Update TabelaGeral Set NomeProduto = "@NomeProduto", PrecoUnitario = "@PrecoUnitario", IVA = "@IVA", QuantidadeStock = "@QuantidadeStock" Where " & n & " =" @CodigoProduto" Compartilhar este post Link para o post
StonerX Publicado 9 Abril 2011 Já tentei, dá erro, acho que é por na sintaxe do update, é com aspas até ao fim, ou senão posso tentar de outra maneira, mas tenho de por "&" em todo o lado Compartilhar este post Link para o post