VB6 - 到期日逻辑

时间:2015-06-29 01:31:55

标签: vb6

我在VB6中编写的代码是检查过期日期是否仍然比现在更早,因此产品没有过期。否则,产品已过期。但是,产品的详细信息始终在系统中重复使用。

所以,我的代码是这样的:

Global database As Database
Global recordset As Recordset
Dim intResponse As Integer

Private Sub Form_Load()
Set database = OpenDatabase("C:\Location\Database.mdb")
Set recordset = database.OpenRecordset("Table")
recordset.Index("PrimaryKey")
End Sub

Private Sub txtProductID_LostFocus()
If txtProductID <> "" Then
    recordset.Seek "=", txtProductID
    If recordset.NoMatch Then
        MsgBox("Record not found!", vbInformation + vbOKOnly, "Record not found")
        txtProductID = ""
        txtProductID.SetFocus
    Else
        If recordset("Expiration_Date") > DateValue(Now) Then
            Enable_Details ' Sub Function
        Else
            intResponse = MsgBox("Product is expired!", vbExclamation + vbOKOnly, "Product is Expired")
            If intResponse = vbOK Then
                frmNewExpiryDate.Show
            End If 
        End If
    End If
End If
End Sub

当我调试代码时,我与数据库交叉引用并注意到即使某些产品已过期,代码也会直接转到Enable_Details sub。我需要帮助!

3 个答案:

答案 0 :(得分:3)

试试这个

Dim sDate as date
sDate = format(recordset("Expiration_Date"),"mm/dd/yyyy")
if datediff("d",Format(Now, "mm/dd/yyyy"),sDate) < 0 then
'already expired
end if

答案 1 :(得分:0)

数据库字段“ Expiration_Date ”的类型是什么?它是 String 还是 Date ?如果类型是 String ,那么您需要通过拆分字符串并使用 DateSerial 将其转换为 Date ,如果它是 Date ,代码应该有效。 所以我认为实际的类型是 String ,因此它不起作用。

此外,只需使用记录集(“Expiration_Date”)&gt; 日期而不是记录集(“Expiration_Date”)&gt; DateValue (现在),虽然两者完全相同,但日期更加优化。

答案 2 :(得分:0)

Private Function IsExpiry() As Boolean

IsExpiry = False

'set your expiry date here
ExpiryYear = 2017
ExpiryMonth = 10
ExpiryDay = 10


    If Year(Date) > ExpiryYear Then
        IsExpiry = True
        GoTo last
    End If

    If Month(Date) > ExpiryMonth Then
         IsExpiry = True
         GoTo last
    End If


    If Month(Date) = ExpiryMonth Then
        If Day(Date) > ExpiryDay Then
            IsExpiry = True
            GoTo last
        End If
    End If

last:
End Function



Private Sub cmdCheckExpiry_Click()

  If IsExpiry then
     MsgBox("Expired")
  Else
     MsgBox("Not Expired")
  Endif

End Sub