何となく歩いた結果

デジカメを持って色々な場所に出没し撮影した写真を公開。最近は東京の夜と里山をメインテーマに撮影中。システム開発の話題も。

MySQL と Access 接続 ODBC以外での接続 その2

2007-04-20 14:06:40 | ソフトにまつわる話
レンタルサーバのMySQLとAccessをODBC以外で接続する話しのその2。

AccessのテーブルのデータをMySQLにそのままコピーもしくは、1件ずつ更新する事を考えてみたい。

サーバ(MySQL)のテーブルをAccessに取り込む場合には、
1)サーバ側でphpでprint文を使って画面に出力するプログラムを開発
2)そのプログラムをhttp接続でパソコン側にダウンロード
3)Accessにインポート
するだけだった

でもアップロードは一工夫必要だ。

まず、サーバ側でアップロードしたテキストファイルを読み込みMySQLのテーブルを更新するphpプログラム(a)を開発しておく。
単純にテキストファイルを1行読み込み。MySQLのテーブルデータを更新するプログラムだ。画面には実行結果を表示しておく。更新されなかった行は後で原因を調べる。

1)Accessでtab区切りのテキストファイルとして出力
2)そのテキストファイルをFTPでサーバへアップロード
3)aのプログラムを起動し実行結果をファイルで受け取る

という流れになる。これらの制御はAccessで完結させる。

テキストファイル出力は私はVBで書いているが、単純にエキスポートでマクロで記述しても良いと思う。
FTPサーバにアップロードするのは、BASP21を使用する。

Const RDir As String = "ファイル転送先ディレクトリ"
Set ftp = CreateObject("basp21.FTP")
rc = ftp.Connect("サーバ名", "ID", "PASS")
rc = ftp.DeleteFile(RDir & "/ファイル名") ' 既にある場合には削除
rc = ftp.PutFile("アップロードするファイル名", RDir, 2) ' テキストでアップロード
If rc = 1 Then ' 正常終了
'MsgBox "正常に終了しました。"
Else
MsgBox "ファイル転送に失敗しました。"
Exit Sub
End If
ftp.Close

次にサーバのプログラムを稼動させる

Dim bobj As Object
Set bobj = CreateObject("basp21")
rc = bobj.W3get("-d 結果受信フォルダ -o ファイル名 http://phpプログラム名")

これで、Access側のデータベースで修正したデータでMySQLのデータベースを更新できる。1ボタンで全ての作業が完了だ。
サーバ側でcronが使えない場合でも、この方法ならWindows側で定期的にバッチ起動してサーバデータを更新する事も可能だ。工夫次第で色々な事ができるだろう。

ってやっぱりこの話題ブログで書くには難しすぎる。ほとんどの人がわけわからないだろう。
でも、この技術を使えばかなり運用が便利になる事間違いなし。かなりお勧めだ。

疑問点は「何となく歩いた結果 本館」で質問してみよう。システム開発系のお仕事も待ってます。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Google Earthの旅 アラスカ ... | トップ | 出雲 大社駅 加悦 昭和58年頃 »
最新の画像もっと見る

コメントを投稿

ソフトにまつわる話」カテゴリの最新記事