【发布时间】:2018-04-12 18:07:49
【问题描述】:
我遇到了通过 MS Access 前端删除记录的问题。在对话框表单上,我放置了按钮,并在 onclick 事件中创建了一个带有 VBA 命令RunCommand acCmdDeleteRecord 的子程序。
执行似乎继续进行,我收到有关从数据库中删除单个记录的警告,并且在我点击 OK 并刷新后没有任何反应。事实上删除的记录仍然存在。
此外,我尝试将其从 MS Access 查询(表单所基于)中删除,但仍然没有运气 - 再次出现确认窗口,单击“确定”按钮并刷新记录后仍保留在表中。
我已经成功地直接从 rdbms 中删除了记录(Postgresql 9,4 ODBC 通过连接字符串和链接表连接到 MS Access 前端)。 Postgresql 日志中没有其他信息。似乎一切都应该工作,但事实并非如此。并且没有任何错误消息。请您给我一些建议吗?
这是 SQL 查询:
SELECT inventory.inventory_id, inventory.serial_number, inventory.registry_number,
inventory.year_of_manufacture, inventory.description,
inventory.assortment_id_assortment, inventory.personnel_id_personnel,
inventory.classification_id_classification, inventory.case_series,
inventory.case_id, inventory.comments, inventory.mac_address,
assortment.assortment_id, assortment.vendor, assortment.model,
assortment.type_id_dict_assortment_types, assortment.jim,
dict_assortment_types.type_id, dict_assortment_types.type_name,
personnel.personnel_id, personnel.first_name, personnel.last_name,
personnel.operational_id, personnel.seal_number,
personnel.military_grade, dict_classifications.classification_id,
dict_classifications.classification_abbr,
dict_classifications.classification_name, carrying_cases.description,
carrying_cases.location, inventory_comments.comment_id,
inventory_comments.comment, inventory_comments.inventory_id_inventory,
inventory.sdip_27, inventory.seal_number, inventory.seal_number,
inventory.description
FROM inventory_comments RIGHT JOIN (carrying_cases
RIGHT JOIN ((((inventory INNER JOIN assortment
ON inventory.assortment_id_assortment = assortment.assortment_id)
LEFT JOIN dict_assortment_types
ON assortment.type_id_dict_assortment_types = dict_assortment_types.type_id)
LEFT JOIN personnel ON inventory.personnel_id_personnel = personnel.personnel_id)
LEFT JOIN dict_classifications ON inventory.classification_id_classification
= dict_classifications.classification_id)
ON (carrying_cases.case_id = inventory.case_id)
AND (carrying_cases.case_series = inventory.case_series))
ON inventory_comments.inventory_id_inventory = inventory.inventory_id
ORDER BY inventory.inventory_id;
谢谢你 抽烟。
【问题讨论】:
-
那么,你可以通过删除链接表中的记录来删除它,但不能在基于它的查询中删除它?还是直接来自 rdbms 在 Postgresql 本身?
-
好吧,我刚刚尝试使用链接表删除它 - 成功。早些时候我已经设法使用 pgAdminIII 做到这一点。我不能做的是使用带有此查询作为数据源附加的查询或表单。越来越接近感谢 Ypur 的问题... :)
-
啊,当然是奇怪的行为。不过,我无法用提供的信息复制它。请提供查询。您可以尝试将表单直接绑定到表格。
-
啊,我很惊讶 Access 允许您删除具有这么多连接的查询记录(并且不返回
Query not updateable)。您可能最好使用删除查询或记录集手动删除记录。即使我不知道应该从哪个表中删除一条记录以查看该查询(我猜是 inventory_cmets,但它也可能是其他表之一)。 -
嗯,这是一个主观问题。级联查询可能会根据情况增加或降低复杂性。我通常尝试将表单直接绑定到表,而不使用任何查询,并使用子表单和域聚合来显示相关信息,但这可能并不适合所有数据库。
标签: sql vba postgresql ms-access odbc