フォームを×で閉じても更新されない方法

フォームを×で閉じても更新されない方法


フォームで入力画面を作り、入力が行われた場合、登録ボタンで更新させようとします。
(フォームのレコードソースにはテーブルかクエリが設定された場合です。)

●フォームが閉じるイベントの発生順序として
(1) Unload → (2) Deactivate → (3) Close
とよく説明文がありますが、実際に入力があった場合には、Unload の前に BeforeUpdate も発生します。


●もう一つの条件として、フォームに入力があった時には、Dirty というイベントも発生します。
この時には、DirtyというプロパティがTrueとなります。
何も入力が無ければ Dirty = False ですね。


●そこでまずは、×で閉じた時に、Form_BeforeUpdate で更新を無効にします。

Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.Dirty Then
        DoCmd.RunCommand acCmdUndo
     End If
End Sub

●しかし登録ボタンが押された時も上記の BeforeUpdate が発生してしまい心ならずも入力内容が無効となってしまいます。
そこでボタンが押されたら BeforeUpdate のイベントを無効にしてしまいます。

Private Sub cmdUpdate_Click()

    intReturn = MsgBox("登録内容を更新しますか?", vbOKCancel)
    If intReturn = vbOK Then
        Me.BeforeUpdate = ""
        DoCmd.RunCommand acCmdSaveRecord
        Me.BeforeUpdate = "[イベント プロシージャ]"
        Msgbox "登録されました!"
    Else
        DoCmd.RunCommand acCmdUndo
        Msgbox "登録は行われませんでした!"
    End If
    DoEvents

End Sub


●これで、入力内容を更新したければボタンを押す、でもボタンを押さずに×で閉じたら入力内容は更新されずにフォームを閉じることが出来ます。


●ACCESSでいろいろな書き込みがたくさんの方々であり、それを試行錯誤でまとめてみました。
多彩な参考テクニックを教えて下さった皆様に感謝します。


サブフォームに選択クエリをかけ上から順に読み取る方法

サブフォームに選択クエリをかけ上から順に読み取る方法


サブフォームを置いてテーブルを表示するのですが、そのテーブルに選択クエリをかけて表示し、なおかつ上から順に読み込もうとする方法です。

(1)まず、サブフォームを定義します。
メインフォームのコードの最初に書きます。

Option Compare Database
Option Explicit

Private WithEvents frmSubSheet As Form
’frmSubSheetは任意の名前


(2)フォーム開く時のイベントで(1)のフォームを設定します
subSheetInfoはメインフォームでのサブフォーム名です

Private Sub Form_Open(Cancel As Integer)
    Set frmSubSheet = Me!subSheetInfo.Form                 

End Sub



(3)サブフォームの表示を内容を選択クエリ文を記述して内容をしぼります

'売上テーブルで金額が10000円以上のものをユーザーコード順に表示
'本来ならば SELECT  *  とはせずに項目名をちゃんと記述すること
strSQL = "SELECT  * tblSALES WHERE MONEY > 10000 ORDER BY USERCODE;"

'サブフォームのレコードソースを設定
frmSubSheet.RecordSource = sstrSQL
frmSubSheet.Requery
DoEvents

'念のため選択したレコード件数を取得
lngRecCount = frmSubSheet.Recordset.RecordCount
MsgBox slngRecCount



(4)順に読み込みします
frmSubSheet.Recordset.MoveFirst
    Do Until frmSubSheet.Recordset.EOF()
         MsgBox frmSubSheet![MONEY]
         frmSubSheet.Recordset.MoveNext
    Loop



◆以上のようなサンプルでACCESS2010で動きました。
備忘録でした。


   


ELECOM LANケーブルの外被の文字

ACCESSとは関係ないんですが・・・

ELECOMのLANケーブルを買いました。


LANケーブルの外被に記載されていた文字です。

◆LD-CTN/BU2 (CAT 5E 青 2m)
ELECOM Laneed 26AWG 4P 5N BU216H011Z N58 B

◆LD-GPN/BU3 (CAT 6 青 3m)
ELECOM Laneed 26AWG 4P 6N B02166252Z N67 B



◇ケーブルの外被には明確にカテゴリの番号が記述されていませんでした。
上記から察するに、5Nとか6Nで判断するのでしょうか。









ACCESS2007を最小化で起動してフォームを開く方法

ACCESS2007を最小化で起動してフォームを開く方法

いろいろ検索していろんな方法を試してみたのですが、一番簡単な方法は
Windows Script Hostを使うという手段でした。

VBSのスクリプトを記述したファイルを保存します。記述のしかたは下記の例を参考にして下さい。

◆VBSスクリプト
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("MSACCESS.EXE " & "C:\BBB.accdb", 2,false)

(1) ACCESSファイルはBBB.accdbです。フルパスのこと。例ではCドライブの直下です。
(2) 2番目のパラメータは2は、ウィンドウをアクティブにし、最小化ウィンドウとして表示します。
(3) 3番目のパラメータFalseは、プログラムが開始するとWSHは終了します。待機しません。
(4) ユーザー変数は必要ありません。

これでNNNN.vbs と保存します。


◆ACCESSのフォームの設定
(1) 境界線スタイル → ダイアログ
 ポップアップ → はい

(2) Form_Openイベントで次のコマンドを記述します
DoCmd.RunCommand acCmdAppMinimize



◆vbsを起動
NNNN.vbs を起動してみて下さい。
ACCESSのオプションのフォームの表示で指定したフォームがいきなり開くと思います。
※開かなかったたらうまく調整してみて下さい。


◆ACCESSをデザインで開く時は、VBSをシフトを押しながら開くのではなく、
BBB.accdb をシフトを押しながら開いて下さい。


◆実際業務する現場では、VBSのショートカットをデスクトップに置いて、それを起動するようにしています。


・VBSをシフトを押しながら開くと最大表示にならなかったです。
 なぜだか解析している時間がないので他の方に譲ります。すみませんです。

ACCESS2007 フォームのプロパティ

ACCESS2007 フォームのプロパティ

ACCESS2007 でフォームの改訂する仕事が回ってきました。
フォームのプロパティの一覧をインターネットで探してみたのですが、意外とないものなのですね。

・・・という訳で一覧表を作ってみました。


書  式
標題(任意のフォーム名)
既定のビュー単票フォーム
フォームビューの許可はい
データシートビューの許可はい
ピボットテーブルビューの許可はい
ピボットグラフビューの許可はい
レイアウトビューの許可はい 
ピクチャタイプ埋め込み
ピクチャ(なし)
ピクチャ全体表示いいえ
ピクチャ配置中央
ピクチャサイズクリップ
99.99cm
自動中央寄せはい
サイズ自動修正はい
画面に合わせるいいえ
境界線スタイルダイアログ
レコードセレクタいいえ
移動ボタンいいえ
ナビゲーションタイトル 
区切り線いいえ
スクロールバーなし
コントロールボックスはい
閉じるボタンはい
最小化/最大化ボタンなし
移動可能はい
分割フォームのサイズ自動
分割フォームの方向データシートを上に
分割フォームの分割バーはい
分割フォーム データシート更新の許可
分割フォームの印刷フォームのみ
分割バーの位置の保存はい
展開したサブデータシートいいえ
サブデータシートの高さ0cm
X軸グリッド数10
Y軸グリッド数10
プリンタフォントいいえ
方向左から右方向
パレット元(既定の設定)
その他
ポップアップはい
作業ウィンドウ固定はい
SharePointサイトで表示表示しない
Tabキー移動すべてのレコード
リボン名 
ツールバー 
ショートカットメニューはい
メニューバー 
ショートカットメニューバー 
ヘルプファイル 
ヘルプコンテキストID0
コード保持はい
既定の要旨サイズの使用いいえ
高速レーザー印刷はい
タグ 
livedoor プロフィール
タグクラウド
QRコード
QRコード
  • ライブドアブログ