Batista15 Posted April 27, 2009 at 09:23 AM Report #259301 Posted April 27, 2009 at 09:23 AM 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
Weasel Posted April 27, 2009 at 09:35 AM Report #259304 Posted April 27, 2009 at 09:35 AM 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
Batista15 Posted April 27, 2009 at 10:32 AM Author Report #259318 Posted April 27, 2009 at 10:32 AM 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
Dotinho Posted April 27, 2009 at 10:50 AM Report #259323 Posted April 27, 2009 at 10:50 AM 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
Batista15 Posted April 27, 2009 at 10:58 AM Author Report #259326 Posted April 27, 2009 at 10:58 AM 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
hferreira Posted April 27, 2009 at 11:05 AM Report #259327 Posted April 27, 2009 at 11:05 AM 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.
Batista15 Posted April 27, 2009 at 11:26 AM Author Report #259336 Posted April 27, 2009 at 11:26 AM Ninguem me responde ao que pretendia! Obrigado na mesma!
hferreira Posted April 27, 2009 at 11:35 AM Report #259341 Posted April 27, 2009 at 11:35 AM 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.
Batista15 Posted April 27, 2009 at 12:48 PM Author Report #259370 Posted April 27, 2009 at 12:48 PM Quando vou a gravar da um erro sobre "Double"
hferreira Posted April 27, 2009 at 02:25 PM Report #259413 Posted April 27, 2009 at 02:25 PM Em que linha de código "estoira" e qual é a excepção completa ?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now