データベースmdb内に任意名のテーブルがあるかどうかを調べる。 テーブルを処理毎に作り直す等の場合に利用する。
'----------------------------------------------------
' Function : Table-Exist-Check
'----------------------------------------------------
Public Function gfnc_ExistTable(ByVal strTableName As String) As Boolean
Dim dbs As Database
Dim rst As Recordset
Dim tdf As TableDef
Set dbs = CurrentDb
'---< LOOP TABLEDEFS >
For Each tdf In dbs.TableDefs
If (tdf.Name = strTableName) Then
gfnc_ExistTable = True
Exit For
End If
Next tdf
End Function
gfnc_ExistTable("テーブル名")がTrueを返せば、その名称のテーブルが存在する。
フォームにサブフォームを埋め込み、 そのサブフォームが条件検索するごとに定義し直されるクエリーをレコードソースとしている場合、 ReQueryでは検索結果が反映されないため、レコードソースを再定義することでこれを実現する。
Me!FormSub.Form.RecordSource = strQuery
FormSubは親フォーム上でのサブフォーム名、 strQueryはstring型の変数で、レコードソースとなるクエリ名が格納されているものとする。
長いテキスト型やメモ型のフィールドの値を入力させるテキストボックスを、 画面のサイズ制限上、やたら大きくするわけにいかない場合、 ズームボックスを使えるようにすると便利だ。
'--------------------------------------------------
' Function : gfnc_ZoomBox
' ZoomBoxの利用
'--------------------------------------------------
Public Function gfnc_ZoomBox() As Boolean
DoCmd.RunCommand acCmdZoomBox
End Function
フォームのダブルクリックイベント等に、作成したgfnc_ZoomBoxを記述して完成。
フォームを最大化表示すると、大きなモニタではコントロールが全て左上に寄ってしまってなんとなく不恰好である。
よって、フォームを開いたときに常に基準のサイズで表示する、
あるいはレポートを最大化表示した直後にフォームにフォーカスを戻しても、
フォームが最大化表示にならないようにする。
'--------------------------------------------------
' Function : gfnc_Restore
' 元の大きさに戻す
'--------------------------------------------------
Public Function gfnc_Restore() As Boolean
DoCmd.Restore
DoCmd.RepaintObject
End Function
フォームのアクティブ化イベントに、作成したgfnc_Restoreを記述して完成。
Access + Jet + DAO。
データも一万件を超えるようなテーブルをトランザクションかけてレコードセットで処理する場合、
「ファイルの共有ロック数が制限を超えています」みたいなエラーが出ることがある。
これを回避する方法は、レジストリをいじるか、共有ロック数を一時的に増やすかである。
'---< EXTEND FILELOCK >
DBEngine.SetOption dbMaxLocksPerFile, 30000
上記のコードをBeginTransの前に記述する。
Microsoftの技術情報では、
[ACC2003] [PRB] 多数のトランザクション処理中に "ファイルの共有ロック数が制限を超えています" エラーが発生するを参照。
去年の夏から体調が全然優れないですよ勘弁してください。
でも2007年のシーズン開幕ですしカテゴリーは追加せねばならん、ならんよですよなので覚書。
あ~もう首が据わらないよ眩暈をどうにかしてくれよもう。
カーソルがワープする現象もなんとかならんものか、このPC。
さっそくblosxomカスタマイズの第一歩を踏み出しましょうや。
焦っても無駄なんで眠いときは寝てからのほうがいいです。
さて、blosxom.cgiにはデータの場所やらプラグインの場所やらを設定する箇所があります。
これは基本的に絶対パスで指定します。
一部プラグインを入れれば相対パスも可能とかいう噂なんですけど、サーバによっては何もしなくても相対パスが使えることもあるらしい。
まあ一番手堅いのは絶対パスってことですかね。
で、各種パスを記述するにもエントリやプラグインを置く場所を決めてやんないといけないわけです。
もう全然自由でオウケイなんですけど、とりあえず具体的にこうしましたよ、という例を提示してみます。
エントリは「data」フォルダへ。
エントリをカテゴリ分けするときはこの「data」フォルダの中にさらにサブフォルダを設けます。
blosxomではフォルダ分けがそのままカテゴリー分けとして認識されます。
プラグインは「plugins」ディレクトリへまとめて放り込むことに。
その下の「states」ってのは独自にデータを作るプラグインが作ったデータを置く場所です。
で、blogの概観を決めるテンプレート、blosxomでいうところのフレーバーは、「flavours」ディレクトリに入れるハラです。
これはちょっと飛躍で「flavordir」ってぇプラグインを使う気満々なんでこうなるんですけどね。
このプラグインを導入しない場合、フレーバーファイルは「data」ディレクトリにあると解釈されます。
いえ別にそれでもマズいわけじゃないんですが、
フレーバーはプラグインを増やすと結構種類を作ることになりかねませんので、
こうして分離したほうが後から楽かと思いますんで。オススメですぜ。
ここでまずblosxom.cgiのバックアップを取っておくことを推奨します。
で、各種設定を書き換え、と。
内容はall about blosxomのSetupBlosxomに詳しいのでそっちを参照。
つまるところがあるとすれば絶対パス。
「絶対パス?」と頭上にクエスチョンマークが点灯したならchkfullpath.cgiやらservana.cgiのご利用がオススメ。
ただし、servana.cgiは見えすぎる感があるので、ご利用後は速やかに削除なり属性変更なりの対策を。
上記のディレクトリの設定も頭に入れつつ設定を書き換えてみてください。
設定を変更したらサーバのblosxom.cgiを上書きして動作確認してみましょう。
この状態で確認できるのはblogのタイトルだけですけどね。
タイトルが変更された状態のサンプルはこちら。
文字化けしやすいのでそのときはエンコードを変更してください。やっつけblogて。そのままだし。