1

以下のクエリで、このエラーが発生し続けます。

Cannot read the next data row for the dataset DataSetProject. (rsErrorReadingNextDataRow)

where句のように見えますが、取り出せばうまくいくようです。そこで、where 句にキャストを追加しましたが、うまくいきませんでした。これを機能させるために where 句で何か特別なことをする必要がありますか? 参考までに、これは URL から ID を取得しているレポートにあります。

SELECT new_projects.new_projectsId AS ProjectId
     , new_projects.new_name AS ProjectName
     , new_projects.new_Description AS ProjectDescription

FROM
    new_projects
    LEFT OUTER JOIN new_projectsteps
        ON new_projects.new_projectsId = new_projectsteps.new_ProjectSteps2Id
    LEFT OUTER JOIN Task
        ON new_projectsteps.new_projectstepsId = Task.RegardingObjectId
WHERE
(new_projects.new_projectsId = cast(@id AS UNIQUEIDENTIFIER))

ありがとう!

編集:

SQL の id は一意の識別子であり、@id の値はクエリ文字列 (url) から取得されます。したがって、次のようになります。&id='BC02ABC0-A6A9-E111-BCAD-32B731EEDD84'

情報不足で申し訳ありません。

4

1 に答える 1

2

一重引用符が通過していると思われます。したがって、パラメーターに渡される前にそれらを取り除いてそこに置かないか、次を使用します。

WHERE new_projects.new_projectsId = CONVERT(UNIQUEIDENTIFIER, REPLACE(@id, '''', ''));

GUID に他の文字が含まれている場合に直接比較を試みると、次のようになります。

メッセージ 8169、レベル 16、状態 2、行 1
文字列から一意識別子への変換時に変換に失敗しました。

これが起こっていない場合は、「SQL の ID は一意の識別子です」とは言わないでください。問題を再現できるように、すべてのコードを表示してください。

于 2012-06-26T17:40:31.660 に答える