• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vasco16

botao nao grava

16 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ;-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

depois desta instrucao  dbConn.Open() 

mete isto

dbCmd .ExecuteNonQuery

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o mais seguro seria:

if iSQLStatus = 0 then

  msgbox ("O registo falhou")

else

  msgbox ("O registo foi inserido com sucesso")

End if

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o mais seguro seria:

if iSQLStatus = 0 then

msgbox ("O registo falhou")

else

msgbox ("O registo foi inserido com sucesso")

End if

obrigado:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora