カテゴリ:TIPSとかKludgeとか( 23 )

VBScriptでSAP R/3をアクセス

VBScriptでSAP R/3 のテーブルを読むサンプル。
知り合いに頼まれたんでちょこちょこと書いたのだが、他に需要も無いのでメモとして晒す。

.NET時代突入でVBSも使わなくなるよなぁ…と思っていたが、


  1. バッチファイル代わりに作ったレガシーな小物が意外に多いんで書き換えるのがメンドい
  2. .NETランタイムが無いマシンでも、WSHくらいは使えるだろ?
  3. ExcelなんかのVBAに焼きなおすのも相対的にラク
  4. 使っているCOMコントロールの類が全部.NET対応というわけではない。.NETで従来のCOMを動かすことは「可能」だが、「可能」ということと「使い物になる」ということは別問題。

みたいなこともあるので、俺はまだけっこう使ってる。

ソースに続く…
[PR]
by SIGNAL-9 | 2005-03-24 14:20 | TIPSとかKludgeとか

ldap照会コマンドの自作

Lukas Gebauer氏か手がけておられるDelphi用の同期TCP/IPライブラリSynapseがLDAPをネイティブでサポートして下さっているので、ありがたく使わせていただき、今までldapsearch.exe→自作LDIFコンバータ→CSVファイルという原始的方法だったのを、EXE一発でできるように作り直した。

今のところ、テキスト項目のみを、デコードしたLDIF/CSV(カンマとタブ区切り)/BIFF2(Excelの一番古いフォーマット)で出せるようにした。

作ってる過程で、問題というかTODOがいくつか。
忘れそうなのでいちおう雑記しておこう。俺的には用は足りているので、時間があればだが…。

■Access2002へ渡したい

最近はたまにAccess2002も使ってるのだが、これのCSVインポートがけっこう馬鹿(失礼)。
現行のCSVデータでは型情報を持ちようがないが、このためだけにMDAC(ADO)使ってMDB直というのも、ツールの性格上忸怩たるモノがある。
ちょっと考えたが、Access2002ではxml形式が読み込めて、こちらにはフィールドの型情報が保持できる。ファイルサイズが膨れるのと、xsdとxmlでファイルが分かれるのがいささかナンではあるが、こっちのセンで考えてみようと思う。

■バイナリの処理…てーか、属性(アトリビュート)のサブタイプの処理

同じldapサポートといっても、例えばActive Directory は、属性のサブタイプ(;jang-jp)などは存在しないみたい。lang-jpの文字型ならばどっちにしてもUTF-8で返されるので、無条件にUTF-8からANSIに変換しちゃってかまわない(UTF-8は1バイトASCIIに関してはANSIと同じコードマップだから)と思うのだが、問題はバイナリ値である。

本来なら;binaryを期待したいところだが、どうも付けてくれないldapサーバ(スキーマ)もあるみたいだ。つまり、SeachのResultセットの属性名からはそれが単なるlang-なのか、本当のバイナリなのか判別できそうにない。
ASCII文字セットならロジックでデータ内容を判定することもできるが、多バイト文字セットではそう簡単にはいかないかも。

LDAP3ではルートにsubSchemaSubEntryとしてスキーマ情報を格納しているノードのDNがあるので、実際の属性型の情報などはこれを参照して解析するしかないか?


  1. ルートからsubSchemaSubEntryを探す
  2. その値(DN=schemaとか)を、attributetypesで探すと、そのLDAPサーバのスキーマのリストが取得できる。ここで、SYNTAXの後ろについているOIDが属性構文なので、これを使ってあれこれ。

…なんかカッチョ良くないなぁ(爆)

特定スキーマ決め打ちならなんとでもできるが、ちょっと汎用性を持たせようと思うと俺の如き三流にはけっこう難しいものだな(泣)
[PR]
by SIGNAL-9 | 2005-03-24 11:44 | TIPSとかKludgeとか

PrimoPDFの日本語化

日本語化というほど大それたものではないのだが。

日本語マシンで動かすとダイアログがフォントずれして見苦しいので単にそれを直したかっただけ。

無料のPDF作成仮想プリンタ、PrimoPDFだが、Aladdin Free Public License (AFPL) のソースを使ってるので上記ページの一番下から一式ソースで取得できる。

フツーのVC++のソースだったので、
・メッセージ部分を文字列リテラル検索してハジから日本語に修正。
・ダイアログ周りも同上。フォントサイズに合わせて位置調整。ついでに妙にサイズがでかかった画像リソースをPaintShopでサイズ縮小(笑)

あと、レジステーションを促すダイアログが少々うざかったので、PremoPDF.cppのCheckRegNag()の辺りを適当にコメントアウト(つーか、素直にレジストするべきだな。ソース読む限り、HKLM\Software\activePDF\PrimoPDF\verifiedをTrueにするだけみたいだが)。

で、リコンパイル。既にインストール済みの実行ファイルを単に上書き。

c0071416_17225092.jpg

[PR]
by SIGNAL-9 | 2005-03-24 10:26 | TIPSとかKludgeとか