经典ASP:RecordSet字段没有任何价值

时间:2013-01-21 11:02:55

标签: asp-classic vbscript field ado recordset

我不是一个真正的ASP开发人员,所以有点迷失。

我有以下数据访问代码:

sSQL = "SELECT answer_id, company_name, old_access_company_name, answer, flag_asker_notified FROM Q01_ask_sheiiba_answer_company2 WHERE question_id="& sQuestion_id &" ORDER BY answer_id"
rs.open sSQL, conn  
DO WHILE NOT rs.EOF
    Response.Write(rs.Fields("answer"))
    rs.MoveNext
LOOP

我已经通过在调用之前将其输出到响应来测试sql查询是否已正确构建。它产生以下查询:

SELECT answer_id, company_name, old_access_company_name, answer, flag_asker_notified 
FROM Q01_ask_sheiiba_answer_company2 
WHERE question_id=988 
ORDER BY answer_id

当我将那个确切的查询复制到sql management studio并运行它时,我得到5行的预期结果,每行包含每个单元格中的数据,但是,当我通过上面的代码运行它时,我得到相同的5行使用相同的单元格数据,除了answer列,这是空的!

我错过了什么?

提前致谢

4 个答案:

答案 0 :(得分:6)

您可能想要尝试两件事:

将您的文本字段放在查询的末尾。例如:

SELECT answer_id,company_name,old_access_company_name,flag_asker_notified,answer

如果这没有给你结果,你可能想尝试:

WHILE NOT rs.EOF
theanswer=rs("answer")
Response.Write(theanswer)
rs.movenext
wend

Text和Memo字段可能会对ASP造成一定的破坏。

编辑:您可以尝试的另一件事是:

rs.CursorLocation = adUseClient

rs.CursorLocation = 3

答案 1 :(得分:2)

问题是ODBC驱动程序无法将大文本blob作为字符串访问;您需要以chunked BLOB data访问它们。

我建议转储ODBC连接和connect using the OLE-DB driver directly。这将允许您访问该列,就像它只是另一个varchar列一样。

答案 2 :(得分:1)

我遇到了类似的问题(我认为)。我将varchar字段转换为文本。当我这样做时,我发现文本字段似乎从我选择的记录集中“消失”。我的情况,我发现你只能引用文本字段。在那之后,它似乎消失了。因此,对于文本字段,我现在只需将其移动到字符串变量中,然后对字符串进行操作。这解决了我的问题。

约翰

答案 3 :(得分:0)

遇到同样的问题并在此处找到解决方案http://www.4guysfromrolla.com/aspfaqs/ShowFAQ.asp?FAQID=80
  基本上当你打开记录集(不是connection.execute)时,使用选项adOpenKeyset(val 1)和adUseClient(val 3),文本字段应该是strSql中字段列表中的最后一个   示例:rs。打开strSql,dbConn,adOpenKeyset,adUseClient