'整個程式功能是選擇不同的連接配接方式來進行顯示工作,三種方式顯示效果完全相同
'下面是主程式過程
Private Sub Command1_Click()
Dim selitem As Integer
'判斷連接配接資料庫的方式
If Option1.Value = True Then
selitem = 1
Else
If Option2.Value = True Then
selitem = 2
Else
selitem = 3
End If
End If
'選取不同的資料庫連接配接方式
Select Case selitem
Case 1:
'使用DAO的資料庫連接配接方式
Call ShowByDAO
Case 2:
'使用ADO的資料庫連接配接方式
Call ShowByADO
Case 3:
'使用ODBC的資料庫連接配接方式
Call ShowByODBC
Case 4:
'使用OLEDB的資料庫連接配接方式
Call ShowByOLEDB
End Select
End Sub
Private Sub ShowByDAO()
'使用DAO的資料庫連接配接方式
Dim db As Database
Dim rs As Recordset
Dim sqlstr$ '存放查詢語句
Set db = OpenDatabase(App.Path & "db1.mdb")
sqlstr = "select * from 成績表"
Set rs = db.OpenRecordset(sqlstr)
'顯示結果
Call GridShow(rs)
End Sub
Sub ShowByADO()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'使用資料源來連接配接資料庫
conn.Open "dsn=data"
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "select * from 成績表", conn
Call GridShowOfADO(rs)
End Sub
Sub ShowByODBC()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'使用資料源來連接配接資料庫
conn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=data"
rs.Open "select * from 成績表", conn
'顯示結果
Call GridShowOfADO(rs)
End Sub
Sub ShowByOLEDB()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'使用資料源來連接配接資料庫
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "db1.mdb" + ";Persist Security Info=False"
rs.Open "select * from 成績表", conn
'顯示結果
Call GridShowOfADO(rs)
End Sub
Sub GridShow(rs As Recordset)
'對dao方式進行顯示工作
MSFlexGrid1.TextMatrix(0, 0) = "姓名"
MSFlexGrid1.TextMatrix(0, 1) = "性别"
MSFlexGrid1.TextMatrix(0, 2) = "國文"
MSFlexGrid1.TextMatrix(0, 3) = "數學"
MSFlexGrid1.TextMatrix(0, 4) = "英語"
rs.MoveLast
MSFlexGrid1.Rows = rs.RecordCount + 1
MSFlexGrid1.Cols = rs.Fields.Count
Dim i%
i = 1
rs.MoveFirst
While (Not rs.EOF)
MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)
MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)
MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)
MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)
MSFlexGrid1.TextMatrix(i, 4) = rs.Fields(4)
rs.MoveNext
i = i + 1
'If (rs.EOF = True) Then
' Exit For
Wend
End Sub
Sub GridShowOfADO(rs As ADODB.Recordset)
'對ado方式進行顯示工作
MSFlexGrid1.TextMatrix(0, 0) = "姓名"
MSFlexGrid1.TextMatrix(0, 1) = "性别"
MSFlexGrid1.TextMatrix(0, 2) = "國文"
MSFlexGrid1.TextMatrix(0, 3) = "數學"
MSFlexGrid1.TextMatrix(0, 4) = "英語"
'注意recordcount屬性必須在目前記錄指針在最後一條記錄時才會傳回正确的值
rs.MoveLast
MSFlexGrid1.Rows = rs.RecordCount + 1
MSFlexGrid1.Cols = rs.Fields.Count
Dim i%
i = 1
rs.MoveFirst
While (Not rs.EOF)
MSFlexGrid1.TextMatrix(i, 0) = rs.Fields(0)
MSFlexGrid1.TextMatrix(i, 1) = rs.Fields(1)
MSFlexGrid1.TextMatrix(i, 2) = rs.Fields(2)
MSFlexGrid1.TextMatrix(i, 3) = rs.Fields(3)
MSFlexGrid1.TextMatrix(i, 4) = rs.Fields(4)
rs.MoveNext
i = i + 1
Wend
End Sub
Private Sub Command2_Click()
End
End Sub