Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

guiilhas

Erro ao inserir dados na base de dados

Mensagens Recomendadas

guiilhas

Bons Dias, tudo bem pessoal ?

Eu precisava aqui de uma ajudinha porque o VB5 ta-me a dar um erro que nao  percebo o porque . Isto é trabalho de PAP e os profs nao querem ajudar . Basicamente o programa, actualmente, consiste na inserção de dados numa BD, futuramente um jogo tipo "Quem quer ser milionário".

O código que la está é:

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
    Dim constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|data directory|jogo.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
    Dim certa As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'JogoDataSet.pergunta' table. You can move, or remove it, as needed.
        Me.PerguntaTableAdapter.Fill(Me.JogoDataSet.pergunta)

        'TODO: This line of code loads data into the 'JogoDataSet.pergunta' table. You can move, or remove it, as needed.
        Me.PerguntaTableAdapter.Fill(Me.JogoDataSet.pergunta)
        'TODO: This line of code loads data into the 'JogoDataSet.pergunta' table. You can move, or remove it, as needed.
        Me.PerguntaTableAdapter.Fill(Me.JogoDataSet.pergunta)
        'TODO: This line of code loads data into the 'JogoDataSet.pergunta' table. You can move, or remove it, as needed.
        Me.PerguntaTableAdapter.Fill(Me.JogoDataSet.pergunta)
        PerguntaDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
        PerguntaDataGridView.AllowUserToAddRows = False
        PerguntaDataGridView.AllowUserToDeleteRows = False
        PerguntaDataGridView.EditMode = DataGridViewEditMode.EditProgrammatically
        Dim adapter_pergunta As New jogoDataSetTableAdapters.perguntaTableAdapter
        Dim tab_pergunta As New jogoDataSet.perguntaDataTable
        adapter_pergunta.Fill(tab_pergunta)
        Dim coluna As DataColumn
        For Each coluna In tab_pergunta.Columns
            PerguntaDataGridView.Columns.Add(coluna.ColumnName, coluna.ColumnName)
        Next
        Dim linha As DataRow
        Dim idx_linha As Integer
        Dim idx_coluna As Integer
        idx_linha = 0
        For Each linha In tab_pergunta.Rows
            Dim linha_datagrid As New DataGridViewRow
            PerguntaDataGridView.Rows.Add(linha_datagrid)
            idx_coluna = 0
            For Each coluna In tab_pergunta.Columns
                PerguntaDataGridView.Rows(idx_linha).Cells(idx_coluna).Value = tab_pergunta.Rows(idx_linha).Item(idx_coluna)
                idx_coluna = idx_coluna + 1
            Next
            idx_linha = idx_linha + 1
        Next
        Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
        Me.TextBox1.MaxLength = 200
        Me.TextBox2.MaxLength = 200
        Me.TextBox3.MaxLength = 200
        Me.TextBox4.MaxLength = 200
        Me.TextBox5.MaxLength = 200
        Dim adapter_dificuldade As New jogoDataSetTableAdapters.DificuldadeTableAdapter
        Dim tab_dificuldade As New jogoDataSet.DificuldadeDataTable
        Dim adapter_categoria As New jogoDataSetTableAdapters.categoriaTableAdapter
        Dim tab_categoria As New jogoDataSet.categoriaDataTable
        adapter_pergunta.Fill(tab_pergunta)
        Dim registo As DataRow
        For Each registo In tab_pergunta.Rows
            Me.ComboBox1.Items.Add(registo.Item(0))
            Me.ComboBox2.Items.Add(registo.Item(0))
        Next
    End Sub
    Function validar_dados() As Boolean
        If Len(Me.TextBox1.Text) < 1 Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Len(Me.TextBox2.Text) < 1 Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Len(Me.TextBox3.Text) < 1 Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Len(Me.TextBox4.Text) < 1 Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Len(Me.TextBox5.Text) < 1 Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Me.ComboBox1.Text = "" Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Me.ComboBox2.Text = "" Then
            validar_dados = False
            MsgBox("Erro ! ", MsgBoxStyle.Critical, Me.Text)
            Return False
        End If
        If Me.RadioButton1.Checked = True Then
            Me.RadioButton1.Text = "Resposta correcta"
            certa = Me.TextBox2.Text
        Else : Me.RadioButton1.Text = ""
            Return False
        End If
        If Me.RadioButton2.Checked = True Then
            Me.RadioButton2.Text = "Resposta correcta"
            certa = Me.TextBox3.Text
        Else : Me.RadioButton2.Text = ""
            Return False
        End If
        If Me.RadioButton3.Checked Then
            Me.RadioButton3.Text = True = "Resposta correcta"
            certa = Me.TextBox4.Text
        Else : Me.RadioButton3.Text = ""
            Return False
        End If
        If Me.RadioButton4.Checked = True Then
            Me.RadioButton4.Text = "Resposta correcta"
            certa = Me.TextBox5.Text
        Else : Me.RadioButton4.Text = ""
            Return False
        End If
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If validar_dados() = False Then Exit Sub
        Dim adapter_pergunta As New jogoDataSetTableAdapters.perguntaTableAdapter
        Try
            adapter_pergunta.Insert(Me.ComboBox1.Text, Me.ComboBox2.Text, Me.TextBox1.Text, Me.TextBox2.Text, Me.TextBox3.Text, Me.TextBox4.Text, Me.TextBox5.Text, certa)
            MsgBox("Sucesso")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub PerguntaBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Validate()
        Me.PerguntaBindingSource.EndEdit()
        Me.PerguntaTableAdapter.Update(Me.JogoDataSet.pergunta)

    End Sub
End Class

nao consigo por as imagens com o erro e interface  :wallbash:

ajudem sff pessoal , abraços fiquem bem  :bye2:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
paulo silva

Aconselho-te a fazer um try de maneira a detectares o erro.

 Try
'Aqui colocas o teu codigo
Catch ex As Exception
' Aqui por exemplo
msgbox(ex.message)
End Try    

vejo que já tens o try agora tens de dizer que erro dá

Cumprimentos Paulo Silva

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Olá guiilhas, bem-vindo.

Explica-me em que sentido "AJUDA SFF, URGENTE!" está relacionado com inserção de dados na base de dados?

Os títulos devem sempre sintetizar numa pequena frase o âmbito do teu post.

Seria muito mais fácil de descobrir ajuda para inserir dados quando se encontra um título como "Inserir dados numa base de dados" não achas?

Vou alterar este post. Futuramente gostaria que levasses isto em conta :thumbsup:

Quanto ao teu problema, podias fornecer um pouco mais de informação. Quando a aplicação rebenta, o depurador passa-te uma mensagem de erro, que como o paulo silva reparou, até te está a saltar no ecrã através de uma messagebox.

Um aparte: Por VB5 querias dizer VB2005 ? São coisas perfeitamente diferentes.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
guiilhas

Boa Tarde , desde ja um obrigado pela disponibilidade que tem dado ao meu problema. O que se sucede é que ao fazer RUN , ele nao executa , da-me um erro do genero "Nao é possivel adicionar linhas de codigo a um Datagriedview vinculado a dados" na seguinte linha do codigo : PerguntaDataGridView.Rows.Add(linha_datagrid)

Como eu nao consigo postar imagens , deixo o meu mail pra se alguem quiser ver um print do erro . guiilhermeguimaraes@hotmail.com

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
flaviojef

talvez o teu problema seja mesmo na inserção dos dados na tua base de dados tenta isto que eu fiz à algum tempo é capaz de dar: (Testado)

'caminho da base de dados
        Dim caminho_bdd As String = _
    "Data Source=.\SQLEXPRESS;AttachDbFilename='colocas aqui o teu caminho da base de dados.mdf';" & _
    ";Integrated Security=True;User Instance=True"
        'comando de sql que se pretende, neste caso for para inserir registo
        Dim SQl As String = "INSERT INTO Registo(,,,[confirme_pass],[data_nascimento])Values(@nome,@nick,@password,@confirme_pass,@data_nascimento);"
        'conecçao a bd
        Dim connection As New SqlConnection(caminho_bd)
        'definir uma variavel para guardar os valores que se pretende enviar para a base de dados
        Dim valores As New SqlCommand(SQl, connection)
        valores.Parameters.Add("@nome", SqlDbType.VarChar).Value = txt_nome.Text
        valores.Parameters.Add("@nick", SqlDbType.VarChar).Value = txt_nick.Text
        valores.Parameters.Add("@password", SqlDbType.VarChar).Value = txt_pass.Text
        valores.Parameters.Add("@confirme_pass", SqlDbType.VarChar).Value = txt_confirme.Text
        valores.Parameters.Add("@data_nascimento", SqlDbType.DateTime).Value = data1.Value

Dim x As Integer = valores.ExecuteNonQuery()

If x=1 then
MsgBox("Cliente registado")
End If

  ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        valores = Nothing

Á partida é capaz de resolver o teu caso para registares. eu fiz assim e funciona na perfeição, agora se quiseres ver os dados registados, isso fazes com uma datagridview e em vez de colocares INSERT INTO colocas SELECT * FROM "nome da tabela"

espero que resolva o teu caso

Cumpz

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
guiilhas

Eu ja tenho datagriedview e tudo mais , mas o que se sucede é que ele nao permite a execuçao do programa pois aparece o erro acima citado . O que eu compreendi do que codigo enviado , foi que isso ira criar uma password ( que me sera viável mas so nuns passos mais a frente), mas eu quero é compreender o erro que efectivamente nao me permite a abertura do programa.  :P

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.