閱讀279 返回首頁    go 阿裏雲 go 技術社區[雲棲]


知識共享圖文直播---(二)組合查詢

           這幾天剛剛結束機房收費係統,在敲完機房收費係統之後發現自己遇到的問題其實也沒有什麼,要是真的說有什麼問題難到了自己的話我隻能說在組合查詢、報表的設計、結賬這三個地方給我一點點的麻煩。

今天我就寫寫我的怎麼解決組合查詢問題的吧。


       首先,看看組合查詢主界麵

        


       其次,分析問題

       字段名是我們可查詢的學生信息,比如:卡號、姓名、學號等;操作符包括,“=”、“>”、“<”、“<>”;組合關係,或、非、空。

我們能夠得到的組合情況有:A、A和B、A或B、A和B或C、A和B和C、A和B和C。

        分析到這裏在開始寫代碼之前我們需要解決的問題有兩個。一是,我們如何從數據庫的Student_Info這個表中提取數據;二是,我們如何去寫這六種情況的判斷語句。

       對於從表中提取數據我是這樣寫的

       strSQL=“select* from Student_Info where" "條件一” & “邏輯運算符” & “條件二”

       關於組合情況的選擇,我們既可以先定義這六種情況,然後使用“select case”語句;我們也可以使用“if“條件判斷語句。


       最後,代碼實現(下麵是部分代碼,省略了大部分判斷語句)

[vb] view plaincopyprint?

1.      If Trim(cboSyntagmatic(0).Text = ""Then  

2.            

3.      strSQL(0) = "select * from OnLine_info where " & strField(0) & strOperator(0) & "'" & txtInfo(0).Text & "'"  

4.      Set m_rstOnLineInfo(0) = ExecuteSQL(strSQL(0), strMsg)  

5.        

6.      If m_rstOnLineInfo(0).EOF = True Then  

7.          MsgBox "此卡未注冊,請檢查輸入信息!", vbOKOnly + vbExclamation, "警告"  

8.          cboFieldName(0).Text = ""  

9.          cboFieldName(0).SetFocus  

10.         cboOperators(0).Text = ""  

11.         txtInfo(0).Text = ""  

12.         Exit Sub  

13.     End If  

14.     '設置myFexgrid控件屬性  

15.     With MSFlexGrid1  

16.         .Rows = 1  

17.         .TextMatrix(0, 0) = "卡號"  

18.         .TextMatrix(0, 1) = "姓名"  

19.         .TextMatrix(0, 2) = "上機日期"  

20.         .TextMatrix(0, 3) = "上機日期"  

21.         .TextMatrix(0, 4) = "機器名"  

22.     Do While Not m_rstOnLineInfo(0).EOF  

23.         .Rows = .Rows + 1      '可防止空白行的出現  

24.         .CellAlignment = flexAlignCenterCenter      '單元內容居中  

25.         .ColWidth(0) = 1800  

26.         .ColWidth(1) = 1800  

27.         .ColWidth(2) = 1800  

28.         .ColWidth(3) = 1800  

29.         .ColWidth(4) = 1800  

30.         .TextMatrix(.Rows - 1, 0) = m_rstOnLineInfo(0).Fields(0)  

31.         .TextMatrix(.Rows - 1, 1) = m_rstOnLineInfo(0).Fields(3)  

32.         .TextMatrix(.Rows - 1, 2) = m_rstOnLineInfo(0).Fields(6)  

33.         .TextMatrix(.Rows - 1, 3) = m_rstOnLineInfo(0).Fields(7)  

34.         .TextMatrix(.Rows - 1, 4) = m_rstOnLineInfo(0).Fields(8)  

35.         m_rstOnLineInfo(0).MoveNext  

36.     Loop  

37.     End With  

38.     m_rstOnLineInfo(0).Close  

39.       

40. ElseIf Trim(cboSyntagmatic(0).Text = ""Then  

41. ...  

42.       

43.         ElseIf cboSyntagmatic(1).Text = "" Then  

44.             ......  

45.         Else  

46.             ......  

47. ElseIf Trim(cboSyntagmatic(0).Text = ""Then  

48.   

49.     ......  

50.     ElseIf cboSyntagmatic(1).Text = "" Then  

51.         ......  

52.     Else  

53.             .....  

54.           

55. End If  


       其實,敲完之後你自己也會覺得也就那麼點事,剛開始覺得不會敲是我們看到這個界麵之後,內心覺得可能很難。但是隻要是真的靜下來想想之後發現這其中的邏輯是那麼的簡單,幾句SQL語句,加上一個條件語句就能解決了。


最後更新:2017-04-03 15:22:03

  上一篇:go linux下連接windows的遠程桌麵
  下一篇:go Hive on CDH4部署、調錯及測試