7

我想将查询结果链接到文本框,但出现此错误:这是我的代码:

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT XValue, YValue,Wert FROM tb_DCM_Daten WHERE (FzgID=" & Forms!frm_fahrzeug!ID & " AND Name='" & List2.Value & "')")
Text10.Text = rst!XValue //error in this line

应该是返回 ca 20 记录

为什么我会收到此错误,我该如何解决?

4

5 回答 5

14

错误的一个可能原因是NameAccess 中的保留字,因此您应该使用

... & " AND [Name]='" & ...

您也可以rst.EOF在尝试使用之前进行测试rst!XValue。也就是说,要验证您的查询是否至少返回一行,您可以添加代码

If rst.EOF Then
    MsgBox "The Recordset is empty."
End If

通话后立即.OpenRecordset。如果 Recordset空,那么您需要按照@GregHNZ 在上面的评论中的描述验证您的 SQL 语句。

于 2013-06-27T06:51:47.847 回答
1

通常,我会这样做。在 Access 中创建一个新查询,切换到 SQL View,将我的代码粘贴到那里,然后转到 Design >> Run。

SELECT XValue, YValue,Wert FROM [tb_DCM_Daten] WHERE [FzgID]=12 AND [Name]='ABC';

如果您的查询语法正确,您应该会看到结果,否则错误 mssg 会告诉您错在哪里。我曾经调试过比你的更复杂的查询,这就是我所做的方式。如果仍然有错误,也许你应该尝试

Dim sql as String
sql = "SELECT...."
Set rst = CurrentDb.OpenRecordset(sql)

另一个可能的原因可能是您的表名。我只是想知道你的表名到底是什么?如果您的表格包含空格,您应该将其设为 [DCM Daten]。

于 2013-06-28T01:30:28.590 回答
1

我想补充的另一件事可能会导致这种情况,即您返回一组具有“保留字”字段的结果集,例如:

您的“客户”表具有如下字段名称:

Custnum  | Date | Custname

我们知道Date字段是大多数数据库的保留字

所以当你使用

SELECT * FROM Customers

这可能会返回“无当前记录”,因此请选择该表的所有字段,只需最小化您的字段选择,如下所示:

SELECT custnum, custname FROM Customers
于 2015-09-13T07:33:01.550 回答
0

在尝试上述解决方案无济于事后,我找到了另一个解决方案:Access表中的Yes/No字段不能为Null(参见allenbrowne.com/bug-14

虽然我的情况略有不同,我只得到了“无当前记录”。使用 GROUPBY 运行查询时出错,我的查询在临时消除是/否字段后工作。

但是,我的 Yes/No 字段令人惊讶地不包含任何 Null。但是,故障排除让我发现了一个相关的错误,该错误确实用 Null Yes/No 值填充了我的查询结果。修复该相关错误消除了我的结果中的 Null Yes/No 值,从而消除了此错误。

于 2018-11-22T15:54:14.820 回答
0

在以下情况下,我遇到了同样的错误:

在我的情况下,记录集返回一条记录,其中包括一些具有 Null 值的字段。

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl WHERE (criteria)", dbOpenDynaset)
Textbox1 = rst!field1 'error in this line - Non-Null value
Textbox2 = rst!field2 'Null value
Textbox3 = rst!field1 'Null value

在打开 rst 并在分配之前查看 Locals 会显示我期望的记录集。尝试从此记录集中分配值时引发错误。

解决此问题的是确保所有字段都包含非 Null 值。

只是为未来的求职者发布这个。

于 2021-08-01T07:32:34.097 回答