Dim X As Long
Dim MRCpic As ADODB.Recordset
Dim TXTsql, MSGtxt As String
For X = 0 To List4.ListCount - 1
Dim Str1 As String, Str2 As String, Str3 As String
Str1 = " (checkdate between #" & DTPicker3.Value & "# and #" & DTPicker5.Value & "#)"
Str2 = "醫院='" & Combo2.Text & "'"
str3 = "醫生='" & List4.List(X) & "'"
TXTsql = "select sum(數量) as c from dengji where" & Str1 & "and" & Str2 & "and" & str3
Set MRCpic = ExecuteSQL(TXTsql, MSGtxt)
Sumpic(X) = CLng(MRCpic.Fields("c"))
Next X
然后總是出錯,把日期前面的#換成單引號也不行

uj5u.com熱心網友回復:
這個前面應該有欄位名和等于號或大于號等 #" & DTPicker3.Value & "#and 這個前面也應該有欄位名和等于號或大于號等 #" & DTPicker5.Value & "#
例如
Str1 = "日期>= #" & DTPicker3.Value & "# and 日期1<= #" & DTPicker5.Value & "# And 醫院='" & Combo2.Text & "' And 醫生='" & List4.List(X) & "' "
TXTsql = "select * from dengji where" & Str1 '在select后面盡量不要限制查詢,因為你查詢的欄位比較多。
uj5u.com熱心網友回復:
點除錯,看代碼定位到哪行代碼。應該是拿別人的代碼改的。
uj5u.com熱心網友回復:
SQL中用SUM求和回傳的有可能是NULL,試圖強制把NULL轉成Long型肯定會報錯,所以轉換之前需要先判斷是不是NULL。Sumpic(x)=CLng(MRCPic.Fields("c")) 這句改成:
if not isnull(MRCPic.fields("C")) then
Sumpic(x)=CLng(MRCPic.Fields("c"))
else
Sumpic(x)=0
end if
好像應該是這么判斷的吧,好久沒搞記不太清了
uj5u.com熱心網友回復:
習慣上我會使用 "日期>= #" & format(DTPicker3.Value, "yyyy/MM/dd") & "# ...以確保抓到的日期字串是 yyyy/MM/dd 格式,我曾經遇過電腦回報是民國年格式的(臺灣這邊的),以至于 SQL 查詢出錯
另外 ExecuteSQL 是寫好的函式吧,應該使用 F8 跳進該函式逐步執行,確認該函式有成功回傳一個 recordset,這樣也可清楚確認是在哪一部出錯
uj5u.com熱心網友回復:
檢查與資料庫的連接是否正常uj5u.com熱心網友回復:
Sumpic(X) = CLng(trim(MRCpic.Fields("c") & ""))轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/10413.html
標籤:VB基礎類
