« 蔵書整理中… | メイン | FreeBSD 5.4.Rインストール中 »

2005年08月13日

仕事の周辺 » XML

Access2003からWebサービスを使う

LAN内のファイヤーウオール越えのため、Webサービスを使うことが増えてきましたが、いちいちクラスを書かず、DataSetをそのままバーンと投げてます。クライアントが.NETアプリなら簡単に受け取れ、Webサービスを使うことを手間と感じるよりは、SQL部分をWebサービスとして独立させることにより、SQL文が簡単に使いまわしできるメリットの方を多く感じていたのですが、Access2003でDataSet型を受け取ろうとして四苦八苦。
現在のところ、一番らくちんそうな解決策は、Webサービスの結果を配列で受け取り、Item(1).XMLを一時的にXMLファイルに保存し、Application.ImportXMLでテーブルとしてインポートすること。
注意点は、

  1. XMLファイルを保存する際に、ユニコードではなくシフトJISになっているようなので、先頭に<?xml version='1.0' encoding='Shift_JIS'?>追加してやる
  2. 同じ名前のテーブルがあると、上書きせずに連番を追加していくので、インポート前には、古いテーブルを削除しておく
ことくらいかな。VBAはほとんど経験なく、Access2003もまだ使い始めたばかりなので、もっとうまい方法がありそうですが、とりあえず動くし(^^;)。

Item(1).XMLがNULLを含むせいで完全なマトリックスでなかったなら、Item(0).XMLをスキーマとして先にインポートし、後からItem(1).XMLのデータ部分を追加する必要あるかも。だっさー。XMLサポートを売りにしている2003だからもっとエレガントな方法が絶対にあるような気がしてきた。
あと、Item(1).XMLがどれくらいのサイズまで保持できるのか若干不安(^^;)。

投稿者 idic : 2005年08月13日 17:45

コメント

XMLファイルのインポート、いくつか試してみました。
住所2とか、Nullの多いデータをインポートした場合、エラーは出ませんが、出来上がったテーブルの並びは、1件目のデータが住所2ノードを持たなかった場合、出来上がったテーブルを見ると、住所2が一番最後になっています。
順番ずれるのは問題ないとして、住所2を持つデータが1件もなかった場合、住所2はできないことになるから、やはり問題かも。
構造だけ残しておいて、データ空にしてデータ部分だけを追加でインポートするのがベターでしょうね。

投稿者 idic [TypeKey Profile Page] : 2005年08月16日 10:39

コメントしてください

サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)

(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


情報を登録する?