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

slocun

codigo inserir

9 mensagens neste tópico

Ola Pessoal!

eu preciso duma ajuda aqui com um código que me está a dar o seguinte erro:

Falta um ponto e vírgula (:D no fim da instrução SQL.

Descrição: Excepção não processada ao executar o pedido Web actual. Consulte o rastreio da pilha para obter mais informações sobre o erro e o respectivo ponto de origem no código.

Detalhes da excepção: System.Data.OleDb.OleDbException: Falta um ponto e vírgula (:thumbsup: no fim da instrução SQL.

código:

Sub inserir_Click(ByVal obj As Object, ByVal arg As ImageClickEventArgs)

        Dim t1, t2, t3, t4, t5, t6 As String

        Dim nr As Long

        nr = txt1.Text

        t1 = txt3.Text

        t2 = txt4.Text

        t3 = txt5.Text

        t4 = txt6.Text

        t5 = txt7.Text

        t6 = txt8.Text

        Dim conexao As OleDbConnection

        Dim Comando As OleDbCommand

        Dim sql As String

        conexao = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & MapPath("cadastro.mdb"))

        conexao.Open()

        Dim SQLSt As String

        Dim dr As OleDbDataReader

        If txt1.Text = "" Then

            Lbl.Text = "O campo 'Nº Cliente' têm de ser obrigatóriamente preenchido!"

        Else

            SQLSt = "SELECT Nr FROM Cliente WHERE Nr =" & nr

            Comando = New OleDbCommand(SQLSt, conexao)

            dr = Comando.ExecuteReader

            Comando.Dispose()

            If dr.Read Then

                Lbl.Text = "Registo inserido!"

                sql = "INSERT INTO Bem (Identificacao_Bem, Data_Aquisicao, Nr_Serie, Valor_Aquisicao, Fornecedor, Documento) values ('" & t1 & "', '" & t2 & "', '" & t3 & "', '" & t4 & "', '" & t5 & "', '" & t6 & "')  where Nr =" & nr

                Comando = New OleDbCommand(sql, conexao)

                Comando.ExecuteNonQuery()

                conexao.Close()

            Else

                Lbl.Text = "Este registo não existe!"

            End If

        End If

    End Sub

---------------------------

estrutura da BD:

tabela cliente: nr (chave), nome

tabela bem: nr_bem (chave), nr (ligação com 'nr' da tabela cliente), Identificacao_Bem, Data_Aquisicao, Nr_Serie, Valor_Aquisicao, Fornecedor, Documento

não percebo a origem deste erro...

caso eu introduza um ponto e virgula no final da instrução sql, dá-me o seguinte erro:

Erro de compilação

Descrição: Erro ao compilar um recurso necessário para efectuar este pedido. Consulte os detalhes do erro específico que se segue e modifique o código fonte conforme apropriado.

Mensagem de erro do compilador: BC30037: Character is not valid.

Alguem sabe o que se passa?

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi,

Faz o debug da pagina e mostra o resultado do sql antes do ExecuteNonQuery()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ola jpaulino!

será que poderia explicar como se faz esses passos que sugeriu?

ainda sou um novato nestas coisas...

obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Seleccionas esta linha "Comando = New OleDbCommand(sql, conexao)" e pressionas F9 para inserires um breackpoint. Depois quando o compilador parar na linha (fica a amarelo) seleccionas a palavra "sql" e vai aparecer o texto que está nessa string. Podes ainda seleccional a string "sql" e pressionar em SHIFT+F9.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem...ja seleccionei a linha, carreguei o  F9, agora com activo o compilador?

cumps...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deve estar com uma marcação por cima correcto ? Corre o programa e ele vai parar aí.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim...ficou marcado a vermelho...

ja corri o programa, só depois de carregar no botao "inserir" é que ele da erro!

voltei ao códgio e a instrução permaneceu vermelha...

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jpaulino obrigado pela ajuda, mas eu consegui achar o problema :)

era o seguinte...

eu tinha a sql da seguinte forma:

sql = "INSERT INTO Bem (Identificacao_Bem, Data_Aquisicao, Nr_Serie, Valor_Aquisicao, Fornecedor, Documento) values ('" & t1 & "', '" & t2 & "', '" & t3 & "', '" & t4 & "', '" & t5 & "', '" & t6 & "')  where Nr =" & nr

e alterei para:

sql = "INSERT INTO Bem (Nr,Identificacao_Bem, Data_Aquisicao, Nr_Serie, Valor_Aquisicao, Fornecedor, Documento, obs) values ('" & nr & "', '" & t1 & "', '" & t2 & "', '" & t3 & "', '" & t4 & "', '" & t5 & "', '" & t6 & "', '" & t7 & "')"

assim ja insere e resolvi o meu problema...

obrigado por tudo!

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É sempre importante analisar bem o código!

Boa sorte.

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