MicrosoftAccess(マイクロソフトアクセス)を使っていて、
ココがポイント
こんな事でできるの?!
ってことがよくあります。今回はそんなちょっとした事の5Tipsをセレクトしてみました。
コンボボックスの値が変わらない
あるコンボボックスから、値を変えて、その値によって、コンボボックスの中身が変わる仕組みを作成したが、前の情報がリフレッシュされなくて、コンボボックスの内容が変わらない。
Me.Recalc
Me.Refresh
VBAに最初に変化をさせいたコンボボックスに上記をいれたら解決した。
アクションクエリメッセージを非表示
データベースシステムをアクセスで作成して、アクションクエリなどを動かすと、そのたびに確認メッセージが出る場合があります。
通常の開発版なら、
[ファイル]>>[オプション]をクリックし、表示される[Access のオプション]ダイアログ ボックスを表示。
[クライアントの設定]を選択し、[編集]-[確認]の[アクション クエリ]チェック ボックスをオフ。
で済むのですが、ランタイム版などは、その設定ができない場合があります。
ACCESSをランタイム環境で動かす場合に、
・レコードの変更
・オブジェクトの削除
・アクションクエリ
などを行うたびに確認メッセージが表示されてしまう問題を回避する方法。
作成環境でチェックを外しておいてもランタイム環境に持っていくと効かない。
以下のコードを実行させるようにしてやると、聞いてこなくなる。
Private Sub Form_Open(Cancel As Integer) 'メインのフォームオープン時に、
Application.SetOption "Confirm Action Queries", False 'クエリの実行時の確認を外す
End Sub
上記でも私の場合はダメだったので、
DoCmd.SetWarnings False
を実行する前に突っ込んだら出なくなりました。
閉じるときにパスワードを求められる
SQLserverとAccessの組み合わせにてデータベースを構築してあるケースで発生したのですが、終了するときに毎回パスワードを求められるようになりました。
毎回面倒なので、調べると、
ココがポイント
閉じるときに最適化のオプションを外す
と直った。
ちょっとしたTipsというより、エラー回避のジャンルかもしれませんね。
コンボボックスでのリスト外入力
コンボボックスにて、リスト外のデータを手打ちで入力しようとすると、
ココに注意
指定した項目はリストにありません
とメッセージがでて入力ができない。
そこを、無理やり入力できるようにするには、
ココがポイント
プロパティから、入力チェックを「いいえ」
にするだけ。
ちなみに、値リスト編集の許可っていうプロパティは、コンボボックスに直接値リストを設定する場合は、直接フォームから編集できるモードのようだ。
フォーカスが移動できない
レコードセットを使った処理の後、コントロールを移動させようと頑張ったが、行方不明になり、テキストボックスをクリックしないとカーソルが戻ってこなくなり自動で移動できなくなった。
調べてやっとできた。このような情報がAccessの開発には必要なんですよね。
レコードセットをつかったVBAが書かれているとする。
Set Me.Recordset = rs
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
DoCmd.ShowAllRecords
※これの前に入れてしまうとコントロールは移動できない。
#####ここ以下にいれることで移動できるようになった######
If IsNull(call_受注番号) Then
受注番号検索 = Null
Me.Visible = False ※これが必要
Me.Visible = True ※これが必要
Me.受注番号検索.SetFocus
Else
受注番号検索 = Null
Me.Visible = False
Me.Visible = True
Me.input_納品日入力.SetFocus ※これでやっとコントロールが移動できた。
End If
この方法が正解かどうかは分かりませんが、どうしてもフォーカスが動かなかった時は、やってみてください。
ココがポイント
別の方法がありました!!
アクセスの「ファイル>>オプション>>クライアントの設定」内にある
「Enterキー入力後の動作」の設定値を「移動しない」にすれば、
Me.テキストボックス.SetFocus
だけで希望の場所にフォーカスを移動させることができます。
その代わり、Enterで次のテキストボックスなどに移動ができなくなりますので、「TAB」キーを専用で使う事になります。