关于Adodb+DataGrid的配合使用问题,高手请进!

xingnup 2003-08-05 11:24:37
我要在程序中使用Adodb+DataGrid打开一个Access2000的表,要是用Adodc+DataGrid是没有问题的,但我现在想用Adodb打开则出现了问题:
代码:
rs as new adodb.recordset
conn as new adodb.connection

with conn
.provider="Microsoft.Jet.OLEDB.4.0"
.Open "E:\Temp.mdb"
end with

rs.Open "Select * From table1",conn,adopenstatic,adlockoptimistic
set datagrid1.datasource=rs
datagrid1.refresh

问题:执行了这段代码,无显示错误,但DataGrid1什么也不显示,若将OLEDB.4.0改为OLEDB.3.51打开一个Acess97的表则没有问题,但OLEDB.3.51无法打开Access2000的mdb文件.
请问各位高手应如何解决这个问题呢?
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingnup 2003-08-08
  • 打赏
  • 举报
回复
OK了!果然如michealsong2003(micheal)所说,只要加上一句"conn.CursorLocation=adUseClient"即解决了问题.多谢各位!
csdngoodnight 2003-08-08
  • 打赏
  • 举报
回复
ADO连接:


工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)

Option Explicit

Dim WithEvents adoRS As Recordset
Dim db As Connection


'提数据事件
Set db = New Connection
db.CursorLocation = adUseClient
db.Open"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\db1.mdb;Jet OLEDB:Database Password=1234;"
' ##########################################
'打开密码是1234的Access2000数据库db1.mdb
'不需要密码,就把Jet OLEDB:Database Password=1234;这段去掉

Set adoRS = New Recordset

adoRS.Open "SELECT * FROM 表", db, adOpenStatic, adLockOptimistic
'赋值给 DataGrid 表
Set DataGrid1.DataSource = adoRS
'表刷新
DataGrid1.Refresh

'如果要绑定TextBox(数组):
'Text1(0).DataField = 字段1
'Text1(1).DataField = 字段2
'.........
Dim oText As TextBox 'TextBox
For Each oText In Me.Text1
Set oText.DataSource = adoRS
Next




'添加事件和保存
adoRS.AddNew
'保存
adoRS![字段a] = text1.Text
adoRS![字段b] = text2.Text
adoRS.UpdateBatch adAffectAll

'删除
adoRS.Delete
'重新赋值给表
adoRS.Requery
Set DataGrid1.DataSource = adoRS
DataGrid1.Refresh

'其他相关操作:
'上一条
If Not adoRS.BOF Then adoRS.MovePrevious
If adoRS.BOF And adoRS.RecordCount > 0 Then
'已到最后返回
adoRS.MoveFirst
End If
'下一条
If Not adoRS.EOF Then adoRS.MoveNext '下一条
If adoRS.EOF And adoRS.RecordCount > 0 Then
'已到最后返回
adoRS.MoveLast
End If
'第一条
If Not adoRS.BOF Then adoRS.MoveFirst
'最末
If Not adoRS.EOF Then adoRS.MoveLast





buffaloes 2003-08-07
  • 打赏
  • 举报
回复
楼上说法有误:

我试过了,都没有问题
michealsong2003 2003-08-07
  • 打赏
  • 举报
回复
在ADO + Datagrid时,必须使用CursorLocation=adUseClient ,不能用CursorLocation=adUseServer,DataGrid错误。
(微软有公布)
qingming81 2003-08-06
  • 打赏
  • 举报
回复
dim N as long
Dim strSQL As String

dim conn as New ADODB.Connection
dim rs as New ADODB.Recordset

strSQL = App.Path & "\Biblio.mdb"
strSQL = Replace(strSQL, "\\", "\")

With conn
If .State = adStateOpen Then
.Close
End If
.CursorLocation = adUseClient
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & strSQL
.Open
End With

With rs
.Open "Select * from Authors;", conn, adOpenStatic, adLockOptimistic
If .BOF And .EOF Then
msgbox "没有任何记录"
Exit Sub
End If
.MoveFirst
.movelast
msgbox "有" & .recordcount & "条记录!"
N = .recordcount
End With
易道禅 2003-08-06
  • 打赏
  • 举报
回复
检查rs.recordcount的值是多少,如果等于表中的实际记录数,但DataGrid就是不显示,估计与你在设计阶段打开DataGrid的属性页,编辑过DataGrid的字段有关。
在对象窗口右键单击DataGrid控件,在弹出的菜单中选择“清除字段”,以上故障即消失。
我遇到过同样问题。但为什么会这样,恳求各位高手给予解答。
980 2003-08-05
  • 打赏
  • 举报
回复
Public conn As ADODB.Connection
'Public rs As ADODB.Recordset

Public Sub Main()
Set conn = New ADODB.Connection
conn.ConnectionString = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & App.Path & "\..\data\Sing.mdb"
' conn.ConnectionTimeout = 30
' conn.ConnectionString = "driver={SQL Server};" & _
"server=server;uid=userer;pwd=12345;database=azyw"
' conn.ConnectionString = "driver={SQL Server};" & _
"server=localhost;uid=sa;pwd=;database=sing"
conn.Open
rs.Open "Select * From table1",conn,adopenstatic,adlockoptimistic
set datagrid1.datasource=rs

bf.Show
End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧