访问(OleDb)参数提示顺序

时间:2014-03-29 21:14:08

标签: sql ms-access oledb jet

我知道在使用Access(或一般的OleDb)时,以正确的顺序提供参数非常重要,即使您为它们命名,因为无论名称如何,它们总是被订单选中。

但是在此查询中:

SELECT Comments.ID, Users.Nom, CommentsHelpfulness.Helpful FROM (Comments INNER JOIN Users ON Comments.UserID = Users.ID) LEFT JOIN CommentsHelpfulness ON (CommentsHelpfulness.CommentID = Comments.ID AND (CommentsHelpfulness.UserID = [enter userid])) WHERE (Comments.GameID = [enter gameid])

为什么在提示我输入用户ID之前,Access会提示我输入gameid?事实证明,在我的asp.net网站上使用它,我还必须首先添加gameid。

如何实际确定订单,我必须在其中添加参数?我以为它只是从左到右。 (我不想知道如何更改订单,我真的只对如何确定订单感兴趣)

1 个答案:

答案 0 :(得分:0)

OleDB确实忽略参数 names ,并且要求必须按照它们在SQL命令文本中出现的确切顺序声明参数。但是,当您从Access应用程序本身运行已保存的参数查询时,您使用OleDb ;你(隐含地)使用DAO和DAO 注意参数名称。

因此,Access提示您输入参数的顺序严格取决于您或您的用户。如果要定义提示出现的特定顺序,可以使用如下的PARAMETERS子句:

PARAMETERS MinAccounts Long, SelectedPosition Text ( 255 );
SELECT Agents.*
FROM Agents
WHERE (((Agents.Position)=[SelectedPosition]) 
    AND ((Agents.[Number of Accounts])>=[MinAccounts]));