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

vasco16

problemas com datas

23 mensagens neste tópico

Boas pessoal tenho um problema com datas.. tenho ambos os campos em maskedtextbox com formato dd,mm,yyyy mas ao comparar as datas ele só me compara como fosse um numero intero, ou seja..

Dim strsql As String = "Select DATA_COMPRA from compras where matricula like '" & matriculatextbox.Text & "%'"
                TextBox1.Text = RetornaValor(strsql)
                If (TextBox1.Text > datadeptext.Text) Then
                    MsgBox("Não pode ter uma despesa com a data inferior á data de compra da viatura!", MsgBoxStyle.Information, "Stand")
                    Exit Sub
                End If

tenho uma função a ir buscar uma data a minha BD access depois manda o valor para a textbox1 e depois comparo esse valor com o valor introduzido no campo ("datadeptext") mas ao comprar por exemplo:

se na textbox1 tiver 17-05-2001

e na datadeptext tiver 18-01-2001 ele deixa-me passar porque o 18 é maior que o 17..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Converte primeiro para datetime e compara as datetimes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Converte primeiro para datetime e compara as datetimes.

asssim?

    Dim data1 As Date

                Dim data2 As Date

                data1 = TextBox1.Text

                data2 = datadeptext.Text

                Dim strsql As String = "Select DATA_COMPRA from compras where matricula like '" & matriculatextbox.Text & "%'"

                TextBox1.Text = RetornaValor(strsql)

                If (TextBox1.Text > datadeptext.Text) Then

                    MsgBox("Não pode ter uma despesa com a data inferior á data de compra da viatura!", MsgBoxStyle.Information, "Stand")

                    Exit Sub

                End If

assim dá erro: a conversão da cadeia "" para o tipo date nao é valida

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não podes afectar directamente um datetime com uma string, tens q fazer um DateTime.Parse(string)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não podes afectar directamente um datetime com uma string, tens q fazer um DateTime.Parse(string)

como assim?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a classe DateTime tem um método q é o Parse.

Recebendo uma string com a data como argumento, retorna um DateTime.

Faz isso ás duas datas e podes comparar os datetimes correspondentes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a classe DateTime tem um método q é o Parse.

Recebendo uma string com a data como argumento, retorna um DateTime.

Faz isso ás duas datas e podes comparar os datetimes correspondentes.

assim?:S é que nao sei trabalhar com data time parse

DateTime.Parse(TextBox1.Text)

                DateTime.Parse(datadeptext.Text)

                Dim strsql As String = "Select DATA_COMPRA from compras where matricula like '" & matriculatextbox.Text & "%'"

                TextBox1.Text = RetornaValor(strsql)

                If (TextBox1.Text > datadeptext.Text) Then

                    MsgBox("Não pode ter uma despesa com a data inferior á data de compra da viatura!", MsgBoxStyle.Information, "Stand")

                    Exit Sub

                End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas tu não queres saber se uma data é menor que a outra ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas tu não queres saber se uma data é menor que a outra ?

sim e essa duvida era como adicionar anos á data

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

penso que seja algo assim

  Dim verificar As DateTime = DateTime.Parse(TextBox1.Text)

                Dim verificar2 As DateTime = DateTime.Parse(datadeptext.Text)

                Dim strsql As String = "Select DATA_COMPRA from compras where matricula like '" & matriculatextbox.Text & "%'"

                TextBox1.Text = RetornaValor(strsql)

                If (TextBox1.Text > datadeptext.Text) Then

                    MsgBox("Não pode ter uma despesa com a data inferior á data de compra da viatura!", MsgBoxStyle.Information, "Stand")

                    Exit Sub

                End If

agora só me falta saber o que meter na condição..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if (verifcar > verificar2) Then...

Agora já podes comparar os datetimes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

if (verifcar > verificar2) Then...

Agora já podes comparar os datetimes.

erro:  a cadeia de caracteres nao foi reconhecida como valor datetime valido

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer algo assim:

        Dim dt1 As New DateTime(2009, 5, 17, 9, 10, 0)

        Dim dt2 As DateTime = Now

        If dt2.Subtract(dt1).TotalHours > 0 Then

            Stop ' Data 2 maior que a Data 1

        End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim assim ja funciona ;)

Ainda bem!

Só para informação, podes alterar de TotalHours para TotalMinutes, TotalSeconds ou mesmo TotalMilliseconds, para diferenças mais pequenas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda bem!

Só para informação, podes alterar de TotalHours para TotalMinutes, TotalSeconds ou mesmo TotalMilliseconds, para diferenças mais pequenas.

Já agora que valores sao estes? "DateTime(2009, 5, 17, 9, 10, 0)"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora que valores sao estes? "DateTime(2009, 5, 17, 9, 10, 0)"

Cria uma nova data com o ano 2009, mês 5, dias 17, e hora 9:10:00.

Tenta alterar os dados que o intellissence mostra-te o que cada um representa ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cria uma nova data com o ano 2009, mês 5, dias 17, e hora 9:10:00.

Tenta alterar os dados que o intellissence mostra-te o que cada um representa ;)

hum ok, mas no futuro esses valores nao me vao fazer diferença pois nao?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hum ok, mas no futuro esses valores nao me vao fazer diferença pois nao?

Agora já não entendi!

Tu tens de colocar numa data a data de compra da viatura, e na outra a que está na textbox. Aquele exemplo foi ilustrativo.

Deves fazer, como o bruno1234 já te disse, algo:

Dim dt1 As Datetime = DateTime.Parse(data da maskedtextbox)

Dim dt2 As Datetime = DateTime.Parse(Data que está na base de dados)

E depois utilizas o código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora já não entendi!

Tu tens de colocar numa data a data de compra da viatura, e na outra a que está na textbox. Aquele exemplo foi ilustrativo.

Deves fazer, como o bruno1234 já te disse, algo:

Dim dt1 As Datetime = DateTime.Parse(data da maskedtextbox)

Dim dt2 As Datetime = DateTime.Parse(Data que está na base de dados)

E depois utilizas o código.

ja adaptei e já está a funciona ;)

obrigado.

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