SQLの窓 イラストAC フリー素材

2008年06月18日

【VB.NET】印刷処理サンプル(VB.NET2005ソース付き)




ちゃんと印刷処理を練習する為のセットです。
改造用の Excel で書いた帳表設計書を作ってリンクしました。
テスト用の仮想プリンタドライバ( PrimoPDF )のリンクもあります。
ソースには MDB も入っていますし、
サンプルのテーブルの仕様もあります。


あとは、ページ末行コントロールや
次ページ用データ保存という
実際の印刷処理の話だけなんですが・・・

これが実に説明しづらいんですよね。





posted by at 2008-06-18 10:24 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月16日

【VB.NET】FastZipクラスin#ziplib




とにかく簡単に ZIP ファイルの処理がてきます。
時間が無くて、一覧処理しかサンプル作れなかったですが、
CreateZipExtractZip というメソッドがあって、
その名のごとく、単純な処理ならすぐ作れそうです。

もちろん、詳細な処理を行う為のクラスや
他のアーカイバ用のクラスもあります。
( GZip, Tar and BZip2 )





posted by at 2008-06-16 21:25 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月15日

【VB.NET】7-zip32.dllラッパークラス(アンマネージDLLの処理)



アンマネージDLL(既存のAPI) に関する Framework からの面倒な書き方はこれで殆ど全て揃ってると思います。

7-zip32.dll に関しては、使ってみて普通に使えたので unzip32 を使った時の複数 DLL を用意しなければならなかった不便さが解消されてうれしい限りです。

アーカイブ的な専門知識は無いので、7-zip を運用する上で細かい問題点はあるかもしれませんが、それは 7-zip32.dll 側で解消されるのでしょう。

いや、ありがたいです。


UNLHA32.DLL に関してはいまさらなんで実装してみなかったですが、多分殆ど変更というより置換操作でできあがるような気がします。時間があったら他のアーカイバ試したいですね。




posted by at 2008-06-15 14:21 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月12日

【VB.NET】Framework標準印刷処理



印刷処理の選択肢としては、有償のツールを使う事になると思うのですが、
結局印刷処理用のアルゴリズムを練習するとなると、このようなベタな処理
で行うほうが良いと思います。

WEB 関連では、結局そういう書き方になると思いますし、
やっと最近 PDF での出力が一般的になってきましたが、
ページの考え方は VB.NET での処理とほとんど同じです。

そもそも、C++ で書いてたころは、印刷処理 = グラフィック
であって、画像書くのも印刷するのも命令は同じで相手は
デバイスコンテキスト。

最近は勝手にプレビューコントロールしてくれますが、
そんなのを自前でやるわけにもいかずに クリスタルレポートにまかす・・・
てなふうに、過去の同業者の方もいろいろな経験をしてきたと
思われるのが印刷処理です。

とにかく、印刷処理ほど多様性のある処理は無いですね、うん。


#システム的には影響少ないので、
#経験値の低い開発員のテーマにもなりますが。



 

posted by at 2008-06-12 21:08 | VB.net | このブログの読者になる | 更新情報をチェックする

【VB.NET】Framework2.0データベースクラス

まとめておかないと、これ使ったサンプルとかの説明できないので。

1) ダウンロード
dll をダウンロードするので、作ったプロジェクト内に直接ダウンロードして
参照して下さい。

2) 共通インターフェイス
RDBMS に依存しない標準的な部分を定義してあります。

3) DbOracle クラス
現在一番良く使っているので、インターフェイスにないメソッドが
たくさん実装されています。
ここでうまくいけば、共通のインターフェイスに追加されます

4) DbOdbc クラス
現在 MySQL のみでテストしていますが、いずれ
PostgreSQL でもテストする予定です。

5) DbAccess クラス
現在 MDB 用ですが、継承して Excel 用を作る予定ではあります。

6) DbSql クラス
SQLServer 用ですが、優先順位は低いですね。
環境の設定からしても無意味に面倒なので、
あまり説明する気がしなくって。

7) PLSQL クラス
まだテスト中ですが、バラバラのテストは終わってます。
DBMS_OUTPUT パッケージの扱いを含めた、プロシージャ用
アプリケーションの作成支援を想定しています。

8) DbHelper クラス
今のところは、外部のテキストファイルに書かれた SQL
内の値の置き換え支援のみですが、何かあれば追加
していきます。





posted by at 2008-06-12 20:10 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月09日

【VB.NET+Framework+PL/SQL】カーソル変数を取得して処理



カーソル変数をクライアントで取得して使います。
あまり使う場面は無いと思うのですが、可能である事を知っておくのは
重要であります。( 一度に複数のカーソルを取得する事も可能 )

パラメータの指定方法はいろいろありますが、
IN の場合は、1行で書いてしまうのが解り易いでしょう。
OUT は、パラメータオブジェクトで書いたほうが都合がよさそうです
( オーバーロードの引数変なので )

いずれにしても、昔ながらの : ( コロン ) 使うほうが解り易いと思いますが
パラメータの指定は同じなのでコード量は大差はありません。
PL/SQL 文として実行するような何かであれば、: ( コロン ) 使わないと。

OO4O では少し勝手が違うので後日まとめたいと思います。


posted by at 2008-06-09 21:35 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月07日

【VB.NET】IEキャプチャー



IE6 でのみ試しました。
Shell の仕様が変わってなければ、IE7 でも動くでしょう。

ちゃんと作れば、IE6 がタブブラウザになります。
まあ、IE7 の出た今となっては、他の付加価値無いと意味無いですが、
いろいろアイデアはあっても、時間が無いので方法だけリリースです。

そもそも、ウインドウハンドルの取得以外にも、
IWebBrowser2 Interface が使える(はず)わけですが、
WebBrowser Object を扱う COM コントロールで
イベント定義をコード上でわかりやすくして、イベントを VB.NET 的に
捕獲して使用します。

これは、IE のダウンロード処理をフックできないかと思って調べてたら、
http://www2u.biglobe.ne.jp/~objxbase/fontsetting/HookIEbyVFP.htm
なんてのをみつけて、上記の内容は興味ないけれど、
可能なんだな・・・とあたりをつけてイベント定義すると使えました。

しかし、残念ながら ファイルダウンロードの情報そのものが仕様に無いようで、
これ以上掘り下げても時間がもったいないので調査終了・・・


IE のプラグインとか調べてもねぇ。



posted by at 2008-06-07 20:40 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月05日

【VB.NET+Framework】PL/SQLへのアクセス




VB.NET の Framework の OracleClient から PL/SQL を実行して
OUT 型の引数の値を取得します。

サンプルの PL/SQL の引数は、IN のみですが、
DBMS_OUTPUT.GET_LINE の引数は、OUT です。
VB.NET から ストアードプロシージャを実行して、
DBMS_OUTPUT パッケージで出力された内容を取得します。

※ 実際は、COM の OO4O で書いたほうが簡潔になります



 

posted by at 2008-06-05 20:53 | VB.net | このブログの読者になる | 更新情報をチェックする

2008年06月02日

【VB.NET】エクスプローラキャプチャー




エクスプローラを捕獲するツールの作り方です。
Shell.Application を使用しています。
そう、COM です。
なんで、ある程度いろいろ知識無いとなんの事か解らないコードかもしれません。

しかし、COM が重要である事は言うまでも無く、
API 的に言えば Framework では出来ない事もたくさんあると言う事です。
Microsoft Win32 と Microsoft .NET Framework API との対応

はっきり言って、Visual Studio + Framework で出来るようになった内容
は、有償の開発ツールで10数年以上前に普通に実現されていた事です。
Microsoft の立ち位置は今も変わって無いので、Framework に期待する
のは間違ってます。使えるものは使わないと。



あ、そうそう。IE も捕獲できるはず( たぶん )なんですが、
誰か試して下さい。




posted by at 2008-06-02 14:58 | VB.net | このブログの読者になる | 更新情報をチェックする

【VB.NET】APICallback関数の呼び出し



EnumWindows のサンプルです。

書き方としては、結局 C++ で昔から普通に記述していた
関数ポインタの扱いと全く同じです。

Delegate Function は、まさに関数のボインタ変数の定義で、
その型の変数を作って代入して使用しています。

LoadLibrary でロードした関数のポインタを
その関数型の変数にセットして実行するのと基本的に同じ↓
http://winofsql.jp/VA003334/cmaterial040420185049.htm


ここでは、定義された関数型はオブジェクト扱いなので、
使用する時は New でインスタンスを作るかその型の変数を作っています。
( 何れにしても AddressOf でポインタを取得していますが )

あと、API 側で定義されている lParam は、そのままでは Integer が
渡せますが、本来は構造体のポインタ等を渡すもので、ここでは構造体
のかわりに String を渡しています。

結局 ByVal でも ByRef でもうまくいくのですが、API 側の仕様にあわせて
CharSet.Ansi を指定してやらないと化けます。そのままだと、Unicode
文字列が渡されて、それをそのまま表示しようとしますからね。
( CallingConvention:=CallingConvention.StdCall とか、呼び出し規約の変更も可 )







posted by at 2008-06-02 14:39 | VB.net | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します