0

少し長いですが、最初のドラフトより短い:)

基本的に dBase から情報を取得し、この情報を .xls ファイルにエクスポートする小さな VB.net アプリケーションがあります。この .xls ファイルから、社内のエージェントがサード パーティのリスティング サービス (現在の在庫を維持している) を手動で更新し、そこに含まれる情報を使用します。情報は非常に基本的なもので、議論を容易にするために、「部品番号」、「説明」、および「手持ちの数量」で構成されています。

通常、この情報は週に 1 回更新されますが、このリスティング サービスとの新たに改訂された契約では、「プラチナ」ベンダー ステータスを維持するために毎日更新する必要があります。

問題は、この情報を手動で更新するにはかなりの時間がかかることです。したがって、自動化されたプロセスが緊急に必要とされています。そして、私は基本的な作業とコーディングのほとんどを完了しました - ある程度まで。したがって、質問、そしてどこで行き詰まるか。

リスティング サービスは次の WSDL を提供してくれました。

ここまでで、エクスポートされた情報を生成するストアド プロシージャを再プログラムしました。この SP は、「昨日」に発生したトランザクション結果が「増加」、「減少」、「追加」、または「削除」であったかどうかを判断するために内部計算を実行します。これらの結果は、「SERVICE」という名前の新しく作成された列の下の結果テーブルに追加されます。この新しい情報は、vb.net を使用して dBase から取得され、分析のためにデータ テーブルにインポートされます。

このデータ テーブルを使用して、各行をループし、「SERVICE」列を調べて、そのセルに含まれる情報に応じて、適切な Web サービスを呼び出すことができます。

すべての Web 参照をプロジェクトに追加し、各 Web サービスのプロキシ クラスを作成しました。

2 番目の問題は、実際の Web サービスを実際に呼び出す方法がわからないことです。以下は、コードの小さなスニペットです

' loads data into the 'AviationDataBaseResult.ILS_ARRAY_2' table. 
Me.ILS_ARRAY_2TableAdapter.Fill(Me.AviationDataBaseResult.ILS_ARRAY_2)

' Start the looping process
For Looper = 0 To RowCount - 1 
    If Me.AviationDataBaseResult.ILS_ARRAY_2.Rows(Looper).Item("Service") = _
        "Increase" Then
        ' Call Appropriate Web service
    End If
' More If..Then's ensue, one for each service
Next

' More code ensues

私はこれが非常に長くなってしまったことに気付きました。これは主に、特定の日に 25 の FF タブを開いていて、それらのどれも互いに同意していないためです。別のしわを追加するには; 問題の WSDL では、複合型内で多くの複合型が使用されており、ご想像のとおり、他の複合型が絡み合っています。私は多くの例を見てきましたが、複雑な型とその処理方法を扱うものをまだ見つけていません。「私が知る必要があることを見つけるためにどこに行くべきか」について正しい方向に私を向ける助けがあれば大歓迎です.

他の情報が必要な場合は、できる限りご提供いたします。私の思考プロセスと論理が、私がしなければならないことをするのに適していない場合、私はそれを聞いてとてもうれしく思います. vb.net に比較的慣れていない私は、謙虚なパイを消費することにかなり慣れてきました。

御時間ありがとうございます。

4

2 に答える 2

0

これらのサービスを具体的に呼び出す方法を知るには、実際の WSDL を確認する必要があります。ただし、一般に、Web 参照に「WebRef」という名前を付け、サービスに「Service」、操作に「Operation」という名前を付けた場合は、次のようにします。

Using svc As New WebRef.Service
    Dim parameter As New ComplexType
    parameter.Property1 = value1
    parameter.Property2 = New Property2Type
    parameter.Property2.SubProperty1 = value12
    ' ...
    svc.Operation(parameter)
End Using
于 2009-02-24T17:31:22.977 に答える
0

WSDL をインポートしてプロキシを生成した場合は、プロキシをインスタンス化して (プロキシを生成したときに要求された新しい名前空間が表示されるはずです)、メソッドを呼び出すだけです。

データと Web サービスが期待する型との間のマッピングを実行する必要があります。退屈ではありますが、まったく難しいことではありません。

于 2009-02-24T17:20:33.377 に答える