組合查詢真的讓我研究了很長時間,從開始沒有什麼思路到閱讀大量的部落格,之後形成自己的**,之後一步步的優化,終於成就了乙個自己認為還可以的**。若有好的建議歡迎指出,下面是要實現的功能介面:
'定義變數
dim txtsql as string
dim msgtext as string
dim mrc as adodb.recordset
private sub cmdexit_click()
unload me
end sub
'將所選擇的組合框裡的內容統一用陣列表示,從而減少**量
private sub cmdquery_click()
for i = 0 to 2 '欄位名的新增
with cmbzdm(i)
.additem "卡號", 0
.additem "姓名", 1
.additem "上機日期", 2
.additem "上機時間", 3
.additem "機房號", 4
'判斷選擇的索引值進而轉化為資料庫中可識別的字段
select case index
case 0
changezdm(i) = "cardno"
case 1
changezdm(i) = "studentname"
case 2
changezdm(i) = "ondate"
case 3
changezdm(i) = "ontime"
case 4
changezdm(i) = "computer"
end select
end with
with cmbczf(i) '操作符的新增、這些欄位在資料庫中也是通用的,所以可以不用轉換
.additem "=", 0
.additem ">", 1
.additem "
.additem "<>", 3
end with
next i
for j = 0 to 1 '需要將介面中的文字轉換為資料庫中可識別的字段
with cmbzhgx(j)
.additem "或", 0
.additem "與", 1
select case index
case 0
changegx(j) = "or"
case 1
changegx(j) = "and"
end select
end with
next j
'執行查詢
'判斷查詢條件是否為空
if testtxt(cmbzdm(0).text) then
msgbox "請輸入要查詢的內容!", vbokonly + vbinformation, "提示!"
cmbzdm(0).setfocus
end if
'若只有乙個查詢條件
if cmbzhgx(0) = "" and cmbzhgx(1) = "" then
txtsql = "select cardno .studentno,ondate,ontime,computer from online_info where " & cmbzdm(0).text & _
cmbczf(0).text & "'" & trim(txtcxnr(0)) & "'"
set mrc = executesql(txtsql, msgtesxt)
else '若有兩個查詢條件(此時用if巢狀語句會有效減少**量)
if cmbzhgx(0) <> "" and cmbzhgx(1) = "" then
'判斷條件是否為空
if testtxt(cmbzdm(1)) then msgbox "請輸入要查詢的內容!", vbokonly + vbinformation, "提示!" and cmbzdm(1).setfocus '判斷查詢條件是否為空
txtsql = txtsql & cmbzdm(1).text & cmbczf(1).text & " & trim(txtcxnr(1)) & "
else '若有三個查詢條件
if cmbzhgx(0) <> "" and cmbzhgx(1) <> "" then
'判斷條件是否為空
if testtxt(cmbzdm(2)) then msgbox "請輸入要查詢的內容!", vbokonly + vbinformation, "提示!" and cmbzdm(2).setfocus
txtsql = txtsql and cmbzdm(2).text & cmbczf(2).text & "& trim(txtcxnr(2)) &"
else '若組合關係越級選擇則給出提示
if cmbzhgx(0) = "" and cmbzhgx(1) <> "" then
msgbox "請選擇上乙個組合關係之後再繼續", vbokonly + vbinformation, "提示!"
cmbzhgx(0).setfocus
end if
end if
end if
end if
'顯示記錄資料
mshf.rows = mrc.recordcount + 1
with mshf
while mrc.eof = false
.rows = .rows + 1
.textmatrix(.row - 1, 0) = mrc!cardno
.textmatrix(.row - 1, 1) = mrc!studentname
.textmatrix(.row - 1, 2) = mrc!ondate
.textmatrix(.row - 1, 3) = mrc!ontime
.textmatrix(.row - 1, 4) = mrc!computer
mrc.movenext
wend
end with
mrc.close
end sub
private sub form_load()
with mshf
.rows = 2
.cols = 5
.cellalignment = 4
.textmatrix(1, 0) = "卡號"
.textmatrix(1, 1) = "姓名"
.textmatrix(1, 2) = "上機日期"
.textmatrix(1, 3) = "上機時間"
.textmatrix(1, 4) = "機房號"
end with
end sub
機房收費系統 組合查詢
機房收費系統在磕磕絆絆中過來了,這期間遇到問題,解決問題,最後收穫的特別多,在敲得過程中,不斷的學習新知識,應該說組合查詢是收費系統的乙個小難點了吧,起初我是真的不知道該從 下手,總是有種剪不斷理還亂的感覺,分析分析就繞進去了,我總是把問題想的很複雜,其實只要一句 語句,一切都解決了,根本用不到好多...
機房收費系統 組合查詢
關於組合查詢,真的是乙個令人頭疼的東西,但是當自己突然間的做出來時,卻莫名的有種貌似又不是很難得感覺。昨天弄了整整一下午,今天的下午終於在除錯了兩個小時做出來了。首先是查到了一些關於組合查詢的部落格,有乙個共同的特點就是都要獲得使用者所選的欄位名並轉化成資料庫表中的欄位名,這樣實現了人機共同語言的轉...
機房收費系統 組合查詢
細節優化 查詢語句 txtsql select from line info where 判斷第一行資訊是否填寫完整 if trim combo1 0 text or trim combo2 0 text or trim a then msgbox 請填寫第一行資訊 vbokonly,提示 end ...