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

Valadas

[RESOLVIDO] Botão guardar duas tabelas

15 mensagens neste tópico

Tenho o código para o botão guardar, mas não vai guardar nada...  :hmm:

Se alguém pudesse dar uma vista de olhos no código e ver o que tenho de errado...  :)

Imports System.Data.OleDb


Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try

            Dim lm As String = "INSERT INTO `Perfil_Jogadores` (`ID_Jogador`, `Nome_jogador`, `Data_nasc`, `Cidade_natal`, `Pais`, `Posicao`, `Ordenado_semanal`, `Estado`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?)"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)




                command.Parameters.Add("nome_jogador", OleDbType.VarChar).Value = TextBox2.Text()




                ' If FotoPictureBox.Text.Trim <> String.Empty Then

                'command.Parameters.Add("Foto", OleDbType.).Value = FotoPictureBox.Text
                'Else
                ' command.Parameters.Add("Foto", OleDbType.bipmap).Value = 0
                'End If

                'command.Parameters.Add("Foto", OleDbType.Integer).Value = FotoPictureBox.Text


                If DateTimePicker1.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Data_nasc", OleDbType.Date).Value = DateTimePicker1.Text
                Else
                    command.Parameters.Add("Data_nasc", OleDbType.Date).Value = 0
                End If



                command.Parameters.Add("Cidade_natal", OleDbType.VarChar).Value = TextBox4.Text


                command.Parameters.Add("Pais", OleDbType.VarChar).Value = TextBox5.Text

                command.Parameters.Add("Posicao", OleDbType.VarChar).Value = TextBox6.Text

                If TextBox7.Text.Trim <> String.Empty Then

                    command.Parameters.Add("Ordenado_semanal", OleDbType.Currency).Value = TextBox7.Text
                Else
                    command.Parameters.Add("Ordenao_semanal", OleDbType.Currency).Value = 0
                End If

                'command.Parameters.Add("Ordenado_semanal", OleDbType.VarChar).Value = Ordenado_semanalTextBox.Text

                command.Parameters.Add("Estado", OleDbType.VarChar).Value = TextBox8.Text




                ' Abre a ligação e insere o registo
                connection.Open()
                Dim x As Integer = command.ExecuteNonQuery()
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível inserir o registo na base de dados!")

                End If

            End Using

        Catch ex As Exception

        End Try
        Try

            Dim lm2 As String = "INSERT INTO `Clubes` (`Clube`) VALUES ( ?)"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm2, connection)

                'pergunta se quer guardar ou nao
                Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNoCancel)
                If msg = MsgBoxResult.Yes Then

                    command.Parameters.Add("Clube", OleDbType.VarChar).Value = TextBox3.Text()

                ElseIf msg = MsgBoxResult.No Then
                End If

                If msg = MsgBoxResult.Cancel Then
                    Form1.Show()
                    Me.Close()

                End If





                ' Abre a ligação e insere o registo
                connection.Open()
                Dim x As Integer = command.ExecuteNonQuery()
                If x <> 1 Then
                    Throw New ArgumentException("Não foi possível inserir o registo na base de dados!")

                End If

            End Using
        Catch ex As Exception

        End Try
    End Sub
End class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A difrença e que nos values ele poe @Campo1, @Campo2 e depois nos parameters ele substitui os @campo1 e @campo2 pelas textbox e tu so tens nos values ? e ? e depois tentas substituir no parameter o value ?Campo1 que nao existe pois so existe ?, ?, ? e ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A difrença e que nos values ele poe @Campo1, @Campo2 e depois nos parameters ele substitui os @campo1 e @campo2 pelas textbox e tu so tens nos values ? e ? e depois tentas substituir no parameter o value ?Campo1 que nao existe pois so existe ?, ?, ? e ?

Nao percebi :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dim lm As String = "INSERT INTO `Perfil_Jogadores` (`ID_Jogador`, `Nome_jogador`, `Data_nasc`, `Cidade_natal`, `Pais`, `Posicao`, `Ordenado_semanal`, `Estado`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?)"

            ' Inicia uma ligação à base de dados
            Using connection As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

                ' Define o comando e os parâmetros
                Dim command As New OleDbCommand(lm, connection)




                command.Parameters.Add("nome_jogador", OleDbType.VarChar).Value = TextBox2.Text()

O que ele ta a fazer e alterar o nome do campo para o qual insere... o que ele tem de fazer e no valor inserir  uma key do tipo @Nome_Jogador e depois fazer:

command.Parameters.Add("@Nome_jogador", OleDbType.VarChar).Value = TextBox2.Text()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que ele ta a fazer e alterar o nome do campo para o qual insere... o que ele tem de fazer e no valor inserir  uma key do tipo @Nome_Jogador e depois fazer:

command.Parameters.Add("@Nome_jogador", OleDbType.VarChar).Value = TextBox2.Text()

Mas isso é o que eu tenho e não grava!!!!  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas isso é o que eu tenho e não grava!!!!  :wallbash:

Try

    ' código

Catch ex As Exception

End Try

Sem nada na exception só se utiliza quando se quer que o erro (caso aconteça) seja ignorado. É como um "On Error Resume Next".

Agora NUNCA se faz quando se está a desenvolver, porque qualquer erro que a aplicação dê, não se sabe o resultado.

Coloca lá uma MessageBox.Show(ex.message) e diz qual é o erro que está a dar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"Não foi fornecido nenhum valor para um ou mais parâmetros necessários"

:P:):P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"Não foi fornecido nenhum valor para um ou mais parâmetros necessários"

:P:):P

problema resolvido...  :D

Ou seja, estavas a definir na instrução SQL 8 campos e a adicionar 7, certo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja, estavas a definir na instrução SQL 8 campos e a adicionar 7, certo ?

Nem mais...  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como te disse no outro dia, investiga mais um bocado sobre sql, as teus erros normalmente consistem nas instrucoes de sql

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