¿Cómo comparo dos fechas.. En vb.?
Espero puedan ayudarme, tengo una aplicación que me genera alertas para vencimientos de contratos... La cuestión es la siguiente tengo unos registros que tienen una fecha de vencimiento digamos que si un registro el día 10-02-2011 la aplicación me genera un mensag instantáneo el día 10-12-2010 diciendo que el reg. Vencerá en 2 meses la aplicación funciona a la perfección cuando las fechas de vencimiento se encuentran entre los meses de marzo a diciembre pero al manejar los meses enero, febrero digámoslo que meses del año siguiente.. Este es mi código espero puedas ayudarme no se que es lo que me fallo
Const sPathBase As String = "C:\BD_ADMINISTRADOR\BD_ADMINISTRADOR.mdb"
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnn
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sPathBase & ";"
.Open
End With
Text1.Text = Format(Now, "yyyy/mm/dd")
Rst. Open "SELECT * FROM SUSCRIPTORESSKY", cnn, adOpenDynamic, adLockOptimistic
cmdMover_Click 0
Dim sBuscar As String
Dim tRs As Recordset
Dim X As Date
Dim Y As Date
Dim T As Date
Dim dia1, dia2, dia3, mes1, mes2, mes3, año1, año2, año3 As Integer
sBuscar = "SELECT * FROM SUSCRIPTORESSKY"
Set tRs = cnn.Execute(sBuscar)
With tRs
If (.BOF And .EOF) Then
'MsgBox "No se han encontrado los datos buscados"
Else
.MoveFirst
Do While Not .EOF
X = Format(.Fields("fecha_inicio"), "dd/mm/yyyy")
Y = Format(.Fields("fecha_termino"), "dd/mm/yyyy")
'T = Format(Now, "yyyy/mm/dd")
T = Int(Now())
'T = DateAdd("m", 2, T)
'dia1 = CInt(Mid(Text1, 1, 2))
'dia2 = CInt(Mid(Text2, 1, 2))
'dia3 = CInt(Mid(Text3, 1, 2))
mes1 = CInt(Mid(X, 6, 2))
mes2 = CInt(Mid(Y, 6, 2))
mes3 = CInt(Mid(T, 6, 2))
año1 = CInt(Mid(X, 1, 4))
año2 = CInt(Mid(Y, 1, 4))
año3 = CInt(Mid(T, 1, 4))
'Si T coincide con Y entonces en dos meses terminará el contrato
'CDate sirve para comparar fechas
'If CDate(Y) = CDate(T) And (.Fields("estado") = "Vigente") Then
If (año2 = año3) And (mes2 = (mes3 - 2)) And (.Fields("estado") = "Vigente") Then
'(.Fields("estado") = "Vigente")
'Estos son los registros que vencen en dos meses
Listview1.AddItem (.Fields("no_cuenta_servicio") & " " & .Fields("fecha_termino"))
Const sPathBase As String = "C:\BD_ADMINISTRADOR\BD_ADMINISTRADOR.mdb"
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnn
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sPathBase & ";"
.Open
End With
Text1.Text = Format(Now, "yyyy/mm/dd")
Rst. Open "SELECT * FROM SUSCRIPTORESSKY", cnn, adOpenDynamic, adLockOptimistic
cmdMover_Click 0
Dim sBuscar As String
Dim tRs As Recordset
Dim X As Date
Dim Y As Date
Dim T As Date
Dim dia1, dia2, dia3, mes1, mes2, mes3, año1, año2, año3 As Integer
sBuscar = "SELECT * FROM SUSCRIPTORESSKY"
Set tRs = cnn.Execute(sBuscar)
With tRs
If (.BOF And .EOF) Then
'MsgBox "No se han encontrado los datos buscados"
Else
.MoveFirst
Do While Not .EOF
X = Format(.Fields("fecha_inicio"), "dd/mm/yyyy")
Y = Format(.Fields("fecha_termino"), "dd/mm/yyyy")
'T = Format(Now, "yyyy/mm/dd")
T = Int(Now())
'T = DateAdd("m", 2, T)
'dia1 = CInt(Mid(Text1, 1, 2))
'dia2 = CInt(Mid(Text2, 1, 2))
'dia3 = CInt(Mid(Text3, 1, 2))
mes1 = CInt(Mid(X, 6, 2))
mes2 = CInt(Mid(Y, 6, 2))
mes3 = CInt(Mid(T, 6, 2))
año1 = CInt(Mid(X, 1, 4))
año2 = CInt(Mid(Y, 1, 4))
año3 = CInt(Mid(T, 1, 4))
'Si T coincide con Y entonces en dos meses terminará el contrato
'CDate sirve para comparar fechas
'If CDate(Y) = CDate(T) And (.Fields("estado") = "Vigente") Then
If (año2 = año3) And (mes2 = (mes3 - 2)) And (.Fields("estado") = "Vigente") Then
'(.Fields("estado") = "Vigente")
'Estos son los registros que vencen en dos meses
Listview1.AddItem (.Fields("no_cuenta_servicio") & " " & .Fields("fecha_termino"))
1 respuesta
Respuesta de juliusguate