vasco16 Posted April 20, 2009 at 11:21 PM Report #257868 Posted April 20, 2009 at 11:21 PM boas pessoal, estou aqui com um problema: Private Sub guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles guardar.Click 'tipo e caminho da BD Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\vasco\Ambiente de trabalho\PROJECTO\stand.mdb;" 'instrução sql Dim strQuery As String = "UPDATE compras SET [id_processo]=@id_processo, [matricula]=@matricula, [marca]=@marca, [modelo]=@modelo, [categoria]=@categoria" Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn) 'dados a trabalhar dbCmd.Parameters.AddWithValue("@id_processo", id_compraTextBox.Text) dbCmd.Parameters.AddWithValue("@matricula", matriculatextbox.Text) dbCmd.Parameters.AddWithValue("@marca", marcaTextBox.Text) dbCmd.Parameters.AddWithValue("@modelo", modeloTextBox.Text) dbCmd.Parameters.AddWithValue("@categoria", categoriaTextBox.Text) dbConn.Open() Try MessageBox.Show("Os dados foram actualizados", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) novo.Visible = True procurar.Visible = True alterar.Visible = True apagar.Visible = True sair.Visible = True guardar.Visible = False cancelar.Visible = False Catch ex As Exception MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) End Try dbConn.Close() dbConn = Nothing dbCmd = Nothing End Sub a minha Bd diz que grava mas na realidade nao grava :s que tenho aqui de mal?
José Lopes Posted April 20, 2009 at 11:43 PM Report #257876 Posted April 20, 2009 at 11:43 PM penso que isso cria várias Bd's.... ve la se não está a gravar para uma cópia de original para ai na pasta DEBUG Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted April 20, 2009 at 11:47 PM Author Report #257878 Posted April 20, 2009 at 11:47 PM penso que isso cria várias Bd's.... ve la se não está a gravar para uma cópia de original para ai na pasta DEBUG cria varias BD como assim? nao, ele está a gravar para a Bd que está numa pasta que o projecto, mas na raiz da pasta.
José Lopes Posted April 20, 2009 at 11:50 PM Report #257880 Posted April 20, 2009 at 11:50 PM penso que há um tipo de conexão, que cria várias bd's.... mas agora que li melhor o teu codigo..onde é que estás a dar a instrução para gravar? Vejo os comandos todos, q criares objectos, a setar valores... mas isso nao tem que ter qualquer poisa tipo execute... Ps - é claro que diz que grava... é a primeira linha do try..nao significa é que tenha feito alguma coisa ;-) Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
esquima Posted April 21, 2009 at 12:06 AM Report #257884 Posted April 21, 2009 at 12:06 AM depois desta instrucao dbConn.Open() mete isto dbCmd .ExecuteNonQuery
Guest PauloR Posted April 21, 2009 at 12:14 AM Report #257885 Posted April 21, 2009 at 12:14 AM Não te falta o "WHERE" no UPDATE ? ou vais actualizar todo os registos da tabela? Alem disso falta: "dbCmd.ExecuteNonQuery" no inicio do try
vasco16 Posted April 21, 2009 at 08:10 AM Author Report #257906 Posted April 21, 2009 at 08:10 AM Não te falta o "WHERE" no UPDATE ? ou vais actualizar todo os registos da tabela? Alem disso falta: "dbCmd.ExecuteNonQuery" no inicio do try vou actualizar todos os campos da tabela, mas tenho de fazer uma condição. Obrigado 😉
vasco16 Posted April 21, 2009 at 08:29 AM Author Report #257908 Posted April 21, 2009 at 08:29 AM Como posso fazer uma condição que esteja relacionada com uma caixa de texto do meu formulario? por exemplo: WHERE id_processo = id_processotextbox.text
jpaulino Posted April 21, 2009 at 08:36 AM Report #257910 Posted April 21, 2009 at 08:36 AM vou actualizar todos os campos da tabela, mas tenho de fazer uma condição. Obrigado 😉 Não, não precisas, mas tens de executar o comando como o esquima e o PauloR já te disseram, usando o dbCmd.ExecuteNonQuery
vasco16 Posted April 21, 2009 at 08:39 AM Author Report #257911 Posted April 21, 2009 at 08:39 AM Não, não precisas, mas tens de executar o comando como o esquima e o PauloR já te disseram, usando o dbCmd.ExecuteNonQuery sim o fiz e já quer dar sinais que grava o meu problema é fazer com que grave o registo consoante um certo id_processo. O programa da-me erro "Erro de sintaxe (operador em falta) na expressão de consulta '@modeloWHERE id_processo = id_compratextbox.Text'. "
Guest PauloR Posted April 21, 2009 at 09:03 AM Report #257915 Posted April 21, 2009 at 09:03 AM sim o fiz e já quer dar sinais que grava o meu problema é fazer com que grave o registo consoante um certo id_processo. O programa da-me erro "Erro de sintaxe (operador em falta) na expressão de consulta '@modeloWHERE id_processo = id_compratextbox.Text'. " Se estás a usar o WHERE com o id_processo faz antes assim Private Sub guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles guardar.Click 'tipo e caminho da BD Dim iSQLStatus As Integer Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\vasco\Ambiente de trabalho\PROJECTO\stand.mdb;" 'instrução sql Dim strQuery As String = "UPDATE compras SET [matricula]=@matricula, [marca]=@marca, [modelo]=@modelo, [categoria]=@categoria WHERE id_processo = @id_processo" Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn) 'dados a trabalhar dbCmd.Parameters.AddWithValue("@matricula", matriculatextbox.Text) dbCmd.Parameters.AddWithValue("@marca", marcaTextBox.Text) dbCmd.Parameters.AddWithValue("@modelo", modeloTextBox.Text) dbCmd.Parameters.AddWithValue("@categoria", categoriaTextBox.Text) dbCmd.Parameters.AddWithValue("@id_processo", id_compratextbox.Text) dbConn.Open() Try iSQLStatus = Cmd.ExecuteNonQuery If iSQLStatus = 0 Then MsgBox("Erro") Else MessageBox.Show("Os dados foram actualizados", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) novo.Visible = True procurar.Visible = True alterar.Visible = True apagar.Visible = True sair.Visible = True guardar.Visible = False cancelar.Visible = False End If Catch ex As Exception MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) End Try dbConn.Close() dbConn = Nothing dbCmd = Nothing End Sub
vasco16 Posted April 21, 2009 at 09:06 AM Author Report #257916 Posted April 21, 2009 at 09:06 AM Se estás a usar o WHERE com o id_processo faz antes assim Private Sub guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles guardar.Click 'tipo e caminho da BD Dim iSQLStatus As Integer Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection() dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\vasco\Ambiente de trabalho\PROJECTO\stand.mdb;" 'instrução sql Dim strQuery As String = "UPDATE compras SET [matricula]=@matricula, [marca]=@marca, [modelo]=@modelo, [categoria]=@categoria WHERE id_processo = @id_processo" Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn) 'dados a trabalhar dbCmd.Parameters.AddWithValue("@matricula", matriculatextbox.Text) dbCmd.Parameters.AddWithValue("@marca", marcaTextBox.Text) dbCmd.Parameters.AddWithValue("@modelo", modeloTextBox.Text) dbCmd.Parameters.AddWithValue("@categoria", categoriaTextBox.Text) dbCmd.Parameters.AddWithValue("@id_processo", id_compratextbox.Text) dbConn.Open() Try iSQLStatus = Cmd.ExecuteNonQuery If iSQLStatus = 0 Then MsgBox("Erro") Else MessageBox.Show("Os dados foram actualizados", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) novo.Visible = True procurar.Visible = True alterar.Visible = True apagar.Visible = True sair.Visible = True guardar.Visible = False cancelar.Visible = False End If Catch ex As Exception MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) End Try dbConn.Close() dbConn = Nothing dbCmd = Nothing End Sub sim muito obrigado nao precisavas de perder tempo comigo :S so explicar mas obrigado:) olha o que faz esta variavel? Dim iSQLStatus As Integer ?
José Lopes Posted April 21, 2009 at 01:06 PM Report #257973 Posted April 21, 2009 at 01:06 PM Avalia se a execução comando correr bem ou não... ou seja.. é isto que deves testar para teres a certeza que foi executado. Se não estou em erro devolve-te 0 ou -1, sendo que o 0 significa que a coisa correu mal, e o -1 que o comando foi executado com sucesso. Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted April 21, 2009 at 04:23 PM Author Report #258013 Posted April 21, 2009 at 04:23 PM Avalia se a execução comando correr bem ou não... ou seja.. é isto que deves testar para teres a certeza que foi executado. Se não estou em erro devolve-te 0 ou -1, sendo que o 0 significa que a coisa correu mal, e o -1 que o comando foi executado com sucesso. ou seja a condição teria de ser If iSQLStatus < 0 Then
José Lopes Posted April 21, 2009 at 08:35 PM Report #258049 Posted April 21, 2009 at 08:35 PM o mais seguro seria: if iSQLStatus = 0 then msgbox ("O registo falhou") else msgbox ("O registo foi inserido com sucesso") End if Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
vasco16 Posted April 21, 2009 at 08:52 PM Author Report #258055 Posted April 21, 2009 at 08:52 PM o mais seguro seria: if iSQLStatus = 0 then msgbox ("O registo falhou") else msgbox ("O registo foi inserido com sucesso") End if obrigado:)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now