0

Web サービスを使用していますが、データセットで何かを変更するたびに、すべてのパラメーターが消去されます。

奇妙なことに、データ タブから Web サービス呼び出しを実行すると、すべてのパラメーターの入力を求めるプロンプトが表示されますが、クリックしてデータを編集すると、リストが空になるか、レポートをプレビューしようとすると、パラメーターがない。

他の誰かがこれを経験したことがあるかどうか、またこの動作を防ぐ方法があるかどうか疑問に思っています.

これはデータセットのコピーですが、重要だとは思いません。これは、これまでで最も厄介なバグ (バグである場合) に違いありません。パラメータリストを消去しない限り、デザイナーからデータセットを実行することさえできません。約 10 個のパラメーターがあり、新しいレポートにあらゆる種類の変更を加えている場合、同じリストを何度も何度も再入力するのは非常に面倒です。

どちらかといえば、スタジオは少なくとも、サービスが要求しているパラメーターを事前に入力できる必要があります。ため息私のストレスボールはどこだ...

<Query>
   <Method Namespace="http://www.example.com/" Name="TWRPerformanceSummary"/>
   <SoapAction>http://www.example.com/TWRPerformanceSummary</SoapAction>   
       <ElementPath IgnoreNamespaces="true">
            TWRPerformanceSummaryResponse/TWRPerformanceSummaryResult/diffgram/NewDataSet/table{StockPerc,RiskBudget,Custodian,ProductName,StartValue(decimal),EndValue(decimal),CostBasis(decimal)}
       </ElementPath>
</Query>
4

2 に答える 2

1

問題は Web サービスの内部から発生していました。sessionID (GUID) を文字列としてレポートに渡し、レポートから Web サービスに渡します。Web サービス内で、その文字列を取得して Guid に変換し、SecurityTicket オブジェクトに渡します。

そこで問題が発生していました。どうやらこの呼び出し:

Guid passedGuid = new Guid(sessionID);

Reporting Services データセットに好まれていません。マイクロソフト サポート エスカレーション エンジニアが私と協力して、正確に何が起こっているかを確認しており、修正があるかどうか、修正される予定があるかどうかなどを確認しています。 SecurityTicket に渡される GUID。

編集 - 解決策
基本的に、[データ] タブで変更を行うたびに、null パラメータを送信する Web サービス データセットへの呼び出しが開始されます。Web サービスが null パラメータを処理できない場合、すべてのパラメータを消去するとエラーが発生します。

これを簡単に克服するために、Web サービスの最初の行で null パラメータをチェックし、いくつかのデフォルトを設定します。次に、返されるデータセットが空の場合、ダミー行を追加します。

private static void addDummyRow(DataTable dt) {
        var row = dt.NewRow();

        for (int i = 0; i < dt.Columns.Count; i++) {
            if (dt.Columns[i].DataType == typeof(string)) {
                row[i] = dt.Columns[i].ColumnName;
            }
            else if (dt.Columns[i].DataType == typeof(DateTime)) {
                row[i] = new DateTime(1900, 1, 1);
            }
            else {
                row[i] = 0;
            }
        }

        dt.Rows.Add(row);
    }
于 2009-01-27T16:12:16.757 に答える
0

私はこれを理解しています、そしてそれはかなり迷惑です。VS から開発している場合は、[フィールドを更新] ボタンをクリックするだけで、通常は問題が解消されます。クエリがまだエラーをスローする場合、SQL にバグがある可能性が高いです (少なくとも私の経験では、「フィールドの更新」が機能しない場合、「SELECT Field1 Field2...」などの愚かな構文エラーを作成しました)。そのように)。[クエリの実行] ボタンをクリックすることもできます。

于 2009-01-26T19:20:30.513 に答える