我有3张桌子:
成员(Cols:memId,startDate)
历史(Cols:histId,memId,info)
SubHistory(Cols:subHistId,histId,startDate,type)
我需要在带有MS Access的成员startDate上插入SubHistory startDate
我正在使用以下代码:
What I expected (based on running the build with cmd):
test = foo;bar
test2 = foo;bar
What I actually got:
test = "foo;bar";test2="foo;bar"
为什么不工作? Access一直向我询问Members.memId。还有另外一种方法吗? 并非所有会员都有开始日期。
答案 0 :(得分:3)
当您检查该查询的SELECT
部分时,WHERE
子句有问题...
WHERE sh.type = 46 AND m.memId = Members.memId
此时,Access无法使用名为 Members 的数据源,因为您在FROM
子句中将其别名为 m 。并且它无法将该名称解析为INSERT INTO Members
中的成员。
因此,访问猜测Members.memId
必须是您没有提供值的参数,然后要求您提供该参数值。
因此,为了让Access了解您正在讨论该字段值,您需要使用别名而不是表名来引用它。
但是,如果你做出改变......
WHERE sh.type = 46 AND m.memId = m.memId
......条件m.memId = m.memId
似乎毫无用处。也许你打算从其他一个表中引用memId
。
答案 1 :(得分:1)
Members.memId是Members表的主键吗? (如果不是,可能应该)。如果是,那么将不允许NULL值,因此您也需要将其作为INSERT的一部分传递。