¿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"))

1 Respuesta

Respuesta
yo lo que hago es mejor generar un número para identificar al mes.  Por ejemplo, este mes (diciembre del 2010) sería = 2010 * 12 + 12  = 24132
Enero del año siguiente sería = 2011 * 12 + 1 = 24133.  Entonces 24133 > 24132, y la diferencia es 1.
Febrero del año siguiente sería = 2011 * 12 + 2 = 24134.  Entonces 24134 > 24132, y la diferencia es 2.
Julius (Guatemala)
www.asistedigital.com

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas