人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ACCESS2000を使用しています。
今「フォーム1」というフォームがあるとして、それには「項目1」という入力欄があるとします。
フォーム1はテーブルと連結しており、値を入れると、テーブルに値が入るようになっています。

今、「フォーム1」の「項目1」に値を入れようとしたとき、
既に「項目1」の値が入っている場合には、「既に値が入っているため、入力できません」
と表示させたいと思っています。
初めての入力のみ、受け付けるということです。
(再度値の変更をするには、ボタンを作成し、それを押すと「項目1」にNULLを入れて入力可にしたいと思っています。)

なんとなくですが、「項目1」がNULLか判定し、NULLの時は更新を認め
そうでない場合には値を修正できないように
イベントの変更時か更新前後にプログラムを組むのだろうと思っておりますが、
どのように書けばよいか、具体的なプログラムをご教示ください。
違う方法で良い案があればそれでもかまいません。
よろしくお願いします。

●質問者: syo777
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●200ポイント ベストアンサー

レコード移動時イベント(Form_Currentイベント)に下記のように1行書き加えれば、項目1が空もしくはヌルの場合だけ入力可能になります。

Private Sub Form_Current()
 Me.項目1.Enabled = IIf(IsEmpty(Me.項目1.Value) Or IsNull(Me.項目1.Value), True, False)
End Sub

項目1の内容にあわせて、例えばボタンを出現させたりするといった処理なども加えるならば、下記の様にして処理を分岐すれば良いでしょう。

Private Sub Form_Current()
 If IsEmpty(Me.項目1.Value) Or IsNull(Me.項目1.Value) Then
 Me.項目1.Enabled = True
 Else
 Me.項目1.Enabled = False
 End If
End Sub

テキストボックス(メッセージ用)とボタン(変更1)を用意して、下記の様にするとほぼ希望どおりかと・・・
(Access2000で作ってから貼り付けてます)

Private Sub Form_Current()
 Me.メッセージ用.Value = ""
 If IsEmpty(Me.項目1.Value) Or IsNull(Me.項目1.Value) Then
 Me.項目1.Enabled = True
 Me.変更1.Visible = False
 Else
 Me.項目1.Enabled = False
 Me.メッセージ用.Value = "項目1は既に入力されています。変更したい場合は、変更ボタンを押してください。"
 Me.変更1.Visible = True
 End If
End Sub

Private Sub 変更1_Click()
 Me.項目1.Enabled = True
 Me.項目1.SetFocus
 Me.変更1.Visible = False
End Sub

syo777さんのコメント
ここまで丁寧にご説明いただきありがとうございました^^ 大変助かりました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ