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クエリが呼び出される前に応答に出力することで、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

試してみたいことが2つあります。

クエリの最後にテキストフィールドを配置します。例えば:

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

テキストフィールドとメモフィールドは、ASPで少し混乱する可能性があります。

編集:あなたが試すことができるもう一つのことは:

rs.CursorLocation = adUseClient

また

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

問題は、ODBC ドライバーが大きなテキスト BLOB を文字列としてアクセスできないことです。チャンクされた BLOB データとしてアクセスする必要があります。

代わりに、ODBC 接続をダンプし、OLE-DB ドライバーを直接使用して接続することをお勧めします。これにより、別の varchar 列であるかのようにその列にアクセスできます。

于 2013-01-21T23:26:50.347 に答える
1

私はちょうど同様の問題を抱えていました(私は思う)。varchar フィールドをテキストに変換しました。すると、選択したレコード セットからテキスト フィールドが「消えた」ように見えました。私の場合、テキスト フィールドは 1 回しか参照できないことがわかりました。その後、姿を消すようです。したがって、テキスト フィールドについては、単純に文字列変数に移動してから、文字列を操作します。それは私の問題を解決しました。

ジョン

于 2013-11-16T09:27:39.203 に答える