我正在做一個簡單的 DCount,只是尋找有多少人注冊了相同的日期和時間。目前我只是用一個日期和一個時間來證明這個程序,然后我會讓它遍歷所有可能的日期和時間。
Private Sub Get_Singles()
Dim TestDate As String
Dim TestTime As String
AloneCnt = 0
Dinc = 0
Tinc = 0
TestDate = vStartDate
TestTime = "0700"
If (DCount("[ID]", VigilTable, "[fldTime] = " & TestTime) = 1) Then
' "[fldDate] = " & TestDate) & " And
AloneCnt = AloneCnt 1
End If
End Sub
它適用于日期(我已將其移至另一行并將其注釋掉,以便我可以專注于時間。)。
在表中,fldDate 和 fldTime 都設定為文本(在屬性串列中顯示為 Field Size = 255),并且如您所見,TestDate 和 TestTime 都以字串形式變暗。
如果我將 DCount 行更改為:
(DCount("[ID]", VigilTable, "[fldTime] = '0700'")
那么錯誤在哪里呢?
謝謝。
uj5u.com熱心網友回復:
錯誤是,您必須將日期和時間作為資料型別 Date 處理。因此,將欄位的資料型別更改為 DateTime 并:
Dim TestDate As Date
Dim TestTime As Date
Dim AloneCnt As Long
TestDate = vStartDate
TestTime = TimeSerial(7, 0, 0)
If DCount("*", "VigilTable", "[fldTime] = #" & Format(TestTime, "hh\:nn\:ss") & "# And [fldDate] = #" & Format(TestDate, "yyyy\/mm\/dd") & "#") = 1 Then
AloneCnt = AloneCnt 1
End If
uj5u.com熱心網友回復:
因為您將所有日期/時間位保存為文本/字串,所以您應該在顯示的條件中使用文本語法:帶引號(注意時間字串周圍的引號):
(DCount("[ID]", VigilTable, "[fldTime] = '" & TestTime & "'")
您還可以將日期/時間保留在日期型別中,例如@Gustav 的答案。
更新:

你一定是做錯了什么;這是我在 VBA 視窗中建議的版本,它不是紅色的。
uj5u.com熱心網友回復:
好的,我在搜索其他幾個網站后找到了修復;正如我上面所建議的,這是處理變數的問題:
If (DCount("[ID]", VigilTable, "[fldDate]='" & TestDate & "'" & " AND [fldTime] = '" & TestTime & "'") = 1) Then
我總是對那些該死的單引號感到麻煩,并且永遠無法將它們放在正確的位置(我曾嘗試多次放置單引號,但從未將它們放在它們所在的位置。);我不知道不同地方的規則是否不同,或者我只是不了解規則或兩者兼而有之。
感謝您的所有建議;即使是不起作用的東西也有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/459704.html
