我有一个INSERT INTO,可以将参数作为常量正常工作:
INSERT INTO FinalValidityCodes
(tblReceivedSamplersID, Substudy, Location, FinalValidityCode, DateTimeProcessed)
SELECT ID, true, 'I', 0, now()
FROM tblReceivedSamplers
WHERE (SampleID = ?)
这会影响1行(如预期的那样)
然而,如果我将查询更改为使用参数,它将允许它运行但不会影响任何行。
INSERT INTO FinalValidityCodes
(tblReceivedSamplersID, Substudy, Location, FinalValidityCode, DateTimeProcessed)
SELECT ID, ?, ?, ?, ?
FROM tblReceivedSamplers
WHERE (SampleID = ?)
有什么区别以及为什么当我使用参数时,插入看起来是否会失败?
编辑:
SampleID是一种文本数据类型。
答案 0 :(得分:2)
看起来INSERT的目的是向FinalValidityCodes添加一行,其中包含5个字段的值。但是,这些值中的4个将直接由查询参数提供,而ID / tblReceivedSamplersID将从另一个参数派生。
所以我会尝试使用DLookup()表达式来获取ID(使用SampleID的参数),并将该值与其他4个参数值一起插入。这是一个未经测试的猜测。
INSERT INTO FinalValidityCodes (
tblReceivedSamplersID,
Substudy,
Location,
FinalValidityCode,
DateTimeProcessed
)
VALUES (
DLookup("ID", "tblReceivedSamplers", "SampleID ='" & param1 & "'"),
param2,
param3,
param4,
param5
);