![]() ![]() ![]() |
|
|
|
2014/10/15 16:17:09瀏覽272|回應0|推薦7 | |
這章之後,就要開始進行一個會計軟體管理系統的習作,眼看多年來的願望就在幾頁之後,心裡很是激動,相對的,對這一章的問題,也特別重視。 這章倒數第二題,老師教導的代碼如下: Dim myconnect As ADODB.Connection Dim myres As ADODB.Recordset Public Function 查询(sql As String) Set myres = New ADODB.Recordset myres.Open sql, myconnect 查询 = myres!aa myres.Close End Function Private Sub UserForm_Initialize() Dim mydata As String, i As Integer, mySQL As String mydata = "C:\Documents and Settings\maymay\My Documents\第四章数据库.accdb" Set myconnect = New ADODB.Connection With myconnect .Provider = "microsoft.ACE.oledb.12.0" .Open mydata End With Set myres = New ADODB.Recordset mySQL = "select * from 职工 order by 职工.姓名 ASC" myres.Open mySQL, myconnect, adOpenKeyset, adLockOptimistic
With ListBox1 myres.MoveFirst For i = 1 To myres.RecordCount .AddItem myres.Fields(1) myres.MoveNext Next i End With ListBox1.MultiSelect = fmMultiSelectSingle ListBox1.ListStyle = fmListStyleOption End Sub
Private Sub ListBox1_Change() Dim mySQL As String '查询职工所属部门 mySQL = "select 部门.部门名称 as aa from 部门,职工 where 职工.姓名 ='" & ListBox1.Value & "'" _ & " and 职工.部门编号 = 部门.部门编号" TextBox1.Value = 查询(mySQL) '职工姓名显示 TextBox2.Value = ListBox1.Value '职工性别显示 mySQL = "select 职工.性别 as aa from 职工 where 职工.姓名 = '" & ListBox1.Value & "'" TextBox3.Value = 查询(mySQL) '职工年龄显示 mySQL = "select 职工.年龄 as aa from 职工 where 职工.姓名 = '" & ListBox1.Value & "'" TextBox4.Value = 查询(mySQL) '职工工资月份显示 mySQL = "select 工资.月份 as aa from 工资 where 工资.姓名 = '" & ListBox1.Value & "'" TextBox5.Value = 查询(mySQL) '职工工资显示 mySQL = "select 工资.工资 as aa from 工资 where 工资.姓名 = '" & ListBox1.Value & "'" TextBox6.Value = 查询(mySQL) End Sub Private Sub CommandButton1_Click() End End Sub 我對自定義函數不是很懂,所以在上面程式出錯的時候,我想,可能是函數寫錯,而對函數認識不深的我對函數有種莫名的畏怯感,正好可以趁這個機會下載一些關於函數的教程,協助自己對函數能有更深層的認識。 下載了一個三角型求面積的函數教程,非常簡單明了: Function 三角形面積( di, gao) 三角形面積 = di * gao /2 End Function 實驗方式: 在EXCEL 的 工作表 上: 在A1填入數值(假設是三角形的底),在B1填入數值(假設是三角形的高), 然後在公式欄填上: = 三角形面積(A1,B1) 如此我就看懂老師寫的程式中 MySQL 和 sql 兩者的關係: 1. 確定印刷廠沒有印錯,之外, 2. 也懂得以前讀過的形式參數與實參的意思。 但是,還是一直無法得到應用的效果。晚上睡覺我就想,除了用自定義函數之外,有沒有其他辦法?想了一個晚上,一早起來就迫不及待的上機實驗: Dim mySQL As String
'查询职工所属部门 Set myres = New ADODB.Recordset mySQL = "select 部门.部门名称 as aa from 部门,职工 where 职工.姓名 ='" & ListBox1.Value & " '" _ & " and 职工.部门编号=部门.部门编号" myres.Open mySQL, myconnect, adOpenKeyset, adLockOptimistic TextBox1.Value = myres!aa
'职工姓名显示 TextBox2.Value = ListBox1.Value '职工性别显示 Set myres = New ADODB.Recordset mySQL = "select 职工.性别 as aa from 职工 where 职工.姓名 = '" & ListBox1.Value & "'" myres.Open mySQL, myconnect, adOpenKeyset, adLockOptimistic TextBox3.Value = myres!aa '职工年龄显示 Set myres = New ADODB.Recordset mySQL = "select 职工.年龄 as aa from 职工 where 职工.姓名 = '" & ListBox1.Value & "'" myres.Open mySQL, myconnect, adOpenKeyset, adLockOptimistic TextBox4.Value = myres!aa '职工工资月份显示 Set myres = New ADODB.Recordset mySQL = "select 工资.月份 as aa from 工资 where 工资.姓名 = '" & ListBox1.Value & "'" myres.Open mySQL, myconnect, adOpenKeyset, adLockOptimistic TextBox5.Value = myres!aa '职工工资显示 Set myres = New ADODB.Recordset mySQL = "select 工资.工资 as aa from 工资 where 工资.姓名 = '" & ListBox1.Value & "'" myres.Open mySQL, myconnect, adOpenKeyset, adLockOptimistic TextBox6.Value = myres!aa End Sub 以上是我自己寫的程式,效果跟老師教的一樣。當然,也不是一次就成功,我就一段一段試,出錯的情況如下: 1. 我把表名寫錯。(這種錯,真該打屁股。 2. 程式當中,沒有注意到分行之後要為關鍵字的前面留一個空格,如此才能讀出正確的英文程式語法。這個地方,印刷廠經常出錯。 3. 沒有留意到在語法中套用文本框變量值時,在单引号之后必须另外加上英文雙引號與&搭配,不是只有单引号就可以。 通過上面的修正,我得到應用的結果,此外,也比較懂得系統報錯時的報錯語句,以及我應該檢查的地方。由於我寫錯很多地方,所以不管是mySQL 還是sql都走不通,卡在一團迷霧當中, 外子看我兩眼發直的坐在沙發上想事情,就知道我在想辦法抓蟲。雖然我用來抓蟲的步驟看起來很笨拙,但,這是最科學的方法: 1. 檢查錯字,語法錯誤,或者表名,數據庫名,路徑名出錯; 2. 檢查印刷廠可能的出錯; 3. 用 On Error Resume Next語句逐行或逐段檢查; 4.上網查相關的知識點。 SO, I GOT IT !! |
|
( 知識學習|科學百科 ) |