丢失我的记录集值

时间:2011-12-22 21:05:17

标签: asp-classic

此存储过程中返回的每个字段都有一个值,但是当我写出值时,其中一些值为空。有什么想法吗?

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

5 个答案:

答案 0 :(得分:1)

以下是我修复它的方法

替换:

Set emailrs = emailCMD.Execute

使用

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

答案 1 :(得分:1)

面对同样的问题。
mysql odbc 5.1驱动程序。

通过更改连接对象中的cursorlocation属性来解决。

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

答案 2 :(得分:0)

您希望从数据库中提取的字段需要一些输出或ReturnValue参数。

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

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

答案 3 :(得分:0)

如果您的存储过程get_email返回6列 - 这些列中的任何一列是Text / NText吗? (并且您已连接到SQL Server 2000数据库?)

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

如果更改返回列的顺序以使文本列为最后一个,则可能会解决您的问题。我过去经常遇到这个问题,列出选择列表末尾的文本列总能解决问题。

几年前我问过这个问题 SQL Server text column affects results returned to classic ASP已将我的连接字符串更改为Microsoft OLE DB提供程序,因此没有任何问题。

答案 4 :(得分:0)

我已经测试了表字段是否包含数据类型为varchar(max)或nvarchar(max)的问题。

解决方法是放置

Connection.cursorlocation = 3'adUseClient

如上另一个答案所述,或将nvarchar(max)的大小减小为nvarchar(999)