Sql查询不返回数据

问题描述 投票:0回答:3

我使用此代码在 VBA Access 中选择代码编号的产品,并测试是否发现重复的保存产品。

Dim db as dao.database
Dim rs as dao.recordset

Set db = currentdb

Sql_string = "SELECT code_number FROM table_product WHERE name_product ='Printer HP Color Laser Jet 550dn'"

Set rs = db.openrecordset(Sql_string)

If rs.recordcount > 1 then 
    Msgbox "Duplicate Product"
    db.close
    rs.close 'all seted to nothings
    Exit sub
Else:Text1.value =rs!code_number
End if

此代码无法识别重复的产品名称。

虽然产品重复了几次,但它总是返回值1,我检查它是否有不同的产品名称,但没有检测到重复的产品名称。

以下代码运行良好,与上面的代码有很多相似之处:

Dim db as dao.database
Dim rs as dao.recordset

Set db = currentdb

Sql_string = "SELECT product_name FROM table_product WHERE code_number ='INK001'"

Set rs = db.openrecordset(Sql_string)

If rs.recordcount > 1 then 
    Msgbox "Duplicate Product"
    db.close
    rs.close
    Exit sub
Else:Text2.value =rs!product_name
End if

我使用Access 2016。有人知道问题是什么吗?请指导我。 我完全困惑了。

检查表结构和字段名。 使用此代码签入任何数据库文件。 检查查询中的 sql_string 是否正常工作,但 vba 无法正常工作。 哦,修理办公室。 阅读 dao 文档。 没有结果。

vba ms-access dao ms-access-2016 recordset
3个回答
0
投票

试试这个:

Dim db As dao.database
Dim rs As dao.recordset

Set db = currentdb

Sql_string = "SELECT code_number FROM table_product WHERE name_product = 'Printer HP Color Laser Jet 550dn'"

Set rs = db.openrecordset(Sql_string)

If rs.recordcount > 0 then 
    Msgbox "Duplicate Product"
Else
    Me!Text1.value = rs!code_number
End if
rs.close

或使用

DLookup
减少到最低限度。


0
投票

在表中,通过将两个字段都指定为索引来解决问题。我不知道具体原因,需要阅读更多有关 DAO 的内容。


0
投票

如果通过对表中的字段建立索引还不能解决问题,则使用select命令中的order by会得到正确的操作,根据输出字段或涉及的字段之一来排列select命令的输出答案在选择命令中。

© www.soinside.com 2019 - 2024. All rights reserved.