|
VBAのコードを書くことになります。
なお、マクロでもできると思いますが、私は、マクロは使ったことがないので、
よくわかりません。でも、考え方は、VBAの場合と同じだと思います。
>「番号」テキストボックスをダブルクリックしたとき
の処理を自動化するわけですから、
「番号」テキストボックスのダブルクリックイベントにコードを書きます。
>1.「種別」テキストボックスが空欄の場合
>または、
>2.「番号」テキストボックスに既に数値が入っている場合
>は、ダブルクリックしても番号が振られないようにもしたいです。
If文により場合分けしてあげればいいです。
上記の条件からすると、
「番号」テキストボックスにVBAにより自動で値を入力するのは、
「種別」テキストボックスが空欄でなく、
かつ、「番号」テキストボックスに数値が入っていない場合
となりますね。
「空欄」というのは、ちょっとだけ厄介です。
一般に、空欄であるとは、テキストボックスの値がNullである場合、
又は長さ0の文字列が入力されている場合を言います。
だから、「空欄でない」ということは、
テキストボックスの値がNullでなく、
かつ、値が「""」でもない場合
ということになります。
それからNullであるとか、Nullでないとかは、
「値=Null」という式では判定できません。
IsNull関数を使う必要があります。
「『番号』テキストボックスに既に数値が入っている場合」をどう考えるかですが、
最も単純にはIsNull関数を使うことになりますね。
「番号」テキストボックスに文字列が入っていてはだめだ
ということを強調したければ、
IsNumeric関数を使って、「番号」テキストボックスに入力されている値が
数値として使える文字列かどうかを判定します。
なお、テーブル1の「番号」フィールドが数値型であり、かつ、
「番号」テキストボックスが連結コントロールであれば、
そもそも「番号」テキストボックスには、文字列は入力できませんけどね。
>「みかん」の番号の最大値
は、DMax関数を使います。
この関数の第3引数の書き方にはクセがあるので、注意してください。
第3引数の書き方の基本は、「フィールド名=値」ですが、
「フィールド名」のフィールドがテキスト型の場合、値をダブルコーテーションで囲みます。
フィールド名="太郎"
そのフィールドが日付・時刻型の場合は、#で値を囲みます。
フィールド名=#2014/06/03#
そのフィールドが数値型の場合は、何も囲みません。
フィールド名=234
以上をコード化するだけです。
|
|