機房收費系統中,多次用到組合查詢,經過上網查資料、請教同學、模擬學生資訊管理系統,我終於能夠實現這個功能了,儘管還存在很多漏洞。下面分享一下**,希望大家多多指教。
介面展示:
**展示:
option explicit
dim index as integer
'自定義查空事件
private sub checktext(index as integer)
if not testtxt(cbofield(index).text) then
cbofield(index).setfocus
exit sub
end if
if not testtxt(cbosign(index).text) then
cbosign(index).setfocus
exit sub
end if
if not testtxt(txtinput(index).text) then
txtinput(index).setfocus
exit sub
end if
end sub
private sub cmdcheck_click()
dim fields(0 to 4) as string
dim relation(0 to 1) as string
dim mrc as adodb.recordset
dim txtsql as string
dim msgtext as string
dim dd(3) as boolean
'定義變數,將不同的選擇轉化為表中的欄位名送到變數中
fields(0) = "cardno"
fields(1) = "studentname"
fields(2) = "ondate"
fields(3) = "ontime"
fields(4) = "computer"
relation(0) = " and "
relation(1) = " or "
on error resume next
'若配套的欄位名+操作符+輸入內容(+關係)均不為空,則用dd=true標記
if trim(cbofield(0).text) <> "" and trim(cbosign(0).text) <> "" and trim(txtinput(0).text) <> "" then
dd(1) = true
else
dd(1) = false
end if
if trim(cbofield(1).text) <> "" and trim(cbosign(1).text) <> "" and trim(txtinput(1).text) <> "" and cborelation(0).text <> "" then
dd(2) = true
else
dd(2) = false
end if
if trim(cbofield(2).text) <> "" and trim(cbosign(2).text) <> "" and trim(txtinput(2).text) <> "" and cborelation(1).text <> "" then
dd(3) = true
else
dd(3) = false
end if
txtsql = "select * from online_info where "
'處理情況
if dd(1) = true then
if dd(2) = true then
if dd(3) = true then '第一種情況,三個條件都輸入
txtsql = txtsql & trim(fields(cbofield(0).listindex)) & trim(cbosign(0).text) & "'" & trim(txtinput(0).text) & "'" _
& (relation(cborelation(0).listindex)) & trim(fields(cbofield(1).listindex)) & trim(cbosign(1).text) & "'" & trim(txtinput(1).text) & "'" _
& relation(cborelation(1).listindex) & trim(fields(cbofield(2).listindex)) & trim(cbosign(2).text) & "'" & trim(txtinput(2).text) & "'"
else '第一行和第二行輸入
txtsql = txtsql & trim(fields(cbofield(0).listindex)) & trim(cbosign(0).text) & "'" & trim(txtinput(0).text) & "'" _
& relation(cborelation(0).listindex) & trim(fields(cbofield(1).listindex)) & trim(cbosign(1).text) & "'" & trim(txtinput(1).text) & "'"
end if
else '只有第一行的條件輸入
txtsql = txtsql & trim(fields(cbofield(0).listindex)) & trim(cbosign(0).text) & "'" & trim(txtinput(0).text) & "'"
end if
else '沒有輸入完整的條件,查空
call checktext(0)
exit sub
end if
set mrc = executesql(txtsql, msgtext)
'查詢結果處理
if mrc.eof then
with mshflexgrid1
.rows = 1
.cellalignment = 4
.textmatrix(0, 0) = "卡號"
.textmatrix(0, 1) = "姓名"
.textmatrix(0, 2) = "上機日期"
.textmatrix(0, 3) = "上機時間"
.textmatrix(0, 4) = "機房號"
end with
exit sub
else
with mshflexgrid1
.rows = 1
.cellalignment = 4
.textmatrix(0, 0) = "卡號"
.textmatrix(0, 1) = "姓名"
.textmatrix(0, 2) = "上機日期"
.textmatrix(0, 3) = "上機時間"
.textmatrix(0, 4) = "機房號"
do while not mrc.eof
.rows = .rows + 1
.textmatrix(.rows - 1, 0) = mrc.fields("cardno")
.textmatrix(.rows - 1, 1) = mrc.fields("studentname")
.textmatrix(.rows - 1, 2) = mrc.fields("ondate")
.textmatrix(.rows - 1, 3) = mrc.fields("ontime")
.textmatrix(.rows - 1, 4) = mrc.fields("computer")
mrc.movenext
loop
end with
mrc.close
end if
end sub
private sub cmdexit_click()
unload me
end sub
機房收費系統 組合查詢
機房收費系統在磕磕絆絆中過來了,這期間遇到問題,解決問題,最後收穫的特別多,在敲得過程中,不斷的學習新知識,應該說組合查詢是收費系統的乙個小難點了吧,起初我是真的不知道該從 下手,總是有種剪不斷理還亂的感覺,分析分析就繞進去了,我總是把問題想的很複雜,其實只要一句 語句,一切都解決了,根本用不到好多...
機房收費系統 組合查詢
關於組合查詢,真的是乙個令人頭疼的東西,但是當自己突然間的做出來時,卻莫名的有種貌似又不是很難得感覺。昨天弄了整整一下午,今天的下午終於在除錯了兩個小時做出來了。首先是查到了一些關於組合查詢的部落格,有乙個共同的特點就是都要獲得使用者所選的欄位名並轉化成資料庫表中的欄位名,這樣實現了人機共同語言的轉...
機房收費系統 組合查詢
組合查詢真的讓我研究了很長時間,從開始沒有什麼思路到閱讀大量的部落格,之後形成自己的 之後一步步的優化,終於成就了乙個自己認為還可以的 若有好的建議歡迎指出,下面是要實現的功能介面 定義變數 dim txtsql as string dim msgtext as string dim mrc as ...