Jump to content

Recommended Posts

Posted

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?

Posted

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.

Posted

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á!!

Posted

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

Posted

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 😉

Posted

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

Posted

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

Posted

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
Posted

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 ?

Posted

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á!!

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.