お仕事で使っているACCESSめもが貯まってきたので、通ってきた道を共有したいと思う
超初心者向け
メモなので割と雑、信ぴょう性が…
#型
VBAではVariant型にしかNULLが入らない、あとオブジェクト
テーブルでは日付、数値、テキスト…でオートナンバー以外には入る気がする
#テーブルのデータ取得
面倒なSELECTとかRecordsetのオブジェクトを指定せずに、テーブルから値を取る方法
DLookup("列", "テーブル名","条件")
■プロパティから設定するとき
DLookup("[項目名]", "テーブル名", "[項目名]='" & seq & "'")
■VBAでやるとき
DLookup("ID", "テーブル名")
DLookup("コード名称", "コードマスタ", "コード区分=1 AND コード= 1")
他にもDSumとかある
#データがないときの挙動
DCOUNT→0
DMAX→NULL
DMIN→NULL
DSUM→NULL
#VBA入力候補
Ctrl+spaceで入力候補が出る
決定はenterでも出来るが直後に改行される
tabキーで改行無しの確定ができる
#プロパティのフォーマット
■書式に書く場合
〒@@@-@@@@
ggge\年m\月d\日
#,##0
■コントロールソースに書く場合
=Format(Now(),"ggg" & " 年 月 日")
□注意
FormatとかReplaceの戻り値は文字列かVariantだからいろいろと注意
ところで金額の書式って#,#でも行ける気がするんですが
#式に未定義関数xxxがあります
SQLで関数を使おうとしてた時に、関数名が日本語だと発生したんだけど
発生しない場合もあるので詳細原因は謎
「式に未定義関数Nzがあります」と言われたこともある
こちらはACCESS修復かなんかで直った気がする
#プロシージャ移動
ctrl+↑↓
ctrl+↑↓で前後のプロシージャに移動できる
しんせつせっけい
#サブフォーム内の関数とかを呼び出す
Call Me.Fs_サブフォーム名.Form.関数名
ただし関数とかはpublicにしておく必要がある
#配列の初期化
Erase 配列名
#べき乗の書き方
A = 2 ^ 10
↑^の前後に必ずスペースが必要
#このオブジェクトに値を代入することはできません
Form_Open時のイベントで連結項目に値を代入しようとするとなる気がする
値を代入するときはForm_Load時にやる
あとレコードソースに関数指定したら起こった
#桁数チェック
数値項目で桁が大きすぎると指数表示になる
桁数チェックをlenでやると引っかからなくなってしまうので、lenの前でformat(チェック対象コントロール,"0")にするといいらしい
#更新前処理
更新前処理でcancel=trueにすると更新後イベントに行かない
#レコードに検索キーが見つかりませんでした
フィルターをセットするときに発生
SELECT DISTINCTにしたのが原因っぽい
クエリにしてごまかそうとしたけどダメだった
#四捨五入
Format関数で四捨五入できるらしい
strText = Format(12.345, "0.00")とすると結果は
12.35になるらしい
参考
http://www.openreference.org/articles/view/522
#MoveLastとMoveFirst
Recordset.MoveLastはテーブルが空の場合落ちる気がする
#AfterUpdateイベント
AfterUpdateイベントで入力チェックとかやった場合、SetFocusがうまくいかない
詳細はここ
http://accessclub.jp/bbs/0071/beginers26922.html
#メインフォームからサブフォームのコントロールを参照
str=Me.サブフォーム名!txt_あああ
#VBA内で別フォームの項目を変更
Forms![フォーム名]![txt_項目] = "あああ"
↑ただし参照するフォームが開かれていないといけない