Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Não insere na tabela (VB2005 + SQL2005)


J4P0N315

Pergunta

Olá, pessoal...

Gostaria muito que você me ajudassem num sisteminha que eu estou montando.

Eu tenho a seguinte tabela:

create table produtos(
id_prod int identity(1,1) not null,
nome_prod varchar(30) not null,
descricao_prod varchar(100),
corredor_prod varchar(10),
prateleira_prod varchar(10),
qtde_prod int not null,
qtdeMin_prod int,
fornecedores_id_forn int not null
)
alter table produtos add constraint pk_id_prod primary key(id_prod)
alter table produtos add constraint fk_fornecedores_id_forn foreign key(fornecedores_id_forn) references fornecedores(id_forn)
Montei o seguinte form para inserir dados nesta tabela:
Private Sub cmdCadastrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCadastrar.Click
        sqlconnection = New SqlConnection(conexao)
        stringsql = "insert into produtos values ('" & txtNome.Text & "','" & txtDescricao.Text & "','" & txtCorredor.Text & "','" & txtPrateleira.Text & "'," & txtQtde.Text & "," & txtQtdeMin.Text & "," & txtIdForn.Text & ")"
        sqlcommand = New SqlCommand(stringsql, sqlconnection)
        Try
            sqlcommand.ExecuteNonQuery()
        Catch ex As Exception
        Finally
            sqlconnection.Close()
        End Try
    End Sub

O engraçado é que não insere dados de jeito nenhum nesta tabela, não retorna nenhuma msg de erro e não aparece nada na "Error List" do VB. Outros forms inserem dados em outras tabelas.

A única coisa de diferente entre elas é que nesta tabela existem dados do tipo Integer. Mas como vocês podem ver, eu não coloquei as "aspas simples" nas TextBox que irão receber os valores numéricos.

Além disso, já tentei inserir os dados destas TextBox em variáveis Integer, inserir em variáveis do tipo String e converter com o Cint, etc... mas nada faz inserir.

Tentei seguir as dicas do tópico abaixo, mas não tinha muito a ver!

http://scriptbrasil.com.br/forum/index.php?showtopic=141831

Sinceramente, não sei o que está acontecendo. Não retornar nenhuma msg de erro me deixou intrigado!

Sou iniciante se tratando de desenvolvimento, mas gosto muito! :)

Espero que vocês consigam me ajudar...

Desde já, agradeço! :)

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Tirando o try...catch você poderá ver o código do erro e com isso será mais fácil encontrar o problema.

Ao invés de:

Try
            sqlcommand.ExecuteNonQuery()
        Catch ex As Exception
        Finally
            sqlconnection.Close()
        End Try
Utilize:
sqlcommand.ExecuteNonQuery()
sqlconnection.Close()

E poste o erro aqui.

Link para o comentário
Compartilhar em outros sites

  • 0

Ahn...

Entendi! :)

Na verdade, como sou iniciante, nem sabia ao certo para que servia o "Try, Catch e Finally". Pensava que isso fazia parte do código necessário para inserir num BD SQL2005. Só agora, que começou a dar esse erro, que eu pesquisei e vi que é algo para retornar uma resposta ao erro e executar um código obrigatório (se eu entendi errado, por favor, me corrijam).

Assim que eu botar a mão no sistema, eu vou tentar corrigir e retornar uma resposta para vocês! :)

Obrigado pelas respostas.

:D

Link para o comentário
Compartilhar em outros sites

  • 0

Try 
           'A execução inicia aqui dentro do Try
           'se acontecer algum erro qualquer a execução passa para o Catch
           'Então se o método sqlcommand.ExecuteNonQuery() estiver dando erro
           'o programa não vai parar, a execução sera passada para o Catch
           sqlcommand.ExecuteNonQuery()
Catch ex As Exception 
            'Aqui você pode tratar o erro ou mostra-lo, exemplo para mostrar o erro:
             messagebox.show(ex.message.tostring)
             'O erro não estava surgindo porque você não mostrava nada aqui dentro
Finally 
            'Aqui seu código obrigatoriamente será executado
            sqlconnection.Close()
End Try

É isso, não sei se ficou claro mas tentei explicar de uma maneira bem simples.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal

Consegui resolver o meu problema! :)

Ao retirar o bloco "Try, Catch e Finally", o VB me retornou a seguinte mensagem de erro:

The INSERT statement conflicted with the FOREIGN KEY constraint "fk_fornecedores_id_forn". The conflict occurred in database "estocando1.0", table "dbo.fornecedores", column 'id_forn'.
The statement has been terminated.

Como a tabela "Produtos" tem uma foreign key de um campo da tabela "Fornecedores", resolvi adicionar um cadastro na tabela "Fornecedores".

Resultado: O erro foi solucionado.

Um erro muito besta, por sinal! :S

Mas é isso aí! Se não desse erro, não teria graça! :)

Agradeço imensamente a todos pela valiosa ajuda! :D

Abraços...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...