終於算是接觸到機房裡的重點加難點裡的組合查詢了,這個知識點說簡單也簡單,說難也難,關鍵是對他的理解到了哪一步。
大多數的sql查詢只包含從乙個或多個表中返回資料的單條select語句,但是,sql也允許執行多個查詢(多條select語句),並將結果作為乙個查詢結果集返回。這些組合查詢通常稱為並或復合查詢。
主要有兩種情況需要使用組合查詢:
(1)在乙個查詢中從不同的表返回結構資料
(2)對乙個執行多個查詢,按乙個查詢返回資料
首先是組合框列表的字段轉換
select case trim(combofield)
case "卡號"
filename = "cardno"
case "姓名"
filename = "studentname"
case "上機日期"
filename = "ondate"
case "上機時間"
filename = "ontime"
case "下機日期"
filename = "offdate"
case "下機時間"
filename = "offtime"
case "消費金額"
filename = "consume"
case "金額"
filename = "cash"
case "備註"
filename = "status"
end select
end function
還有就是要根據不同的內容選用不同的操作符
if combol(index).text = "姓名" then
symbol(index).clear
symbol(index).additem "="
symbol(index).additem "<>"
else
symbol(index).clear
symbol(index).additem "="
symbol(index).additem ">"
symbol(index).additem "
symbol(index).additem "<>"
end if
接下來就是組合關係
'第一組判斷
'如果第乙個欄位名為空或者第乙個操作符為空或內容為空,則顯示msgbox中的內容,否則,退出程式
if trim(combofield1.text) = "" or trim(comboopsign1.text) = "" or trim(txtcontent1.text) = "" then
exit sub
else
'將查詢到的部分賦予到combo框中
txtsql = txtsql & " " & field(combofield1.text) & " " & trim(comboopsign1.text) & "'" & trim(txtcontent1.text) & "'"
'第二組判斷
if comborelation1.text <> "" then
select case trim(combofield2.text)
'判斷是否為日期型
case "上機日期"
dtpicker2.maxdate = date
if format(dtpicker2.value, "yyyy-mm-dd") > format(dtpicker2.maxdate, "yyyy-mm-dd") then
msgbox "您選擇的日期不能大於當前日期", 0 + 48, "提示"
exit sub
end if
txtcontent2.text = format(dtpicker2.value, "yyyy-mm-dd")
case "下機日期"
dtpicker2.maxdate = date
if format(dtpicker2.value, "yyyy-mm-dd") > format(dtpicker2.maxdate, "yyyy-mm-dd") then
msgbox "您選擇的日期不能大於當前日期", 0 + 48, "提示"
exit sub
end if
txtcontent2.text = format(dtpicker2.value, "yyyy-mm-dd")
'判斷是否為時間型別
case "上機時間"
txtcontent2.text = format(dtpicker2.value, "hh:mm:ss")
case "下機時間"
txtcontent2.text = format(dtpicker2.value, "hh:mm:ss")
'為其他
if trim(txtcontent2.text) = "" then
txtcontent2.setfocus
end if
end select
if trim(combofield2.text) = "" or trim(comboopsign2.text) = "" or trim(txtcontent2.text) = "" then
exit sub
else
txtsql = txtsql & " " & relationname(comborelation1.text) & " " & field(combofield2.text) & " " & comboopsign2.text & "'" & trim(txtcontent2.text) & "'"
'第三組判斷
if comborelation2.text <> "" then
select case trim(combofield3.text)
'判斷是否為日期型
case "上機日期"
dtpicker3.maxdate = date
if format(dtpicker3.value, "yyyy-mm-dd") > format(dtpicker3.maxdate, "yyyy-mm-dd") then
msgbox "您選擇的日期不能大於當前日期", 0 + 48, "提示"
exit sub
end if
txtcontent3.text = format(dtpicker3.value, "yyyy-mm-dd")
case "下機日期"
dtpicker3.maxdate = date
if format(dtpicker3.value, "yyyy-mm-dd") > format(dtpicker3.maxdate, "yyyy-mm-dd") then
msgbox "您選擇的日期不能大於當前日期", 0 + 48, "提示"
exit sub
end if
txtcontent3.text = format(dtpicker3.value, "yyyy-mm-dd")
'判斷是否為時間型別
case "上機時間"
txtcontent3.text = format(dtpicker3.value, "hh:mm:ss")
case "下機時間"
txtcontent3.text = format(dtpicker3.value, "hh:mm:ss")
'為其他
if trim(txtcontent3.text) = "" then
txtcontent3.setfocus
end if
end select
if trim(combofield3.text) = "" or trim(comboopsign3.text) = "" or trim(txtcontent3.text) = "" then
exit sub
else
txtsql = txtsql & " " & relationname(comborelation2.text) & " " & field(combofield3.text) & " " & comboopsign3.text & "'" & trim(txtcontent3.text) & "'"
end if
end if
end if
end if
end if
---------------------
機房收費系統 組合查詢
機房收費系統在磕磕絆絆中過來了,這期間遇到問題,解決問題,最後收穫的特別多,在敲得過程中,不斷的學習新知識,應該說組合查詢是收費系統的乙個小難點了吧,起初我是真的不知道該從 下手,總是有種剪不斷理還亂的感覺,分析分析就繞進去了,我總是把問題想的很複雜,其實只要一句 語句,一切都解決了,根本用不到好多...
機房收費系統 組合查詢
關於組合查詢,真的是乙個令人頭疼的東西,但是當自己突然間的做出來時,卻莫名的有種貌似又不是很難得感覺。昨天弄了整整一下午,今天的下午終於在除錯了兩個小時做出來了。首先是查到了一些關於組合查詢的部落格,有乙個共同的特點就是都要獲得使用者所選的欄位名並轉化成資料庫表中的欄位名,這樣實現了人機共同語言的轉...
機房收費系統 組合查詢
組合查詢真的讓我研究了很長時間,從開始沒有什麼思路到閱讀大量的部落格,之後形成自己的 之後一步步的優化,終於成就了乙個自己認為還可以的 若有好的建議歡迎指出,下面是要實現的功能介面 定義變數 dim txtsql as string dim msgtext as string dim mrc as ...