機房收費系統 組合查詢

2021-08-27 14:53:41 字數 4029 閱讀 1471

機房收費系統中,多次用到組合查詢,經過上網查資料、請教同學、模擬學生資訊管理系統,我終於能夠實現這個功能了,儘管還存在很多漏洞。下面分享一下**,希望大家多多指教。

介面展示:

**展示:

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 ...