2011-12-22 39 views
0

在此存儲過程中返回的每個字段都有一個值,但是當我寫出值時,其中一些爲空。有任何想法嗎?丟失我的記錄集值

Dim objConn 
Set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "driver={SQL Server};server=localhost;database=db","test","test" 

Set emailCMD = Server.CreateObject("ADODB.Command") 
emailCMD.ActiveConnection = objconn 
emailCMD.CommandType = adCmdStoredProc 
emailCMD.CommandText = "get_email" 

emailCMD.Parameters.Append(emailCMD.CreateParameter("userid",adInteger,adParamInput,,userid)) 
emailCMD.Parameters.Append(emailCMD.CreateParameter("emailaddress",adVarChar,adParamInput,100,emailaddress)) 
emailCMD.Parameters.Append(emailCMD.CreateParameter("emailjobid",adInteger,adParamInput,,emailjobid)) 
emailCMD.Parameters.Append(emailCMD.CreateParameter("businessid",adInteger,adParamInput,,businessid)) 

Set emailrs = emailCMD.Execute 

emailbody = emailRS("emailjobdesc") 
sendto = emailrs("emailaddress") 
emailsubject = emailrs("emailjobsubject") 
emailid = emailrs("emailid") 
emailpassword = emailrs("emailpassword") 
businessname = emailrs("businessname") 

response.write emailbody & "<br>" & sendto & "<br>"&emailsubject&"<br>"&emailid&"<br>"&emailpassword&"<br>"&businessname 
response.End 
+0

這是否總是相同的字段是空白的? – 2011-12-23 06:55:16

+0

如果您發現emailbody和sento已填充,其他空白,請嘗試在所有&字符周圍放置空格。 – 2011-12-23 07:00:47

+1

請發佈存儲過程的代碼 - 如果字段由連續語句填充,則必須使用「NextRecordset」方法來訪問它們。 – 2011-12-25 07:30:42

回答

1

這是我如何固定它

替換:

Set emailrs = emailCMD.Execute 

隨着

Set emailRS = server.createobject("ADODB.Recordset") 
emailrs.cursorlocation = adUseClient 
emailrs.open emailCMD 
0

對於希望從數據庫中提取的字段,您需要一些輸出或ReturnValue參數。

http://www.w3schools.com/ado/met_comm_createparameter.asp

http://www.devx.com/tips/Tip/13399

+0

我認爲OP正在從結果集中讀取,而不是從參數中讀取。 – 2011-12-23 07:50:02

+0

我在我的存儲過程中返回1行。出於某種原因,它正在炸燬。如果我返回輸出參數中的數據,它就可以工作。爲什麼它只有一排炸燬? – 2011-12-27 21:19:47

+0

「如果我返回輸出參數中的數據,它就起作用。」那麼使用輸出參數有什麼問題? – Dee 2011-12-28 19:34:23

0

如果你的存儲過程get_email將返回6列 - 任何這些列文/ NTEXT的? (並且你迷上了SQL Server 2000數據庫?)

更改連接字符串 - 不要使用ODBC。

如果更改返回的列的順序,以便文本列是最後一個,這可能會解決您的問題。過去我遇到過這個問題,列出選擇列表末尾的文本列總會解決問題。

幾年前我問過這個問題 SQL Server text column affects results returned to classic ASP並將我的連接字符串更改爲Microsoft OLE DB提供程序自此以後沒有任何問題。

1

同樣的問題面對。
mysql odbc 5.1驅動程序。

通過在連接對象中更改cursorlocation屬性來解決。

set Connection = CreateObject("ADODB.Connection") 
Connection.cursorlocation = 3 ''adUseClient 
Connection.Open ConnStr