前言
在剛剛開始機房的時候,僅僅剛剛把整個工程的窗體控制項佈完,聽一些同學說組合查詢有些難,並且我對他們的話深信不疑。但是你現在不做總會到一點時間你是需要去完成的,想到這些,便開始了探索同學們口中的「難」到底有多「難」。
邏輯分析
想要功能更快的實現,理清邏輯很關鍵。該動筆時就去拿筆畫,一味地在腦子裡想很容易把他們之間的聯絡搞混。起初正是因為沒有動手去多畫畫它們之間的聯絡,導致走了不少彎路。下午的時候拿起筆來在紙上把它們之間的邏輯關係理了一遍,結果困擾了兩天的問題不到兩個小時就完全拿下了。
我們以學生基本資訊維護為例:首先,它是乙個多條件的組合查詢,也就是說當我們先判斷第一條件,若需要,在組合查詢的列表框選擇我們組合條件(即「與」or「或」)與第二條件判斷,若第二條件也滿足不了查詢需求,則可使用第三條件。
**實現
'判斷第一行查詢條件是否完整
if not testtxt(cbofield(0).text) or not testtxt(cboopsign(0).text) or not testtxt(txtinquirycontent(0).text) then
msgbox "請填寫完整的查詢條件!", vbokonly + vbexclamation, "警告"
exit sub
end if
cbof = cbofield(0).text
call transform(cbof, "")
'查詢條件
txtsql = "select * from student_info where " & _
cbof & cboopsign(0).text & "'" & txtinquirycontent(0).text & "'"
'如果第乙個組合查詢不為空,判斷第二行條件是否為空
if testtxt(cbocombinerelation(0).text) then
'判斷第二行查詢條件是否完整
if not testtxt(cbofield(1).text) or not testtxt(cboopsign(1).text) or not testtxt(txtinquirycontent(1).text) then
msgbox "請填寫完整的查詢條件!", vbokonly + vbexclamation, "警告"
exit sub
end if
cbof = cbofield(1).text
cboc = cbocombinerelation(0).text
call transform(cbof, cboc)
txtsql = txtsql & " " & cboc & " " & cbof & cboopsign(1).text & "'" & txtinquirycontent(1).text & "'"
goto add_row:
end if
'如果第二個組合查詢不為空,判斷第三行條件是否為空
if testtxt(cbocombinerelation(0).text) then
'判斷第三行查詢條件是否完整
if testtxt(cbofield(2).text) or not testtxt(cboopsign(2).text) or not testtxt(txtinquirycontent(2).text) then
msgbox "請填寫完整的查詢條件!", vbokonly + vbexclamation, "警告"
exit sub
end if
cbof = cbofield(2).text
cboc = cbocombinerelation(1).text
call transform(cbof, cboc)
txtsql = txtsql & " " & cboc & " " & cbof & cboopsign(2).text & "'" & txtinquirycontent(2).text & "'"
end if
add_row:
set mrc = executesql(txtsql, msgtext)
if mrc.eof then
msgbox "未查找到符合條件的資料!", vbokonly, "提示"
exit sub
end if
with mshflexgrid1
.rows = 1 '設定控制項初始行數
.cellalignment = 4 '**中文字居中對齊
.textmatrix(0, 0) = "卡號" '第一列表頭
.textmatrix(0, 1) = "學號" '第二列表頭
.textmatrix(0, 2) = "姓名" '第三列表頭
.textmatrix(0, 3) = "性別" '第四列表頭
.textmatrix(0, 4) = "系別" '第五列表頭
.textmatrix(0, 5) = "年級" '第六列表頭
.textmatrix(0, 6) = "班級" '第七列表頭
.textmatrix(0, 7) = "金額" '第八列表頭
.textmatrix(0, 8) = "備註" '第九列表頭
.textmatrix(0, 9) = "狀態" '第十列表頭
.textmatrix(0, 10) = "日期" '第十一列表頭
.textmatrix(0, 11) = "時間" '第十二列表頭
.textmatrix(0, 12) = "型別" '第十三列表頭
'向表中新增資料
do while not mrc.eof
.rows = .rows + 1
.cellalignment = 4
.textmatrix(.rows - 1, 0) = mrc.fields(0)
.textmatrix(.rows - 1, 1) = mrc.fields(1)
.textmatrix(.rows - 1, 2) = mrc.fields(2)
.textmatrix(.rows - 1, 3) = mrc.fields(3)
.textmatrix(.rows - 1, 4) = mrc.fields(4)
.textmatrix(.rows - 1, 5) = mrc.fields(5)
.textmatrix(.rows - 1, 6) = mrc.fields(6)
.textmatrix(.rows - 1, 7) = mrc.fields(7)
.textmatrix(.rows - 1, 8) = mrc.fields(8)
.textmatrix(.rows - 1, 9) = mrc.fields(10)
.textmatrix(.rows - 1, 10) = mrc.fields(12)
.textmatrix(.rows - 1, 11) = mrc.fields(13)
.textmatrix(.rows - 1, 12) = mrc.fields(14)
mrc.movenext
loop
end with
機房 組合查詢概要
機房慢慢搖,總結也是需要寫一寫的,下面介紹一下組合查詢。思路 前三個空為空 第乙個組合框 第二個組合 第二個組合框 第三個組合 查詢 if trim combrelation1.text then 選擇了第乙個組合關係後,第二行不能為空 if trim combfield2.text or trim...
機房收費系統 組合查詢
機房收費系統在磕磕絆絆中過來了,這期間遇到問題,解決問題,最後收穫的特別多,在敲得過程中,不斷的學習新知識,應該說組合查詢是收費系統的乙個小難點了吧,起初我是真的不知道該從 下手,總是有種剪不斷理還亂的感覺,分析分析就繞進去了,我總是把問題想的很複雜,其實只要一句 語句,一切都解決了,根本用不到好多...
機房收費系統 組合查詢
關於組合查詢,真的是乙個令人頭疼的東西,但是當自己突然間的做出來時,卻莫名的有種貌似又不是很難得感覺。昨天弄了整整一下午,今天的下午終於在除錯了兩個小時做出來了。首先是查到了一些關於組合查詢的部落格,有乙個共同的特點就是都要獲得使用者所選的欄位名並轉化成資料庫表中的欄位名,這樣實現了人機共同語言的轉...