4

我不是真正的 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

4 回答 4

6

您可能想尝试两件事:

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

选择 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

文本和备注字段可能会对 ASP 造成一些破坏。

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

rs.CursorLocation = adUseClient

或者

rs.CursorLocation = 3
于 2013-01-21T23:17:24.767 回答
2

问题是 ODBC 驱动程序不能以字符串的形式访问大文本块;您需要将它们作为分块的 BLOB 数据进行访问。

我建议转储 ODBC 连接并直接使用 OLE-DB 驱动程序进行连接。这将让您访问该列,就好像它只是另一个 varchar 列一样。

于 2013-01-21T23:26:50.347 回答
1

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

约翰

于 2013-11-16T09:27:39.203 回答
0

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

于 2017-08-14T13:11:52.930 回答