用子查询插入INSTO&参数在MS-Access中不起作用

时间:2012-02-08 17:58:29

标签: ms-access ms-access-2007

我有一个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是一种文本数据类型。

1 个答案:

答案 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
    );