何となく歩いた結果

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

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の旅 アラスカ フェアバンクス国際空港

2007-04-20 13:39:01 | Google Earth
星野道夫の写真集繋がりでアラスカに興味を持ってきている。
アラスカの中心フェアバンクスにある国際空港。セスナのような小型の飛行機がたくさん見える。飛行機が自家用車がわりという事なのだろうか、アラスカらしく川や湖でも着陸できるような水上飛行機も飛行場内の水辺に止まっている。

ゆったりと建物が建つフェアバンクスの郊外には原野が広がる。厳しい自然の中、生活できるかわからないが一度でいいから暮らしてみたいと思う。

kmzファイルをダウンロードしてGoogleEarthで読み込めばその場所にダイレクトに飛ぶことができます。

何となく歩いた結果 本館」もよろしく!
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする