vasco16 Posted May 17, 2009 at 04:09 PM Report #264836 Posted May 17, 2009 at 04:09 PM 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..
bruno1234 Posted May 17, 2009 at 04:12 PM Report #264837 Posted May 17, 2009 at 04:12 PM Converte primeiro para datetime e compara as datetimes. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
vasco16 Posted May 17, 2009 at 04:22 PM Author Report #264839 Posted May 17, 2009 at 04:22 PM 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
bruno1234 Posted May 17, 2009 at 04:46 PM Report #264843 Posted May 17, 2009 at 04:46 PM Não podes afectar directamente um datetime com uma string, tens q fazer um DateTime.Parse(string) Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
vasco16 Posted May 17, 2009 at 07:03 PM Author Report #264888 Posted May 17, 2009 at 07:03 PM Não podes afectar directamente um datetime com uma string, tens q fazer um DateTime.Parse(string) como assim?
bruno1234 Posted May 17, 2009 at 07:09 PM Report #264892 Posted May 17, 2009 at 07:09 PM 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. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
vasco16 Posted May 17, 2009 at 07:18 PM Author Report #264894 Posted May 17, 2009 at 07:18 PM 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
bruno1234 Posted May 17, 2009 at 07:30 PM Report #264896 Posted May 17, 2009 at 07:30 PM Tens aqui uns exemplos: http://msdn.microsoft.com/en-us/library/1k1skd40.aspx Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
jpaulino Posted May 17, 2009 at 07:32 PM Report #264899 Posted May 17, 2009 at 07:32 PM Este teu problema não é o mesmo deste (http://www.portugal-a-programar.pt/index.php?showtopic=27447) ?
vasco16 Posted May 17, 2009 at 07:33 PM Author Report #264900 Posted May 17, 2009 at 07:33 PM Este teu problema não é o mesmo deste (http://www.portugal-a-programar.pt/index.php?showtopic=27447) ? não, esse já está a funcionar.
jpaulino Posted May 17, 2009 at 07:35 PM Report #264902 Posted May 17, 2009 at 07:35 PM Mas tu não queres saber se uma data é menor que a outra ?
vasco16 Posted May 17, 2009 at 07:40 PM Author Report #264904 Posted May 17, 2009 at 07:40 PM Mas tu não queres saber se uma data é menor que a outra ? sim e essa duvida era como adicionar anos á data
vasco16 Posted May 17, 2009 at 08:06 PM Author Report #264913 Posted May 17, 2009 at 08:06 PM 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..
bruno1234 Posted May 17, 2009 at 08:18 PM Report #264918 Posted May 17, 2009 at 08:18 PM if (verifcar > verificar2) Then... Agora já podes comparar os datetimes. Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
vasco16 Posted May 17, 2009 at 08:27 PM Author Report #264921 Posted May 17, 2009 at 08:27 PM if (verifcar > verificar2) Then... Agora já podes comparar os datetimes. erro: a cadeia de caracteres nao foi reconhecida como valor datetime valido
jpaulino Posted May 17, 2009 at 08:29 PM Report #264923 Posted May 17, 2009 at 08:29 PM 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
vasco16 Posted May 17, 2009 at 08:40 PM Author Report #264929 Posted May 17, 2009 at 08:40 PM Podes fazer algo assim: sim assim ja funciona 😉
jpaulino Posted May 17, 2009 at 08:43 PM Report #264930 Posted May 17, 2009 at 08:43 PM 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.
vasco16 Posted May 17, 2009 at 08:46 PM Author Report #264932 Posted May 17, 2009 at 08:46 PM 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)"
jpaulino Posted May 17, 2009 at 08:47 PM Report #264934 Posted May 17, 2009 at 08:47 PM 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 😉
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