COMANDO INPUT E DATAS

USUARIO.EXCLUIDOS 25/11/2004 00:11:03
#51865
Olá pessoal!

Através de 3 combo.tex estou solicitando do usuário valores de datas, ou seja, um combo.text é inserido o valor de dias (1 a 31 dias), no outro combo.text é inserido um valor de mês (Jan a Dez) e na terceria combo.tex é inserido o valor de ano (1980 a 2050). Segue abaixo o código fonte:

Dim dia_ac, mes_ac, ano_ac, dif_data As String
Dim data_ac As Date
dia_ac = Combo1.Text
mes_ac = Combo2.Text
ano_ac = Combo3.Text
If mes_ac = "Jan" Then
mes_ac = "01"
End If
If mes_ac = "Fev" Then
mes_ac = "02"
End If
If mes_ac = "Mar" Then
mes_ac = "03"
End If
If mes_ac = "Abr" Then
mes_ac = "04"
End If
If mes_ac = "Mai" Then
mes_ac = "05"
End If
If mes_ac = "Jun" Then
mes_ac = "06"
End If
If mes_ac = "Jul" Then
mes_ac = "07"
End If
If mes_ac = "Ago" Then
mes_ac = "08"
End If
If mes_ac = "Set" Then
mes_ac = "09"
End If
If mes_ac = "Out" Then
mes_ac = "10"
End If
If mes_ac = "Nov" Then
mes_ac = "11"
End If
If mes_ac = "Dez" Then
mes_ac = "12"
End If

Posteriormente eu pego estes 3 valores inseridos e os transformo numa data, assim:

data_ac = Str(dia_ac) + Str(mes_ac) + Str(ano_ac)

E logo a seguir eu calculo a diferenca entre a data atual e a data inserida, assim:

dif_data = Date - data_ac

Logo a seguir eu insiro os seguintes valores num arquivo de texto:

Open "C:\aicardo.txt" For Output As #1
Print #1, dif_data, data_ac, Date
Close #1

Estranhei quando observei que a data no arquivo de texto estava da seguinte forma:

366 24/11/03 24/11/04

onde 366 é o resultado da subtracão e os dois valores seguintes são as datas.

[txt-color=#ff0000]Porque os dados no arquivo estão assim e não assim:[/txt-color]

366 24/11/2003 24/11/2004

Bom, para o próximo passo eu preciso sanar esta dúvida que não quer me deixar sossegado! Alguém poderia me ajudar?!

Abraços
LCSD 25/11/2004 08:30:07
#51874
Resposta escolhida
Delete

Tem um jeito mais fácil de se fazer isto, armazene na própria ComboBox.

Command1 e Label1 foram inseridos só para testes

cboDia, cboMes e cboAno são os Combos que serão utilizados para as datas.


Private Sub Command1_Click()
'---- Para validar se todas as datas foram selecionadas
If cboDia.ListIndex = -1 Or cboMes.ListIndex = -1 Or cboAno.ListIndex = -1 Then Exit Sub

Label1.Caption = DataFormatada(cboDia.Text, cboMes.ItemData(cboMes.ListIndex), cboAno)
End Sub

Private Sub Form_Load()
Dim i As Integer

'----- Combo dos Dias -------------

cboDia.Clear
For i = 1 To 31
cboDia.AddItem i
Next


'----- Combo dos Meses ----------
With cboMes
.Clear
.AddItem "Jan"
.ItemData(.NewIndex) = 1
.AddItem "Fev"
.ItemData(.NewIndex) = 2
.AddItem "Mar"
.ItemData(.NewIndex) = 3
.AddItem "Abr"
.ItemData(.NewIndex) = 4
.AddItem "Mai"
.ItemData(.NewIndex) = 5
.AddItem "Jun"
.ItemData(.NewIndex) = 6
.AddItem "Jul"
.ItemData(.NewIndex) = 7
.AddItem "Ago"
.ItemData(.NewIndex) = 8
.AddItem "Set"
.ItemData(.NewIndex) = 9
.AddItem "Out"
.ItemData(.NewIndex) = 10
.AddItem "Nov"
.ItemData(.NewIndex) = 11
.AddItem "Dez"
.ItemData(.NewIndex) = 12
End With

'------ Combo dos Anos ----------
cboAno.Clear
For i = 1980 To 2050
cboAno.AddItem i
Next

End Sub


Function DataFormatada(sDia As String, sMes As String, sAno As String) As String

If Len(sDia) < 1 Or Len(sMes) < 1 Or Len(sAno) < 1 Then Exit Function

DataFormatada = Format(sDia & "/" & sMes & "/" & sAno, "dd/mm/yyyy")
End Function



O Exemplo acima funcionou corretamente, veja que são armazenados os valores dos meses no ItemData, é esta a finalidade desta Propertie no ComboBox e na ListBox.A função DataFormatada já te retorna a String.

Até breve
[s92]

Tópico encerrado , respostas não são mais permitidas