誒,好的好的,今天依舊是我給大家帶來大型情感類電腦連續節目vb吐槽班,我們依舊是吐的飛起,感覺好噁心。。。
自從上次在csdn發過部落格之後,一直生活在水深火熱的預習專業課的生活中,畢竟考試不能總靠別人是吧,小抄還是要做好的,當然也還是要貫徹落實“膽大心細不要臉,能瞟一眼是一眼”的偉大方針。說到這個考試呢,不得不吐槽一下:上課真是太TM耽誤學習了!
也是到了暑假了啊,學校終於是沒啥事了,不耽誤我們學習了,我這倆月沒登csdn密碼都差點忘了。。。最近終於是勉強趕上了大部隊的腳步,莫名其妙的做完了這個學生資訊管理系統。按照國際慣例,搞定了之後要做個總結,so
不要以為學生資訊管理系統很難啊魂淡!
一開始拿到源碼的時候,我累個大擦啊,毛線一樣多的表單啊,米導演,我是不是走錯片場了啊喂!
待老夫仔細一看。第一個菜單:添加,修改,退出;第二個菜單:添加,修改,查詢;第三個菜單:添加,修改,查詢。。。
誒,原來都差不多嘛╮(╯▽╰)╭
其實拿到了之後仔細看了看每一個表單,大概都是差不多的代碼,差別也就是有的地方用不同的方法達到相同的效果。
最難的地方我認為就是這個模組了,好吧,為了能仔細講解一下這些代碼,我就拆開了寫了啊。(你就想多湊幾篇部落格數吧-_-)
Sub main() Dim fLogin As New frmLogin fLogin.Show vbModal '顯示登入視窗,使使用者只能使用當前表單,只有當前表單關閉後其他表單才可用 If Not fLogin.OK Then '如果flogin表單中的ok不為真,結束程式 End End If Unload fLogin Set fMainForm = New frmMain '顯示主表單 fMainForm.ShowEnd Sub
首先這個sub main(),我在注釋裡面也寫了,目的就是為了只顯示登入表單。好吧,其實我想說直接將啟始物件設定為登入表單,也就是frmLogin也可以的,只不過還要在裡面加一些代碼,那啥我就不寫了。。。
Public Function Testtxt(txt As String) As Boolean'判斷text是否為空白 If Trim(txt) = "" Then Testtxt = False Else Testtxt = True End IfEnd Function
然後是這個東西,注釋裡面也寫了,這個函數只是為了檢驗textbox是否為空白,其實也可以直接用trim(txt)是否為空白來判斷,定義一個函數一是為了方便一些吧。
Public Function ConnectString() As String '方法一 ConnectString = "FileDSN=student.dsn;UID=sa;PWD=123456;Server = 192.168.1.1;persist security info=False" '方法二 'ConnectString= "Provider=SQLOLEDB;UID=sa;PWD=123456;Initial Catalog=student;Data Source=192.168.1.1"End Function
接下來是串連資料庫的函數,上期吐槽班也是講過了兩種串連方式,具體連結到區域網路中的SQL Server的伺服器也只是在各自的代碼中加了IP地址。當然你要先在伺服器端開啟遠端連線的服務。
Public Function ExecuteSQL(ByVal SQL As String, Msgstring As String) As ADODB.Recordset '執行SQL語句,返回一個結果集 'executes SQL and returns Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens() As String '定義一個字串數組 On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) '將sql串按空格分成字串數組 Set cnn = New ADODB.Connection cnn.Open ConnectString If InStr("INSSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '如果第一個單詞的大寫是INSSERT,DELETE,UPDATE。即非select語句 cnn.Execute SQL '執行SQL語句 Msgstring = sTokens(0) & "query successful" Else 'SELECT語句 Set rst = New ADODB.Recordset rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic Set ExecuteSQL = rst Msgstring = "查詢到" & rst.RecordCount & "條記錄" End If ExecuteSQL_Exit: Set rst = Nothing Set cnn = Nothing Exit Function ExecuteSQL_Error: Msgstring = "查詢錯誤:" & Err.Description Resume ExecuteSQL_Exit End Function
最難的部分也就是這個函數了,容我喝口熱翔,回來繼續。。。
一時間不知道從哪說起了,直接簡述一下這個函數的功能吧。首先就是按照注釋上寫的,將接受的文字格式設定的SQL語句按照空格分組,然後對第一個數組的資料進行判斷,如果是非SELECT語句則直接執行,如果是SELECT語句則返回一個結果集。其實我注釋寫得還是夠清楚的嘛╮(╯▽╰)╭
哇,一個模組我都能寫這麼多!我就不說我把代碼全粘過來了。。。
剩下的表單啥的,我就下期繼續了~
以上