Hachioji.pm11

19
id: hondallica ( http://sukuna.net/ ) TALK Hachioji.pm #11

description

Windows

Transcript of Hachioji.pm11

Page 1: Hachioji.pm11

id: hondallica ( http://sukuna.net/ )

TALK

Hachioji.pm #11

Page 2: Hachioji.pm11

じこしょうかい

id:hondallica

職業:ヘヴィーメタルプログラマー某公共インフラ系の会社で、なぜか携帯サイトの企画~開発やってます。

北海道出身、八王子在住

Page 3: Hachioji.pm11

テーマ:Win道

R

Page 4: Hachioji.pm11

Windows+Access2010+Amon2

えらいひとがAccess2010で管理してる資産情報をみんなで見れるようにする獣道

Page 5: Hachioji.pm11

みちのり

Page 6: Hachioji.pm11

Access 2010のODBCドライバを入れる

接続はDBIでやるので、コントロールパネルのどっかにあるデータソース(ODBC)の設定は不要。

参考:

Microsoft Accessへ接続する / DBIx::Custom リファレンス

http://d.hatena.ne.jp/perlcodesample/20110513/1307874545

Page 7: Hachioji.pm11

セットアップ

コマンドプロンプトで打つ >amon2-setup --flavor Basic,Teng Access2010>cd Access2010

Page 8: Hachioji.pm11

DBの準備

・dbディレクトリにhoge.accdbをコピー・config/development.plを編集

hoge.accdb

"dbi:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=$dbpath",

このへんいらない

Page 9: Hachioji.pm11

ためしにplackupしてみる

>plackup Error while loading app.psgi: sql/odbc.sql: No such file or directory at lib/Access2010.pm line 18.

怒られるので、sql/sqlite.sqlをコピーして

odbc.sqlを作ります。

Page 10: Hachioji.pm11

改めて

>plackup DBD::ODBC::db do failed: [Microsoft][ODBC Microsoft Access Driver] CREATE TABLEステートメントの構文エラーです。 (SQL-42000) at C:

/strawberry/perl/site/lib/Amon

2/DBI.pm line 85, <$fh> line 1.

また怒られます。。。

Page 11: Hachioji.pm11

SQLを確認

ここでハマったのですが、どうやらAccessはIF NOT EXISTSが使えないようです。

Page 12: Hachioji.pm11

しかたないので

IF NOT EXISTS消してplackupすると動きますが、

再度plackupすると、こうなるのでodbc.sqlの中身を空にして逃げました。

Page 13: Hachioji.pm11

AccessからSQLでデータ取得

lib/Access2010/Web/Dispatcher.pmを編集

9~12行を変えます今回カラム名が分からなかったので、あえてハッシュで取るのはやめました。

Page 14: Hachioji.pm11

HTMLテンプレート編集

tmpl/index.ttを編集

Page 15: Hachioji.pm11

できたと思ってplackup

これはひどい

Page 16: Hachioji.pm11

思い当たるのはDispatcher.pm

Page 17: Hachioji.pm11
Page 18: Hachioji.pm11

Shift_JISじゃないとダメっぽい

めんどくさいのでlib/Access2010/Web/Dispatcher.pmの

use utf8;を消してShift_JISで保存します。

>plackup やっと見れました。

Page 19: Hachioji.pm11

おわり