2011-11-21 74 views
1
sqlCmd.CommandText = "SELECT clientID, clientPassword" & _ 
        " FROM Clients" & _ 
        " WHERE (clientPassword=?)" 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass) 
sqlCmd.Parameters.Append param 

Set rsUsers = sqlCmd.Execute 

這個查詢執行OK,但當我嘗試之後幾乎相同的一個...多步OLE DB操作產生錯誤與參數化查詢

sqlCmd.CommandText = "SELECT clientID, clientUsername, clientPassword" & _ 
        " FROM Clients" & _ 
        " WHERE (clientEmail=?)" 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email) 
sqlCmd.Parameters.Append param 

Set rsUsers = sqlCmd.Execute 

我得到這個錯誤,

多步OLE DB操作生成錯誤。檢查每個OLE DB狀態值(如果可用)。沒有工作完成。

這兩列的長度都是nvarchar,255和50。

我的大部分Google搜索都表示這是一個數據類型錯誤,但我只是檢索值,如果第二個查詢自己執行,它可以正常工作。如果我運行多個查詢,則只會發生該錯誤。

請謝謝。

感謝愛德華多,這讓我通過我的查詢沒有錯誤,但我的UPDATE查詢什麼都不做。

sqlCmd.CommandText = "UPDATE Clients" & _ 
        " SET clientUsername=?, clientPassword=?" & _ 
        " WHERE (clientEmail=?)" 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)  
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientUsername", 200, 1, Len(user), user) 
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)  
sqlCmd.Parameters.Append param 
Set rsUsers = sqlCmd.Execute 

任何想法爲什麼?我一直堅持這段代碼幾天。

+0

是否具有相同數據類型的clientPassword和clientEmail列是d相同的長度?電子郵件變量的值是否比clientEmail列長? – GTG

+0

你重複使用相同的sqlCmd嗎?如果是這樣,sqlCmd.Parameters有兩個參數而不是一個。使用不同的sqlCmd或使用sqlCmd.Refresh。 –

回答

2

您是否重新初始化sqlCmd變量?

我猜你缺少

Set sqlCmd = server.createobject("ADODB.Command") 

在您編輯後運行的第二個

編輯
順序事項後,所以你需要添加PARAMS以相同的順序,你在查詢中使用它們

Set param = sqlCmd.CreateParameter("@clientUsername", 200, 1, Len(user), user) 
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientPassword", 200, 1, Len(pass), pass)  
sqlCmd.Parameters.Append param 
Set param = sqlCmd.CreateParameter("@clientEmail", 200, 1, Len(email), email)  
sqlCmd.Parameters.Append param  
Set rsUsers = sqlCmd.Execute 
+0

請參閱修訂後的問題。我無法在評論中獲得格式化權限。 – AEP

+0

我不相信這是正確的。你說我需要3個不同的對象,實際上參數是一個集合。無論如何試過了,它沒有幫助。 – AEP

+0

添加參數後,我重新設置並再次使用它。這應該不成問題。 – AEP

相關問題