我使用此代码在 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 文档。 没有结果。
试试这个:
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
减少到最低限度。
在表中,通过将两个字段都指定为索引来解决问题。我不知道具体原因,需要阅读更多有关 DAO 的内容。
如果通过对表中的字段建立索引还不能解决问题,则使用select命令中的order by会得到正确的操作,根据输出字段或涉及的字段之一来排列select命令的输出答案在选择命令中。