古い業務システム(POS)の保守・改良を請け負っている者です。 みなさんのお知恵を貸してください。
Windowsパソコン上でMS-Access、レンタルサーバーでPHPを介してPostgreSQLサーバーを立てています。
既存システムでは、WININET.DLLを使って簡単なリクエストをHTTPで送り、
結果をCSVファイルとしてFTPダウロードする流れになっています。
サーバーが持つデータをパソコンでも同じ構造でテーブルを持ち、
最終更新日時を元に差分データをCSVダウンロードしてデータ同期を取っています。
パソコン側でデータ処理した結果を、同様にCSVファイルでFTPでサーバーに送信し、
HTTPでデータベース反映処理PHPを起動するようにしています。
そのような仕組みで10年以上運用してきていますが、トラブルがないわけではありません。
データ処理をパソコンでした上でサーバーに反映させる仕組みが、まれにサーバー未送信データを生じさせ、
結果的にデータの不整合を起こすトラブルを(保守を請け負うようになってからでも)何度か遭遇しました。
その都度、手作業でデータ介入しています。
パソコンも古くなってきて、MS-Accessも古くなってきて、バージョンだけでも最新化しようとしていますが、
この際データ通信・同期の方法を改善したいです。
1)VBAからHTTP POSTの結果をストリーミング的に扱えるのかどうか。
WININET.DLLのInternetReadFile API関数を直接VBA上から使って制御するのに挫折しており、
FTPでCSVデータをダウンロードする方式になっています。
2)パソコン側でのデータ処理(前加工)を廃止して、必要なパラメータ(可変)を
サーバーに送ってサーバーで処理したい。
データがサーバーとパソコンの双方にあると整合性に苦しむし、
エラーハンドリングの弱いパソコンではあまり処理させたくないと考えています。
従来パソコン側で前処理した結果をCSVファイルにしてFTPでアップロードしていたのを、
処理に必要なパラメータをサーバーのPHPで受けてサーバーで処理して、
結果のみパソコンに返すようにしたいです。
CSVの固定パラメータではなく柔軟な可変パラメータでサーバーに送って、
柔軟にパソコンに結果をもらうようなことをどう実装したらいいでしょうか。
PHP側はいろんなライブラリ・関数がありJSONやXMLも楽に扱えますが、
VBA側にはほとんどない(?)ので難しいのかなと思ってしまいます。
長くなってしまいましたが、データの受け渡し、処理の主導権を見なおしするために、
どういうインターフェースで構築するのがいいか、教えていただけたら幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/06/25 09:55