错误上打开记录MSACCESS

错误上打开记录MSACCESS

问题描述:

我使用访问下面的代码来尝试打开一个记录:“太少参数”错误上打开记录MSACCESS

Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Set db = CurrentDb 
Set rs = db.OpenRecordset("fieldHistory") 

我一直得到错误

fieldHistory与SQL代码查询如下:

SELECT Date, User, Type 
FROM Inventory 
WHERE ((Inventory.Type) In ("Insert","EditTo")); 

我已经研究过这一些 - 我发现,如果我使用的代码db.OpenRecordset(“从清单中选择*”)我不要错误。

此外,我发现这个论坛似乎是对某事,但我不明白如何创建适当的querydef对象来创建我的查询。

http://access.mvps.org/access/queries/qry0013.htm

非常感谢您!

创建一个新的数据库。

打开新的数据库,并确保您的DAO包含在参考文献中。

插入一个新的标准模块,确保在声明部分包含Option Explicit。

然后粘贴此代码并运行它。

Public Sub CreateTableZack() 
    Dim strSql As String 

    strSql = "CREATE TABLE tblZack (" & vbNewLine & _ 
     vbTab & "id COUNTER CONSTRAINT pkey PRIMARY KEY," & vbNewLine & _ 
     vbTab & "foo_text TEXT(255)," & vbNewLine & _ 
     vbTab & "date_assigned DATETIME);" 
    Debug.Print strSql 

    CurrentProject.Connection.Execute strSql 
End Sub 

假设表创建成功后,创建qryZack以此为它的SQL:

SELECT * 
FROM tblZack; 

然后尝试你的代码,打开基于qryZack DAO记录。

Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Set db = CurrentDb 
Set rs = db.OpenRecordset("qryZack") 

它工作吗?

如果没有,您的Access安装可能会被彻底清理......您可能需要修复或重新安装它。如果可以的话,你也可以在另一台有Access的机器上尝试。

如果它适用于新数据库,但不适用于旧数据库,则旧数据库可能已损坏。首先制作备份,然后尝试使用Compact &修复。

另一个问题是您的字段名称。日期,用户和类型都是访问保留字。见Problem names and reserved words in Access。我不能说这些名字在这里引起了问题,但是为数据库对象(表格,字段,查询等)使用保留名称可能会产生严重后果...就像它将Access中的垃圾混淆了一样。所以我会很好地避免它们。

编辑:您还应该检查旧数据库中的引用。缺失/中断的引用也混淆了Access的垃圾。

日期,用户和类型都是MS Access中的特殊字词或保留字。请勿将它们用于您的字段名称。

将括号中的每个括起来都可能取得一些成效,但强烈建议您更改字段名称。

+0

对不起 - 澄清 - 这些不是我的实际字段名称。我只是在这里用它来简化。 – Zack 2011-06-01 12:56:08