可以,只是比较旧,语法。Dim db As Database, rb As Recordset set db = Workspaces(0).OpenDatabase("文件目录及文件名") Set rb = db.OpenRecordset("表名", dbOpenDynaset)
你首先要在VB菜单中: “工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library” 注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的Private Sub ComOK_Click() Dim SQLstr As String,cnstr AS String Dim cn AS New ADODB.Connection'连接对象 Dim rs As New ADODB.Recordset'记录集对象 cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & App.Path & "\data\XXXX.mdb;" _ & "Persist Security Info=False" '连接字符串 cn.open cnstr' 打开数据库连接 rs.CursorLocation =adUseClient sqlstr="slect * from XXX表" rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录 set datagrid1.datasource=rs datagrid1.refresh rs.close'关闭记录集对象 set rs=nothing End Sub 本示例是将数据库中的一张表的记录显示在datagrid的控件中。
Dim WithEvents adoPrimaryRS As Recordset Dim mbChangedByCode As Boolean Dim mvBookMark As Variant Dim mbEditFlag As Boolean Dim mbAddNewFlag As Boolean Dim mbDataChanged As BooleanPrivate Sub Form_Load() Dim db As Connection Set db = New Connection db.CursorLocation = adUseClient db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;" Set adoPrimaryRS = New Recordset adoPrimaryRS.Open "select 产品ID,产品名称,单价,单位数量,订购量,库存量,类别ID,再订购量,中止 from 产品 Order by 产品ID", db, adOpenStatic, adLockOptimistic Dim oText As TextBox '绑定文本框到数据提供者 For Each oText In Me.txtFields Set oText.DataSource = adoPrimaryRS Next Dim oCheck As CheckBox '绑定复选框到数据提供者 For Each oCheck In Me.chkFields Set oCheck.DataSource = adoPrimaryRS Next mbDataChanged = False End SubPrivate Sub Form_Resize() On Error Resume Next lblStatus.Width = Me.Width - 1500 cmdNext.Left = lblStatus.Width + 700 cmdLast.Left = cmdNext.Left + 340 End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If mbEditFlag Or mbAddNewFlag Then Exit Sub Select Case KeyCode Case vbKeyEscape cmdClose_Click Case vbKeyEnd cmdLast_Click Case vbKeyHome cmdFirst_Click Case vbKeyUp, vbKeyPageUp If Shift = vbCtrlMask Then cmdFirst_Click Else cmdPrevious_Click End If Case vbKeyDown, vbKeyPageDown If Shift = vbCtrlMask Then cmdLast_Click Else cmdNext_Click End If End Select End SubPrivate Sub Form_Unload(Cancel As Integer) Screen.MousePointer = vbDefault End SubPrivate Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) '为这个 recordset 显示当前记录位置 lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition) End SubPrivate Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) '验证代码置于此处 '下列动作发生时该事件被调用 Dim bCancel As Boolean Select Case adReason Case adRsnAddNew Case adRsnClose Case adRsnDelete Case adRsnFirstChange Case adRsnMove Case adRsnRequery Case adRsnResynch Case adRsnUndoAddNew Case adRsnUndoDelete Case adRsnUndoUpdate Case adRsnUpdate End Select If bCancel Then adStatus = adStatusCancel End SubPrivate Sub cmdAdd_Click() On Error GoTo AddErr With adoPrimaryRS If Not (.BOF And .EOF) Then mvBookMark = .Book End If .AddNew lblStatus.Caption = "添加记录" mbAddNewFlag = True SetButtons False End With Exit Sub AddErr: MsgBox Err.Description End SubPrivate Sub cmdDelete_Click() On Error GoTo DeleteErr With adoPrimaryRS .Delete .MoveNext If .EOF Then .MoveLast End With Exit Sub DeleteErr: MsgBox Err.Description End SubPrivate Sub cmdRefresh_Click() '只有多用户应用程序需要 On Error GoTo RefreshErr adoPrimaryRS.Requery Exit Sub RefreshErr: MsgBox Err.Description End SubPrivate Sub cmdEdit_Click() On Error GoTo EditErr lblStatus.Caption = "编辑记录" mbEditFlag = True SetButtons False Exit SubEditErr: MsgBox Err.Description End Sub Private Sub cmdCancel_Click() On Error Resume Next SetButtons True mbEditFlag = False mbAddNewFlag = False adoPrimaryRS.CancelUpdate If mvBookMark > 0 Then adoPrimaryRS.Book = mvBookMark Else adoPrimaryRS.MoveFirst End If mbDataChanged = FalseEnd SubPrivate Sub cmdUpdate_Click() On Error GoTo UpdateErr adoPrimaryRS.UpdateBatch adAffectAll If mbAddNewFlag Then adoPrimaryRS.MoveLast '移到新记录 End If mbEditFlag = False mbAddNewFlag = False SetButtons True mbDataChanged = False Exit Sub UpdateErr: MsgBox Err.Description End SubPrivate Sub cmdClose_Click() Unload Me End SubPrivate Sub cmdFirst_Click() On Error GoTo GoFirstError adoPrimaryRS.MoveFirst mbDataChanged = False Exit SubGoFirstError: MsgBox Err.Description End SubPrivate Sub cmdLast_Click() On Error GoTo GoLastError adoPrimaryRS.MoveLast mbDataChanged = False Exit SubGoLastError: MsgBox Err.Description End SubPrivate Sub cmdNext_Click() On Error GoTo GoNextError If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then Beep '已到最后返回 adoPrimaryRS.MoveLast End If '显示当前记录 mbDataChanged = False Exit Sub GoNextError: MsgBox Err.Description End SubPrivate Sub cmdPrevious_Click() On Error GoTo GoPrevError If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then Beep '已到最后返回 adoPrimaryRS.MoveFirst End If '显示当前记录 mbDataChanged = False Exit SubGoPrevError: MsgBox Err.Description End SubPrivate Sub SetButtons(bVal As Boolean) cmdAdd.Visible = bVal cmdEdit.Visible = bVal cmdUpdate.Visible = Not bVal cmdCancel.Visible = Not bVal cmdDelete.Visible = bVal cmdClose.Visible = bVal cmdRefresh.Visible = bVal cmdNext.Enabled = bVal cmdFirst.Enabled = bVal cmdLast.Enabled = bVal cmdPrevious.Enabled = bVal End Sub
set db = Workspaces(0).OpenDatabase("文件目录及文件名")
Set rb = db.OpenRecordset("表名", dbOpenDynaset)
“工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.X Library”
注:2.X为版本号,如果你机子上有高版本的就用高版本的,如:2.5或2.6的Private Sub ComOK_Click()
Dim SQLstr As String,cnstr AS String
Dim cn AS New ADODB.Connection'连接对象
Dim rs As New ADODB.Recordset'记录集对象
cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & App.Path & "\data\XXXX.mdb;" _
& "Persist Security Info=False" '连接字符串
cn.open cnstr' 打开数据库连接
rs.CursorLocation =adUseClient
sqlstr="slect * from XXX表"
rs.open sqlstr,cn,3,3'执行SQL语句,并返回记录
set datagrid1.datasource=rs
datagrid1.refresh
rs.close'关闭记录集对象
set rs=nothing
End Sub
本示例是将数据库中的一张表的记录显示在datagrid的控件中。
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As BooleanPrivate Sub Form_Load()
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;" Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select 产品ID,产品名称,单价,单位数量,订购量,库存量,类别ID,再订购量,中止 from 产品 Order by 产品ID", db, adOpenStatic, adLockOptimistic Dim oText As TextBox
'绑定文本框到数据提供者
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
Dim oCheck As CheckBox
'绑定复选框到数据提供者
For Each oCheck In Me.chkFields
Set oCheck.DataSource = adoPrimaryRS
Next mbDataChanged = False
End SubPrivate Sub Form_Resize()
On Error Resume Next
lblStatus.Width = Me.Width - 1500
cmdNext.Left = lblStatus.Width + 700
cmdLast.Left = cmdNext.Left + 340
End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If mbEditFlag Or mbAddNewFlag Then Exit Sub Select Case KeyCode
Case vbKeyEscape
cmdClose_Click
Case vbKeyEnd
cmdLast_Click
Case vbKeyHome
cmdFirst_Click
Case vbKeyUp, vbKeyPageUp
If Shift = vbCtrlMask Then
cmdFirst_Click
Else
cmdPrevious_Click
End If
Case vbKeyDown, vbKeyPageDown
If Shift = vbCtrlMask Then
cmdLast_Click
Else
cmdNext_Click
End If
End Select
End SubPrivate Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault
End SubPrivate Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'为这个 recordset 显示当前记录位置
lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)
End SubPrivate Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'验证代码置于此处
'下列动作发生时该事件被调用
Dim bCancel As Boolean Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select If bCancel Then adStatus = adStatusCancel
End SubPrivate Sub cmdAdd_Click()
On Error GoTo AddErr
With adoPrimaryRS
If Not (.BOF And .EOF) Then
mvBookMark = .Book
End If
.AddNew
lblStatus.Caption = "添加记录"
mbAddNewFlag = True
SetButtons False
End With Exit Sub
AddErr:
MsgBox Err.Description
End SubPrivate Sub cmdDelete_Click()
On Error GoTo DeleteErr
With adoPrimaryRS
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End SubPrivate Sub cmdRefresh_Click()
'只有多用户应用程序需要
On Error GoTo RefreshErr
adoPrimaryRS.Requery
Exit Sub
RefreshErr:
MsgBox Err.Description
End SubPrivate Sub cmdEdit_Click()
On Error GoTo EditErr lblStatus.Caption = "编辑记录"
mbEditFlag = True
SetButtons False
Exit SubEditErr:
MsgBox Err.Description
End Sub
Private Sub cmdCancel_Click()
On Error Resume Next SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
If mvBookMark > 0 Then
adoPrimaryRS.Book = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbDataChanged = FalseEnd SubPrivate Sub cmdUpdate_Click()
On Error GoTo UpdateErr adoPrimaryRS.UpdateBatch adAffectAll If mbAddNewFlag Then
adoPrimaryRS.MoveLast '移到新记录
End If mbEditFlag = False
mbAddNewFlag = False
SetButtons True
mbDataChanged = False Exit Sub
UpdateErr:
MsgBox Err.Description
End SubPrivate Sub cmdClose_Click()
Unload Me
End SubPrivate Sub cmdFirst_Click()
On Error GoTo GoFirstError adoPrimaryRS.MoveFirst
mbDataChanged = False Exit SubGoFirstError:
MsgBox Err.Description
End SubPrivate Sub cmdLast_Click()
On Error GoTo GoLastError adoPrimaryRS.MoveLast
mbDataChanged = False Exit SubGoLastError:
MsgBox Err.Description
End SubPrivate Sub cmdNext_Click()
On Error GoTo GoNextError If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveLast
End If
'显示当前记录
mbDataChanged = False Exit Sub
GoNextError:
MsgBox Err.Description
End SubPrivate Sub cmdPrevious_Click()
On Error GoTo GoPrevError If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveFirst
End If
'显示当前记录
mbDataChanged = False Exit SubGoPrevError:
MsgBox Err.Description
End SubPrivate Sub SetButtons(bVal As Boolean)
cmdAdd.Visible = bVal
cmdEdit.Visible = bVal
cmdUpdate.Visible = Not bVal
cmdCancel.Visible = Not bVal
cmdDelete.Visible = bVal
cmdClose.Visible = bVal
cmdRefresh.Visible = bVal
cmdNext.Enabled = bVal
cmdFirst.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
End Sub
就可以了!
sp5的下载链接
http://www.microsoft.com/downloads/details.aspx?FamilyID=9066d31d-ba23-4e8a-b7c8-b95f5e54f896&DisplayLang=zh-cn
我用的是 加载了一个 DAO3.6就解决了。这里我还有一个问题希望大家帮帮忙:我在 Win2000/Xp 下用 vsPrinter7.0 无法设置自定义纸型,怎么办?
具体描述如下:
vp.PaperSizes(256) 此属性在 Win98 下为 True (即:可自定义),而在 Win2000/xp 下均为 False ,等于我无法自定义纸张,因为我要使用宽/窄行打印纸。哪位高手指点一下吧!谢谢!还有:宽/窄行打印纸的国际标准名称是什么?