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

Batista15

Data

10 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ninguem me responde ao que pretendia! Obrigado na mesma!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em que linha de código "estoira" e qual é a excepção completa ?

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