1
下面是一個函數,我目前使用它從發票日期減去20天,然後將該日期移至週一(如果週末)。下一步是檢查該日期是否在假期表中,以及是否相應地調整日期。問題是我正在對30K以上的記錄運行此檢查,並且需要很長時間。有沒有更快的方法來完成這個相同的任務?提前致謝。從VB6檢查日期是否存在假期表中存取
Public Function PrintDate(TheDate As Date) As Date
Dim OfficeClosed As Integer
Dim CheckDate As Date
Dim QSDate As String
Dim QS As String
OfficeClosed = False
TheDate = DateAdd("d", -20, TheDate)
Select Case Weekday(TheDate)
Case 1
CheckDate = DateAdd("d", 1, TheDate)
Case 7
CheckDate = DateAdd("d", 2, TheDate)
Case Else
CheckDate = TheDate
End Select
QSDate = CheckDate
QS = ""
QS = QS & "SELECT holidaydate "
QS = QS & "FROM tbl_holidays "
Set ado_objConn = New ADODB.Connection
ado_objConn.ConnectionTimeout = 130
ado_objConn.CommandTimeout = 130
ado_objConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & _
gl_AutoFinance_Data_Loc & "';Persist Security Info=False"
ado_objConn.Open
Set ado_objRs8 = New ADODB.Recordset
ado_objRs8.Open QS, ado_objConn, , , adCmdText
With ado_objRs8
If Not .EOF Then
.MoveFirst
While Not .EOF
If ado_objRs8.Fields(0) = QSDate Then
OfficeClosed = True
End If
.MoveNext
Wend
End If
End With
Set ado_objRs8 = Nothing
Set ado_objConn = Nothing
If OfficeClosed = True Then
Select Case Weekday(CheckDate)
Case 2
PrintDate = DateAdd("d", 1, CheckDate)
Case 3
PrintDate = DateAdd("d", 1, CheckDate)
Case 4
PrintDate = DateAdd("d", 1, CheckDate)
Case 5
PrintDate = DateAdd("d", 1, CheckDate)
Case 6
PrintDate = DateAdd("d", 3, CheckDate)
End Select
Else
PrintDate = CheckDate
End If
End Function