質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

MS-AccessとPHP&PostgreSQLとのデータ通信・同期方法について

削除済ユーザー
削除済ユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2回答

0評価

0クリップ

2289閲覧

投稿2015/06/25 09:09

古い業務システム(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側にはほとんどない(?)ので難しいのかなと思ってしまいます。

長くなってしまいましたが、データの受け渡し、処理の主導権を見なおしするために、
どういうインターフェースで構築するのがいいか、教えていただけたら幸いです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。