1

アクセスフォームに3つのフィールドがあります。

  • フィールド1-データが事前に入力されたテキストフィールドです。nullレコードはありません
  • フィールド2-いくつかのデータが事前に入力されたテキストフィールドです。値を持つことも、nullにすることもできます。
  • フィールド3-テキストフィールドです。ユーザーはフィールドに情報を入力します。

ルールがあります。フィールド2にnull値がある場合、フィールド3はフィールド1の値と等しくなるため、フィールド1のフィールド3に自動的にデータを入力します。値がnullでない場合、ユーザーはフィールドレコードに手動でデータを入力します。 。

フォームロードイベントを次のように設定しました。

If Me.field2 = "" Then
   Me.field3 = Me.field1

私が抱えている問題は、ユーザーがフィールド1の事前入力された値を変更したい場合があり、対応するフィールド2レコードが空白の場合、ユーザーがフィールド1で変更したのと同じ値でフィールド3を更新したいということです。この更新を行うために、フォームを常にリロードする必要はありません。After_Updateイベントとchangeイベントで上記の構文を試しましたが、更新されていません。

誰かが私が間違っていることを提案できますか?

ありがとう、マイク

4

3 に答える 3

3

空の文字列またはnullの別のテストは

if len(field1 & "")=0 then 'do null stuff

空の文字列をnullまたは空の文字列に追加すると、空の文字列になり、長さをテストできます

于 2012-05-02T17:26:59.717 に答える
2

マイクはすでに答えを持っていますが、説明の形でより完全な答えを出します。

ここでの問題はnull、空の文字列であるフィールドを比較しようとしていることです。それはあなたがやったようなものです

if null = "" then
    'do stuff
end if 

問題はnull、を比較に使用すると、結果が常にnullになることです。これにより、ifがfalseと評価されます。あなたもこれを行うことはできません:

if not(null) then
    'do stuff
end if 

また

if not (null <> "") then
    'do stuff
end if 

従来の解決策は私たちにとってであり、それはであるかどうか isnull(x)を評価します。truexnull

ティムウィリアムズが示すように、あなたは使用することができます:

IsNull(x) or x="" 

空の文字列に対してのみnullを返すことができるx=""場合、は冗長であると考える人もいます。x

于 2012-05-02T16:47:32.137 に答える
1

これも機能します:

if Nz(Field1, "") <> "" then 'do null / empty stuff
于 2014-02-10T08:05:17.860 に答える