首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAO .Execute方法在Access mde中失败

DAO .Execute方法在Access mde中失败
EN

Stack Overflow用户
提问于 2010-02-19 20:51:02
回答 2查看 2.2K关注 0票数 2

首先,我使用Access 2000和DAO。我有代码执行简单的INSERT查询,我使用db.Execute调用该查询。此代码在mdb内部运行良好。但是,如果我编译成mde,那么我将

错误5-无效的过程调用或参数

在这一行中,记录不会被插入。但是,如果我使用完全相同的SQL语句从db.Execute更改为DoCmd.RunSQL,则插入记录时不会出现任何问题。有人知道为什么DAO数据库对象的DAO执行方法一旦编译成MDE就会突然停止工作吗?

注意:只有当我指定了dbFailOnError方法的.Execute选项时,我才会得到错误。如果关闭该选项,则不会出现错误,但记录仍未插入。

编辑:

此行在MDE中失败(但在MDB中运行良好):

代码语言:javascript
复制
App.db.Execute InsertSQL, dbFailOnError

在上面的代码行上带有断点的即时窗口中:

代码语言:javascript
复制
?InsertSQL
INSERT INTO Changes
(PropertyID, FieldID, [Which], [When], [Before], Reason, ReportChange)
VALUES (1, 2, "M", #2/19/2010 4:51:44 PM#, "Suite 2; 430 W KING ST; ABBOTTSTOWN, PA 17301-9771", "Per Owner", True)

(我有一个完整的类模块,专门用于构建和执行InsertSQL语句,因此确切地显示我是如何构建字符串变量是不实际的。然而,我真的不认为这是相关的。)

这条线在任何地方都起作用:

代码语言:javascript
复制
DoCmd.RunSQL InsertSQL

编辑: App.db定义(注意我的项目中没有引用ADO,只有DAO):

代码语言:javascript
复制
Public App As New clsApp

clsApp类模块(仅相关行):

代码语言:javascript
复制
Private m_objDB As Database

Public Property Get db() As Database
    Set db = m_objDB
End Property

Private Sub Class_Initialize()
    Set m_objDB = CurrentDb
End Sub

Private Sub Class_Terminate()
    Set m_objDB = Nothing
End Sub

如果您好奇的话,我使用App.db而不是CurrentDB有两个主要原因:( 1)不必重复调用CurrentDB函数(调用它一次,然后只引用它返回的对象),性能会略有提高;( 2)数据库对象(如.RecordsAffected )的属性总是返回相关信息。另外,打字更快。我是个程序员,所以我天生就很懒。

编辑:首先让我向那些一直关注这条线索并试图帮助我的人道歉。我似乎遗漏了问题的关键细节。App.db.Execute调用发生在类模块(clsSQL)中,它引用一个名为App的全局变量,该变量本身就是另一个类模块(clsApp)的实例。我猜问题在于,我指的是来自另一个类模块中的类模块的实例。有人能确认从另一个类模块中调用一个类模块是否是由MDB而不是MDEs支持的吗?这不是一个问题。我想的太多了。请看我对整个故事的回答。

EN

回答 2

Stack Overflow用户

发布于 2010-02-19 21:18:44

您可能在传递给Execute语句的字符串中使用窗体控件引用。就是我!ControlName在引号里。改变它,使它在引号之外。“.选择我!ControlName作为Field1,Field2,Field3 .”“……选择”& me!ControlName &“As Field1,Field2,Field3 .”

因此,VBA可以正确地转换控件名称的值。Docmd.RunSQL为你做这件事。执行不能。

票数 0
EN

Stack Overflow用户

发布于 2010-02-20 18:04:59

您的参考资料中有什么版本的DAO?可能是旧版本在mdb上运行良好,但在mde上失败。尝试将其设置为最新版本,并再次编译。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2299455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档