SQL Server

SQL Server 2005 Express をダウンロードしてきてインストール。BaseDBIStore3 を使って SQL Server 用にデータ保存クラスを書く。昔もらった SQL Server用のパッチというかデータ保存用クラスは、DBI を使ってなくて自前で ADO を叩く力作なんだけど、今後のことを考えると出来るだけ共通化しておきたいところ。

SQL Server に接続するまではちょっと苦労したけど、そのあとレポートの保存と表示までは簡単にできた。でも、なぜか検索がエラーに。

OLE error code:80040E14 in Microsoft OLE DB Provider for SQL Server
文字列 ' order by id' の後で引用符が閉じていません。

ちなみにクエリはというと、

SELECT id FROM mssqltest_reports WHERE e_status = '受付済' ORDER BY id

引用符は閉じてるように見えるのだけど気のせい?

ぐるぐる探し回った結果、$KCODE='s' 以外だと WIN32OLE.codepage に適切な文字コードを設定しないといけないらしい。影舞は全部 EUC で書いてあるから $KCODE は 'e' なわけでどうしたものといろいろ試行錯誤。
WIN32OLE.codepage に EUC が設定できればいい気がするけど、EUC は設定できない。win32ole.c を眺めてみても、UTF-8 以外はよくわからない。

結局、もしかしてデータベースに UTF-8 でデータを保存することにして、 WIN32OLE.codepage = WIN32OLE::CP_UTF8 でいけたりしないかな?と試してみたらなんとなく動いてるっぽい。それでいいのか。