Ms access 无法在其他计算机上使用DAO网格运行Exec

Ms access 无法在其他计算机上使用DAO网格运行Exec,ms-access,vb6,dao,Ms Access,Vb6,Dao,我有一个运行DAO网格的旧程序的问题。(是的,我知道,不是我的选择) 在一个新项目中,我重新创建了这个问题,看起来记录集不会“绑定”到Data1对象 我已经在32/64位、Win7/8.1/10机器上测试了它。 在开发机器上,它运行良好。(在VB6中作为Exec程序) Private子命令1_Click() DIMTMPDB As数据库 dimras记录集 出错时继续下一步 设置tmpDB=OpenDatabase(“test.mdb”,0,False) Set r=tmpDB.OpenReco

我有一个运行DAO网格的旧程序的问题。(是的,我知道,不是我的选择) 在一个新项目中,我重新创建了这个问题,看起来记录集不会“绑定”到Data1对象

我已经在32/64位、Win7/8.1/10机器上测试了它。 在开发机器上,它运行良好。(在VB6中作为Exec程序)

Private子命令1_Click()
DIMTMPDB As数据库
dimras记录集
出错时继续下一步
设置tmpDB=OpenDatabase(“test.mdb”,0,False)
Set r=tmpDB.OpenRecordset(“预算”)
Set Data1.Recordset=r
Text1.Text=r.RecordCount'工作正常
Text2.Text=Data1.Recordset.RecordCount
如果为(Err.Number 0),则Text2.Text=Err.Description
'对象变量或未设置块变量;在其他机器上
端接头
我已经检查了组件版本、注册、文件访问……一切似乎都很好

下面是两个屏幕截图。左边是不工作的版本,右边是在开发机器上运行的版本。 它打开一个数据库,获取一个记录集,并对记录进行两次计数。第一次来自Recordset对象,第二次来自Data1对象。最后一个不能在其他机器上工作

我注意到的是,客户机上的exec没有创建ldb文件。但是数据可以在记录集中访问 使用数据1.刷新


要获取RecordCount,您可能需要执行MoveLast然后MoveFirst

请尝试指定选项(RecordSetOptionNum),以确保没有无法绑定到data1控件的仅向前的光标。另外,注释掉下一步错误恢复时的
,这样您可以在调试时看到错误,或者编写正确的错误处理程序。嗨,Jac,好提示。我已经设置了RecordsetOption。我可以在“r”对象中来回跳跃。因此,没有前进,只有光标。接下来的on error resume只是为了测试,并以一种很好的方式捕捉错误描述。问题出在Data1.Recordset=r行中,在该点之后,Data1.Recordset仍然为空。(在选项设置之前和之后)这不仅仅是加载网格的某种延迟?是否
Data1.Recordset为Nothing
返回
True
Set
之后,或者在
RecordCount
失败之后(假设您离开
On Error Resume Next
On?Hi Mark,不,这不是延迟。Data1.Recordset就是不设置。(无错误)Jac的提示很有意思,因为我没有看到ldb文件。更改选项后,我现在拥有独占权限,因此在所有情况下都没有ldp文件。(但该程序在VB6中的dev.machine和exec上都可以运行。但在其他机器上不能运行。)
Private Sub Command1_Click()
 Dim tmpDB As Database
 Dim r As Recordset
 On Error Resume Next

 Set tmpDB = OpenDatabase("test.mdb", 0, False)
 Set r = tmpDB.OpenRecordset("Budget")
 Set Data1.Recordset = r

 Text1.Text = r.RecordCount 'works fine
 Text2.Text = Data1.Recordset.RecordCount 
 If (Err.Number <> 0) Then Text2.Text = Err.Description
 'Object variable or With block variable not set; on other machines
 End Sub