2014-03-29 73 views
1

我知道何時使用Access(或一般OleDb),重要的是以正確的順序提供參數,即使您命名它們,因爲它們總是按順序拾取,無論的名字。訪問(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,它會提示我的用戶ID之前?事實證明,在我的asp.net網站中使用這個,我也必須先添加gameid。

如何確定訂單,我必須添加參數?我認爲這只是從左到右。 (我不想知道如何改變順序,我真的只是對它的確定感興趣)

+0

如果你移動的用戶ID的WHERE參數,你會得到左到右,但你有一個混合包在這裏。要控制順序,請參閱以下文章:http://blogannath.blogspot.com/2010/02/microsoft-access-tips-tricks-parameter.html(搜索字符串'一般而言,'中的順序) –

+0

控制訂單是有幫助的,但如果您不要人爲地更改訂單,我仍然想知道決定訂單的是什麼。您的鏈接指出「用戶提示查詢參數的順序與查詢中從開始到結束時遇到的參數順序相同」,但這不是這種情況。在WHERE中的參數總是在加入條件之前進行?或者它與托架有什麼關係? – user3475924

+0

我不知道關於訂單的事實,但已經知道它可以根據是否使用子查詢(在主要前詢問subs)來改變;這似乎是有道理的,它會在加入之前提示'Where'參數。 –

回答

0

確實,OleDB忽略參數名稱並且要求參數必須準確地聲明它們出現在SQL命令文本中的順序。但是,當您從Access應用程序本身運行已保存的參數查詢時,您使用OleDb是而不是;你(隱含地)使用DAO和DAO 確實注意參數名稱。

因此,Access提示您輸入參數的順序完全是您或您的用戶偏好的問題。如果要定義在該提示出現,你可以使用參數子句這樣一個特定的順序:

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

感謝您的幫助。然而,我真正感興趣的是知道訂單是如何確定的,當你不用人爲地改變它時, PARAMETERS命令。 – user3475924