Jump to content

Recommended Posts

Posted

Boas Pessoal, tenho um problema, eu tenho 2 tabelas em que eu a partir do nome queria verificar se numa determinada data já estão inseridos dados. Mas não estou a conseguir. Deixo aqui o meu código.


Private Sub PictureBox8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox8.Click

        If Valor_GlicemiaTextBox.Text = Nothing Then
            MsgBox("Preencha o Valor de Glicemia!", MsgBoxStyle.Information, "Valor Glicemia")
            Exit Sub
        ElseIf Tensao_ArterialTextBox.Text = Nothing Then
            MsgBox("Preencha a Tensão Arterial Sistolica!", MsgBoxStyle.Information, "Tensão Arterial  Sistolica")
            Exit Sub
        ElseIf TextBox2.Text = Nothing Then
            MsgBox("Preencha a Tensão Arterial Diastolica!", MsgBoxStyle.Information, "Tensão Arterial  Diastolica")
            Exit Sub
        End If




        Try

            Dim strsql As String = "Select count(1)  from avaliacao where Id_cliente= '" + ComboBox1.Text + " 'and format(Data,'yyyy-MM-dd') = '#" + FormatDateTime(DataDateTimePicker.Text, DateFormat.ShortDate) + "#'"
            If RetornaValor(strsql) <> 0 Then
                MsgBox("Nome já existente")
                Exit Sub
            Else



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

                    Dim msg = MsgBox("Pretende guardar o registo? ", MsgBoxStyle.YesNo)
                    If msg = MsgBoxResult.Yes Then

                        'Define o comando e os parâmetros
                        Dim lm2 As String = "INSERT INTO `avaliacao` (`Id_Cliente`, `Data`, `Valor_Glicemia`, `Tensao_Arterial_Sistolica`, `Tensao_Arterial_Diastolica`) VALUES (@Id_Cliente, @Data, @Valor_Glicemia, @Tensao_Arterial_Sistolica, @Tensao_Arterial_Diastolica)"
                        Dim command As New OleDbCommand(lm2, connection)



                        command.Parameters.Add("@Id_Cliente", OleDbType.Numeric).Value = TextBox1.Text


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

                            command.Parameters.Add("@Data", OleDbType.Date).Value = DataDateTimePicker.Text
                        Else
                            command.Parameters.Add("@Data", OleDbType.Date).Value = 0
                        End If


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

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

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

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

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

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

                        Me.Close()



                        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 If







                    'Abre a ligação e insere o registo

                End Using
            End If









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


        End Try
    End Sub
    Private Function RetornaValor(ByVal strSql) As String
        Try

            Dim db As New OleDbConnection(My.Settings.ligacao)
            db.Open()
            Dim cmd As New OleDbCommand

            With cmd
                .Connection = db
                .CommandType = CommandType.Text
                .CommandText = strSql
                Return .ExecuteScalar()
            End With
            cmd.Dispose()
        Catch ex As OleDbException
            Return " "
        End Try


    End Function

Posted

Vou ser sincero, não olhei para o código com "olhos de ver" mas vou partilhar uma coisa, eu nos meus programas em que uso datas, converto tudo para o seguinte formato YYYYMMDD ou seja o dia 27-04-2009 fica 20090427, por diversas razões uso assim, depois quando pretendo apresentar ao utilizador converto de novo para o formato tradicional, assim na base de dados posso também usar o campo como Integer

Knowledge to the masses


Posted

Vou ser sincero, não olhei para o código com "olhos de ver" mas vou partilhar uma coisa, eu nos meus programas em que uso datas, converto tudo para o seguinte formato YYYYMMDD ou seja o dia 27-04-2009 fica 20090427, por diversas razões uso assim, depois quando pretendo apresentar ao utilizador converto de novo para o formato tradicional, assim na base de dados posso também usar o campo como Integer

Pois, mas a minha duvida nao e bem isso!

Obrigado na mesma

Posted

nao ponhas textbox.text = Nothing, poe textbox.text=""

porque "" é texto com tamanho 0, exprimenta assim..

cmps

em relação á questão do Weasel, nao ponhas YYYYMMDD, poes format(NOW, "DD-MM-yyyy") e ja tens no teu formato.. lool

cmps

Luis Lourenço

Posted

nao ponhas textbox.text = Nothing, poe textbox.text=""

porque "" é texto com tamanho 0, exprimenta assim..

cmps

em relação á questão do Weasel, nao ponhas YYYYMMDD, poes format(NOW, "DD-MM-yyyy") e ja tens no teu formato.. lool

cmps

Mas o meu problema nao e este! Mesmo trocando

Posted

O formato de datas YYYYMMDD tem uma razão de ser que é ser standard, ou seja, independentemente da forma como os dados são apresentados ao utilizador, deverão ser consultados e persistidos na base de dados nesse formato.

Por exemplo se utilizarem o formato de datas na consulta/persistência no seguinte formato DD-MM-YYYY com um motor de base de dados MS Sql Server em inglês, não vão ter problemas mas se mantiverem o vosso programa, a vossa base de dados mas mudarem a instalação para a versão em espanhol vão ver os problemas a começarem a acontecer.

Penso ser uma boa prática usarem as datas no formato YYYYMMDD na consulta/persistência, pois é independente do motor de base de dados e do idioma (no caso do access é o mesmo formato mas deverá ser delimitado por ##), sendo que a forma de apresentar os dados ao utilizador diz respeito à aplicação cliente.

Posted

Podes ser mais concreto quando dizes que não estou a conseguir !

Dá-te algum erro em concreto ? Se sim, qual ?

Assim a "olho" posso ver que independentemente do formato de datas estar correcto ou não, verifica-se que na tua query que a expressão está incorrecta, pois tens « ... 'and ...» em vez de « ... ' and ...», ou seja, a pelica está junto do and.

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
×
×
  • 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.