LoginSignup
2
9

More than 3 years have passed since last update.

私的ACCESSめも集

Last updated at Posted at 2019-08-12

お仕事で使っている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_項目] = "あああ"
↑ただし参照するフォームが開かれていないといけない

2
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
9