我正在使用 Access 2003(由于复古兼容性而被迫这样做)来修改一个 10 年前的项目,而不是我制作的。我在执行此查询时遇到错误:
INSERT INTO ClientiContratto ( ID, CLIENTE, DATA, PERIODO, IMPORTO, FATTURATO )
SELECT [Forms]![InserisciContratto]![Cliente] AS Espr1, (SELECT Nome from TAnagrafica WHERE TAnagrafica.IDAnagr = [Forms]![InserisciContratto]![Cliente]) AS Espr2, [Forms]![InserisciContratto]![Data] AS Espr3, [Forms]![InserisciContratto]![Periodo] AS Espr4, [Forms]![InserisciContratto]![Importo] AS Espr5, False AS Espr6;
由于
(SELECT Nome from TAnagrafica WHERE TAnagrafica.IDAnagr = [Forms]![InserisciContratto]![Cliente]) AS Espr2
如果我独立执行此查询,它就像一个魅力,但是当将查询插入到 INSERT INTO...SELECT 语句时,它返回(从意大利语翻译):
运行时错误“3000”:保留错误(-3025):没有关于此错误的消息。
目的是根据在活动表单中找到的值在表中插入一些新值,不工作的代码部分应该在表中搜索链接到 [InserisciContratto]![Cliente] 实际值的值。
我究竟做错了什么?也许是因为我无法在以前的 SELECT 查询中执行 SELECT 子查询?
任何帮助,将不胜感激。
您可以使用 aDLookUp
而不是子查询来解决该问题:
DLookUp("Nome", "TAnagrafica", "TAnagrafica.IDAnagr = [Forms]![InserisciContratto]![Cliente]")
请注意,您可以DLookUp
在表单控件或查询中使用 。两者都有效。在查询中,它看起来像这样:
INSERT INTO ClientiContratto ( ID, CLIENTE, DATA, PERIODO, IMPORTO, FATTURATO )
SELECT [Forms]![InserisciContratto]![Cliente] AS Espr1, DLookUp("Nome", "TAnagrafica", "TAnagrafica.IDAnagr = [Forms]![InserisciContratto]![Cliente]") AS Espr2, [Forms]![InserisciContratto]![Data] AS Espr3, [Forms]![InserisciContratto]![Periodo] AS Espr4, [Forms]![InserisciContratto]![Importo] AS Espr5, False AS Espr6;
此类错误的另一个常见来源是 Access 在使用子查询而不是从真实表查询时表现得很挑剔。您可以通过使用子查询作为主查询轻松解决这个问题。请注意,这确实需要子查询始终返回结果,否则不会插入任何行:
INSERT INTO ClientiContratto ( ID, CLIENTE, DATA, PERIODO, IMPORTO, FATTURATO )
SELECT [Forms]![InserisciContratto]![Cliente] AS Espr1, Nome AS Espr2, [Forms]![InserisciContratto]![Data] AS Espr3, [Forms]![InserisciContratto]![Periodo] AS Espr4, [Forms]![InserisciContratto]![Importo] AS Espr5, False AS Espr6
FROM TAnagrafica
WHERE TAnagrafica.IDAnagr = [Forms]![InserisciContratto]![Cliente]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句