2010-01-05 7 views
1

label1은 쿼리를 통해 데이터베이스에서 얻은 마지막 트랜잭션 날짜/시간을 표시합니다. label2은 시스템 날짜/시간입니다. 나는 label1의 날짜/시간이 5 분보다 작은 지 확인하기 위해 명령 단추를 실행하는 타이머를 가지고있다. 그렇다면 나는 마사지를 보여주고 싶다.두 날짜를 비교하십시오.

그러나 왜 내 코드가이 기능을 수행하지 못하고 있는지 알 수 없습니다. 도움이 될 것입니다.

Private Sub Command1_Click() 
    Dim date1 As Date 
    Dim date2 As Date 

    date1 = Format(Now, "yyyy/mm/dd hh:mm:ss") 
    date2 = Format(label1, "yyyy/mm/dd hh:mm:ss") 
    If DateDiff("n", date1, date2) < 2 Then 
     MsgBox ("Not Vending") 
    End If 
End Sub 

나는 또한 시도했다 :

Private Sub Command1_Click() 
    Dim date1 As Date 
    Dim label1 As Date 

    date1 = Format(Now, "yyyy/mm/dd hh:mm:ss") 
    date2 = label1 
    If DateDiff("m", Now, date1) > DateDiff("m", Now, label1) Then 
     MsgBox ("Not Vending") 
    End If 
End Sub 

뿐만 아니라 : 날짜가 DB 지금보다 이전에서 가져온 경우

Private Sub Command1_Click() 
    If DateDiff("n", Now, label1) > 5 Then 
     MsgBox ("Not Vending") 
    End If 
End Sub 
+1

label1의 출처는 어디입니까? 왜 날짜 형식을 문자열로만 변환하고 문자열에서 DateDiff를 호출하면 (이는 문자열을 날짜로 다시 변환합니다) ?? 우리에게 Command1_Click의 여러 버전을주는 것은 도움이되지 않습니다. 우리가 생각하는 것과 가장 가까운 것 하나만 보여주십시오. – AnthonyWJones

답변

2

, 참조 DateDiff는 항상 음수를 반환됩니다 Now를 두 번째 매개 변수로 전달하면됩니다. 시간이 지 났는지 확인하고있는 것처럼 보입니다. 그래서 DB에있는 날짜가 항상 Now보다 앞에 있다고 가정합니다. 당신은 DateDiff("n", Now, date1) 대신이 비교되고 지금과 날짜의 순서 (DateDiff("n", date1, Now)을 전환 할 필요가

Private Sub Command1_Click() 
    Dim date1 As Date 
    date1 = CDate(Label1.Caption) 
    If DateDiff("n", date1, Now) < 5 Then 
     MsgBox ("Not Vending") 
    End If 
End Sub 
+0

Raven의 코드가 도움이 될 것입니다. 디버깅 목적을 위해 Else MsgBox DateDiff ("n", date1, Now) & "minutes difference"와 같은 문을 추가합니다. – jac

+0

답장을 보내 주셔서 감사합니다. – user243732

2

Date -variables 직접 계산 될 것 DateDiff α- 함수를 사용하지 않고 다른 방법으로 -. 이후 후드 이들은 실제로 Doubles. 당신은 시간의 차이를 확인하려면

Private Sub Command1_Click() 
    Dim date1 As Date 
    date1 = CDate(Label1.Caption) 
    '#12:05:00 AM# is representing a value of 5 Minutes in the Date-datatype 
    If (date1 - Now) < #12:05:00 AM# Then 
     MsgBox ("Not Vending") 
    End If 
End Sub 

당신은 또한 사용할 수 있습니다

Private Sub Command1_Click() 
    Dim date1 As Date 
    date1 = CDate(Label1.Caption) 
    '#12:05:00 AM# is representing a value of 5 Minutes in the Date-datatype 
    If Abs(date1 - Now) < #12:05:00 AM# Then 
     MsgBox ("Not Vending") 
    End If 
End Sub 
Abs(date1 - Now)이 Btw는 Date - 값

같은 시간 차이를 반환

. date1 = Format(Now, "yyyy/mm/dd hh:mm:ss")는 의미가 없습니다. 의미 프로그램이 다른 서로 다른 행동 것 - NowDate - 값을 반환하기 때문에, FormatStringDate - 값과는 date1에 할당하면 다시 날짜 형식에 대한 로컬 시스템 설정을 사용하여 Date - 값에 String가 있음을 변환하는 것이 변환 시스템.

관련 문제