Microsoft Access Club >SampleFile Q & A >インデックス >このページ >次頁 < 前項  サイト内検索
 

Q&A-024 フォームを入力用、参照用に切り替える一例


 

タイトル : 新規はオートで連番をつけたい
記事No : 13945
投稿日 : 2003/10/31(Fri) 13:27
投稿者 : maki

OS:windows XP
Access Version:access2002

今、メインテーブルと明細、納入という3つのテーブルがあります。
3つは1つのフォームのなかにメイン サブ Aサブという風になっています。

メインテーブルの中に「件名NO」というものがあり(数値、重複なし)
フォームの1番初めに「新規」というチェックボックスがあります(新規の場合チェック)

これを使って、新規の時・・・チェックをつける。「件名NO」は自動的にオートで連番がふられる
       変更の時・・・チェックはしない。「件名NO」を入力すると自動的に他のデータを表示

という風にしたいのですが・・。
教えてください。

また、今、一応チェックをしたら「件名NO」は入力できないようにはなっています。
 


> これを使って、新規の時・・・チェックをつける。「件名NO」は自動的にオートで連番がふられる
       変更の時・・・チェックはしない。「件名NO」を入力すると自動的に他のデータを表示

一つのフォームを入力用と参照用とで使用したい、この要求はシステム作りで必ず発生します。しかし、これが案外難しいものです。

何故なら、参照するために呼び出すキーワードをテキストボックスに入力しなければなりません。しかし、このテキストボックスはデータ入力のためテーブルフィールドと連結しています。

この問題を回避できなければ実現不可能なんです。サンプルデータはお問い合わせとかなり異なりますのでご注意下さい。今回は、考え方をお話しするつもりです・・・。

 

 

テーブルデータ

 
社員番号 社員名
1 伊藤
2 佐々木
3 前田
4 工藤
5 大杉
6 掛川
7 藤田
8 鈴木
9 佐藤
10 三浦

 

 

フォームの作成

 

 

 

InputBoxの利用

データ入力・・・、これをテキストボックスに入力するという発想を捨てて、InputBoxを利用してみましょう。そして、新規データ入力時は、新しいレコードを表示させれば済みますから・・・。

 

 

プロシージャ

チェックボックスの更新後処理イベントに下記のプロシージャを記述します。

 

Private Sub CK_AfterUpdate()

    Dim varValue As Variant

    If Me.CK = True Then  'チェックボックスがオンなら・・・
        DoCmd.GoToRecord , , acNewRec
        Me.FilterOn = False 'フィルタをオフ
        Me.NavigationButtons = True  'ナビゲーションボタンを表示
    Else
        varValue = InputBox("社員番号を入力して下さい")
        Me.Filter = "社員番号 =" & varValue
        Me.FilterOn = True  'フィルタをオン
        Me.NavigationButtons = False 'ナビゲーションボタンを非表示
    End If

End Sub

 

チェックボックスがオン、つまりTrue値なら新規レコードを表示し、チェックオフならInputBoxを表示します。そして、InputBoxに入力された値を元に、Filterをかけます。

 

 

 

2003/11/07


Q&A-024 フォームを入力用、参照用に切り替える一例


 

-Microsoft Access Club-