Jump to content

Botao Guardar para varias tabelas


Batista15
 Share

Recommended Posts

Boas Pessoal, a minha questão e a seguinte, com este código guardo todos os campos que tenho na form mas em apenas uma tabela, e queria guardar o resto dos campos das outras tabelas alguem que me ajude? Thanks ;D

Ps. E as checkbocks estao em comentario porqe nao sei se sao em ValChar, Integer...

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

            'Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`, `Altura`, `Tipo_Diabetes`, `Insulinoterapia`, `IMC`, `Hiperlipidemia`, `Habitos_alcoolicos`, `Habitos_tabagicos`, `Hipertensao`, `Obesidade`, `Antecedentes_Pessoais`, `Auto_Vigilancia`, `Defice_Visual`, `Amputacao`, `Dialise`, `Enfarte`, `AVC`, `Lesao_pes`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"

            Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`, `IMC`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"

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

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

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

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

                        command.Parameters.Add("Id_CLiente", OleDbType.Integer).Value = Id_ClienteTextBox.Text
                    Else
                        command.Parameters.Add("Id_Cliente", OleDbType.Integer).Value = 0
                    End If


                    command.Parameters.Add("Nome", OleDbType.VarChar).Value = NomeTextBox.Text()

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

                        command.Parameters.Add("Idade", OleDbType.Integer).Value = IdadeTextBox.Text
                    Else
                        command.Parameters.Add("Idade", OleDbType.Integer).Value = 0
                    End If

                    command.Parameters.Add("Morada", OleDbType.VarChar).Value = MoradaTextBox.Text()

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

                        command.Parameters.Add("Peso", OleDbType.Integer).Value = PesoTextBox.Text
                    Else
                        command.Parameters.Add("Peso", OleDbType.Integer).Value = 0
                    End If



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

                        command.Parameters.Add("Altura", OleDbType.Decimal).Value = AlturaMaskedTextBox.Text
                    Else
                        command.Parameters.Add("Altura", OleDbType.Decimal).Value = 0
                    End If

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

                        command.Parameters.Add("Tipo_Diabetes", OleDbType.Integer).Value = Tipo_DiabetesComboBox.Text
                    Else
                        command.Parameters.Add("Tipo_Diabetes", OleDbType.Integer).Value = 0
                    End If


                    'command.Parameters.Add("Insulinoterapia", OleDbType.VarChar).Value = InsulinoterapiaCheckBox.Text()



                    command.Parameters.Add("IMC", OleDbType.Decimal).Value = IMCTextBox.Text()


                    



                    'command.Parameters.Add("Hiperlipidemia", OleDbType.VarChar).Value = HiperlipidemiaCheckBox.Text


                    'command.Parameters.Add("Habitos_alcoolicos", OleDbType.VarChar).Value = Habitos_alcoolicosCheckBox.Text

                    'command.Parameters.Add("Habitos_tabagicos", OleDbType.VarChar).Value = Habitos_tabagicosCheckBox.Text

                    'command.Parameters.Add("Hipertensao", OleDbType.VarChar).Value = HipertensaoCheckBox.Text()

                    'command.Parameters.Add("Obesidade", OleDbType.VarChar).Value = ObesidadeCheckBox.Text()

                    'command.Parameters.Add("Antecedentes_Pessoais", OleDbType.VarChar).Value = Antecedentes_PessoaisTextBox.Text()

                    'command.Parameters.Add("Auto_Vigilancia", OleDbType.VarChar).Value = Auto_VigilanciaCheckBox.Text()

                    'command.Parameters.Add("Defice_Visual", OleDbType.VarChar).Value = Defice_VisualCheckBox.Text()

                    'command.Parameters.Add("Amputacao", OleDbType.VarChar).Value = AmputacaoCheckBox.Text()

                    ' command.Parameters.Add("Dialise", OleDbType.VarChar).Value = DialiseCheckBox.Text()

                    'command.Parameters.Add("Enfarte", OleDbType.VarChar).Value = EnfarteCheckBox.Text()

                    'command.Parameters.Add("AVC", OleDbType.VarChar).Value = AVCCheckBox.Text()

                    'command.Parameters.Add("Lesao_pes", OleDbType.VarChar).Value = Lesao_pesCheckBox.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

            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try
    End Sub
Link to comment
Share on other sites

e nesse 2º insert não estás a colocar o código assim deste estilo pois não?

Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`, `IMC`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"

se sim, aconselho-te que alteres o nome da variável no segundo insert por exemplo para:

Dim lm2 As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`, `IMC`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
Link to comment
Share on other sites

e nesse 2º insert não estás a colocar o código assim deste estilo pois não?

Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`, `IMC`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"

se sim, aconselho-te que alteres o nome da variável no segundo insert por exemplo para:

Dim lm2 As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`, `IMC`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"

Vou tentar, mas sim estava a fazer igual ao outro insert

Link to comment
Share on other sites

Mostra lá o codigo !

1º O nome na combobox repete-se

2º depois se me puder dizer como declaro os checkbocks

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

            'Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`, `Altura`, `Tipo_Diabetes`, `Insulinoterapia`, `IMC`, `Hiperlipidemia`, `Habitos_alcoolicos`, `Habitos_tabagicos`, `Hipertensao`, `Obesidade`, `Antecedentes_Pessoais`, `Auto_Vigilancia`, `Defice_Visual`, `Amputacao`, `Dialise`, `Enfarte`, `AVC`, `Lesao_pes`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"

            Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`) VALUES (?, ?, ?, ?, ?, ?, ?)"

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

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

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

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

                        command.Parameters.Add("Id_CLiente", OleDbType.Integer).Value = Id_ClienteTextBox.Text
                    Else
                        command.Parameters.Add("Id_Cliente", OleDbType.Integer).Value = 0
                    End If


                    command.Parameters.Add("Nome", OleDbType.VarChar).Value = NomeTextBox.Text()

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

                        command.Parameters.Add("Idade", OleDbType.Integer).Value = IdadeTextBox.Text
                    Else
                        command.Parameters.Add("Idade", OleDbType.Integer).Value = 0
                    End If

                    command.Parameters.Add("Morada", OleDbType.VarChar).Value = MoradaTextBox.Text()

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

                        command.Parameters.Add("Peso", OleDbType.Integer).Value = PesoTextBox.Text
                    Else
                        command.Parameters.Add("Peso", OleDbType.Integer).Value = 0
                    End If



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

                        command.Parameters.Add("Altura", OleDbType.Decimal).Value = AlturaMaskedTextBox.Text
                    Else
                        command.Parameters.Add("Altura", OleDbType.Decimal).Value = 0
                    End If

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

                        command.Parameters.Add("Tipo_Diabetes", OleDbType.Integer).Value = Tipo_DiabetesComboBox.Text
                    Else
                        command.Parameters.Add("Tipo_Diabetes", OleDbType.Integer).Value = 0
                    End If


                    'command.Parameters.Add("Insulinoterapia", OleDbType.VarChar).Value = InsulinoterapiaCheckBox.Text()



                    'command.Parameters.Add("IMC", OleDbType.Decimal).Value = IMCTextBox.Text()


                    



                    'command.Parameters.Add("Hiperlipidemia", OleDbType.VarChar).Value = HiperlipidemiaCheckBox.Text


                    'command.Parameters.Add("Habitos_alcoolicos", OleDbType.VarChar).Value = Habitos_alcoolicosCheckBox.Text

                    'command.Parameters.Add("Habitos_tabagicos", OleDbType.VarChar).Value = Habitos_tabagicosCheckBox.Text

                    'command.Parameters.Add("Hipertensao", OleDbType.VarChar).Value = HipertensaoCheckBox.Text()

                    'command.Parameters.Add("Obesidade", OleDbType.VarChar).Value = ObesidadeCheckBox.Text()

                    'command.Parameters.Add("Antecedentes_Pessoais", OleDbType.VarChar).Value = Antecedentes_PessoaisTextBox.Text()

                    'command.Parameters.Add("Auto_Vigilancia", OleDbType.VarChar).Value = Auto_VigilanciaCheckBox.Text()

                    'command.Parameters.Add("Defice_Visual", OleDbType.VarChar).Value = Defice_VisualCheckBox.Text()

                    'command.Parameters.Add("Amputacao", OleDbType.VarChar).Value = AmputacaoCheckBox.Text()

                    ' command.Parameters.Add("Dialise", OleDbType.VarChar).Value = DialiseCheckBox.Text()

                    'command.Parameters.Add("Enfarte", OleDbType.VarChar).Value = EnfarteCheckBox.Text()

                    'command.Parameters.Add("AVC", OleDbType.VarChar).Value = AVCCheckBox.Text()

                    'command.Parameters.Add("Lesao_pes", OleDbType.VarChar).Value = Lesao_pesCheckBox.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

            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try









        Try



            Dim lm2 As String = "INSERT INTO `medicamento` (`Nome_medicacao`) VALUES (?)"

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

                ' 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("Nome_medicacao", OleDbType.VarChar).Value = Nome_medicacaoComboBox.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
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)


        End Try
    End Sub
Link to comment
Share on other sites

isto:

Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`) VALUES (?, ?, ?, ?, ?, ?, ?)"

não é nada... ele apenas te mostrou o exemplo...

Queres algo do tipo:

Dim lm As String = "INSERT INTO dados (Id_Cliente, Nome, Idade, Morada, Peso,Altura, Tipo_Diabetes, IMC) VALUES (@Id_Cliente, @Nome, @Idade, @Morada, @Peso, @Altura, @Tipo_Diabetes, @IMC)"

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

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

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

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

                        command.Parameters.Add("@Id_CLiente", OleDbType.Integer).Value = Id_ClienteTextBox.Text
                    Else
                        command.Parameters.Add("@Id_Cliente", OleDbType.Integer).Value = 0
                    End If


                    command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextBox.Text()

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

                        command.Parameters.Add("@Idade", OleDbType.Integer).Value = IdadeTextBox.Text
                    Else
                        command.Parameters.Add("@Idade", OleDbType.Integer).Value = 0
                    End If

                    command.Parameters.Add("@Morada", OleDbType.VarChar).Value = MoradaTextBox.Text()

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

                        command.Parameters.Add("@Peso", OleDbType.Integer).Value = PesoTextBox.Text
                    Else
                        command.Parameters.Add("@Peso", OleDbType.Integer).Value = 0
                    End If



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

                        command.Parameters.Add("@Altura", OleDbType.Decimal).Value = AlturaMaskedTextBox.Text
                    Else
                        command.Parameters.Add("@Altura", OleDbType.Decimal).Value = 0
                    End If

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

                        command.Parameters.Add("@Tipo_Diabetes", OleDbType.Integer).Value = Tipo_DiabetesComboBox.Text
                    Else
                        command.Parameters.Add("@Tipo_Diabetes", OleDbType.Integer).Value = 0
                    End If

                    command.Parameters.Add("@IMC", OleDbType.Decimal).Value = IMCTextBox.Text()

There are two ways to write error-free programs; only the third one works.

Link to comment
Share on other sites

isto:

Dim lm As String = "INSERT INTO `dados` (`Id_Cliente`, `Nome`, `Idade`, `Morada`, `Peso`,`Altura`, `Tipo_Diabetes`) VALUES (?, ?, ?, ?, ?, ?, ?)"

não é nada... ele apenas te mostrou o exemplo...

Queres algo do tipo:

Dim lm As String = "INSERT INTO dados (Id_Cliente, Nome, Idade, Morada, Peso,Altura, Tipo_Diabetes, IMC) VALUES (@Id_Cliente, @Nome, @Idade, @Morada, @Peso, @Altura, @Tipo_Diabetes, @IMC)"

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

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

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

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

                        command.Parameters.Add("@Id_CLiente", OleDbType.Integer).Value = Id_ClienteTextBox.Text
                    Else
                        command.Parameters.Add("@Id_Cliente", OleDbType.Integer).Value = 0
                    End If


                    command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextBox.Text()

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

                        command.Parameters.Add("@Idade", OleDbType.Integer).Value = IdadeTextBox.Text
                    Else
                        command.Parameters.Add("@Idade", OleDbType.Integer).Value = 0
                    End If

                    command.Parameters.Add("@Morada", OleDbType.VarChar).Value = MoradaTextBox.Text()

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

                        command.Parameters.Add("@Peso", OleDbType.Integer).Value = PesoTextBox.Text
                    Else
                        command.Parameters.Add("@Peso", OleDbType.Integer).Value = 0
                    End If



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

                        command.Parameters.Add("@Altura", OleDbType.Decimal).Value = AlturaMaskedTextBox.Text
                    Else
                        command.Parameters.Add("@Altura", OleDbType.Decimal).Value = 0
                    End If

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

                        command.Parameters.Add("@Tipo_Diabetes", OleDbType.Integer).Value = Tipo_DiabetesComboBox.Text
                    Else
                        command.Parameters.Add("@Tipo_Diabetes", OleDbType.Integer).Value = 0
                    End If

                    command.Parameters.Add("@IMC", OleDbType.Decimal).Value = IMCTextBox.Text()

Devo me ter explicado mal! Essa parte ja esta, mas agora a parte da 2ª tabela que e uma combobox os nomes repetem se e o nome fica sempre o mesmo para todos os registo!

Link to comment
Share on other sites

Quando escolho um elemento da combobox adiciona novamente na combobox e tambem na base de dados, deve ser do novo try! Agora o problema e guardar o que escolhi na combobox!

2º qual a diferenca entre " ' " e " @ "!

O meu 2º Try esta bem feito? e que nao guarda

Desculpa mas nao entendi o que disses-te 😕

There are two ways to write error-free programs; only the third one works.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.