如何将此SQL Server Insert语句转换为可在Access中使用

时间:2014-03-19 21:49:31

标签: sql ms-access ado.net oledb

Access对两个子查询都有问题但是当我单独运行它们时它们工作正常

Insert INTO tblFeedbackJoin (
   FeedbackID,
   ProductID,BrokerID,
   VendorID
)  Values( 
   SELECT MAX(FeedbackID) From tblfeedback , 
   NULL , 
   SELECT BrokerID From tblBroker WHERE bName = 'ABC Broker' , 
   NULL
)

还尝试将子查询封装在括号中......无济于事。

可以在Access中完成吗?

2 个答案:

答案 0 :(得分:1)

我认为在这种情况下你不能使用子查询,请尝试域聚合函数。

INSERT INTO tblfeedbackjoin
            (feedbackid,
             productid,
             brokerid,
             vendorid)
VALUES      ( DMax("feedbackid","tblfeedback"),
            NULL,
            Dlookup("brokerid", "tblbroker", "bname = 'ABC Broker'"),
            NULL) 

对于多用户数据库中的Max,我会非常紧张。

答案 1 :(得分:1)

我很惊讶这在SQL Server中有效,因为它不是有效的SQL。您可以在VALUES中使用SELECTINSERT,但不能同时使用两者。

Insert INTO tblFeedbackJoin (FeedbackID,ProductID,BrokerID,VendorID)
SELECT MAX(tblfeedback.FeedbackID), NULL, tblBroker.BrokerID , NULL
 From tblfeedback, tblBroker
 WHERE tblBroker.bName = 'ABC Broker'
GROUP BY tblBroker.BrokerID

是有效的SQL。