0

MSAccessで簡単なチェックボックスをプログラミングしています。これがその方法です:

  1. ユーザーが選択できる値のドロップダウンを使用してコンボボックスを設定しています(例:b1、b2、c1、d1、d2、d3、e0、e2など)。これらは2文字のテキスト文字列です。
  2. ユーザーがドロップダウンの値を変更したいときに使用するチェックボックスがあります。基本的には、チェックボックスをオンにすると、任意の値が「ds(ドロップダウン値)」に変更されるため、「ds()」が追加されるだけです(例:ds(b1)、ds(b2))。 、ds(c1)など)
  3. ユーザーがチェックボックスをオフにすると、値は2文字のテキスト文字列のままになります。

これは、Accessプログラミングへの私の最初の進出です。私の擬似コードは次のとおりです。

Private Sub distchk_Click()
if distchk is checked then
   Me.ECOSITE = "ds(" & Me.ECOSITE & ")"
else:
   Me.Ecosite
End Sub

私はテストしました:

Private Sub distchk_Click()
Me.ECOSITE = "ds(" & Me.ECOSITE & ")"
End Sub

ただし、チェックするとds()が追加され続け、チェックを外しても削除されません。

どんな提案も素晴らしいでしょう!

マイク

4

1 に答える 1

3

あなたはあなた自身のために不必要な仕事をし、あなたのユーザーのためにより混乱したインターフェースを作っています。LandCoverType(テキストフィールド)とIsDisturbed(はい/いいえフィールド、別名ブール値またはビットフィールド)の2つの個別のデータを収集しているため、これらを入力フォームに組み合わせる理由はありません。「ds()」で土地被覆タイプをラップすることによって、ユーザーに追加情報を提供することはありません。私は2つの代替アプローチを提案します:

2つの別々のフィールド (推奨される方法)

  • LandCoverTypeフィールド(テキスト)を作成します。コンボボックスをこのフィールドにバインドします(ComboBox ControlSourceに入力しますLandCoverType
  • IsDisturbedフィールドを作成します(はい/いいえ)。チェックボックスをこのフィールドにバインドします(上記と同じ方法)
  • レポートに「ds()」を表示する場合は、レポートフィールドのフォーマットの一部として実行します(例=IIf([IsDisturbed], "ds(" & [LandCoverType] & ")", [LandCoverType]):)

1つの結合されたフィールド

  • 単一のLandCoverTypeフィールド(テキスト)を作成します
  • コンボボックスのRowSourceを変更して、LandCoverTypeの有無にかかわらずすべてのLandCoverTypeを含めますds()(たとえば、RowSourceが値リストの場合b1, b2, c1, ds(b1), ds(b2), ds(c1):)
于 2012-04-13T20:53:42.647 に答える