Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1705 / 2272 ツリー ←次へ | 前へ→

【5665】フォーム上での表示のON/OFF ISA 05/7/22(金) 12:02 質問[未読]
【5667】Re:フォーム上での表示のON/OFF 小僧 05/7/22(金) 14:44 回答[未読]
【5672】Re:フォーム上での表示のON/OFF ISA 05/7/22(金) 17:58 お礼[未読]
【5673】Re:フォーム上での表示のON/OFF 小僧 05/7/22(金) 18:07 回答[未読]
【5683】Re:フォーム上での表示のON/OFF ISA 05/7/25(月) 8:17 お礼[未読]

【5665】フォーム上での表示のON/OFF
質問  ISA  - 05/7/22(金) 12:02 -

引用なし
パスワード
   No 値
A  0
B  1
C  0
D  1
E  1
というようなテーブルを作り、このテーブルをレコードソースとして
フォームを作ったとします。
 フォーム上にはイメージA〜Eという名前の5つの画像が貼られており、
テーブル上のNo.Aが1の場合はイメージAを表示(0の場合は非表示)、
同様にNo.Bの値よりイメージBの表示/非表示...というようにテーブル
の値から表示/非表示を切り替えたいと考えております。
 色々と過去のログを見てみたのですが、よく分かりませんでした。
 どなたかお知恵を頂けないでしょうか?
 宜しくお願い致します。
※ちなみにACCESS97を使用

【5667】Re:フォーム上での表示のON/OFF
回答  小僧  - 05/7/22(金) 14:44 -

引用なし
パスワード
   ▼ISA さん:
こんにちは。

※フィールド名に「No」のような名前をつけると「Yes/No」の「No」と
 間違えて誤作動する場合がありますので、名前を変えた方が無難だと思われます。
 当方が提示させて頂く回答は「SEQ」に変えてあります。

イメージの名前が「A」〜「E」で固定であれば、

Private Sub Form_Load()

  If DLookup("値", "テーブル名", "SEQ = 'A'") = 0 Then
    Me.イメージA.Visible = False
  Else
    Me.イメージA.Visible = True
  End If
  
  If DLookup("値", "テーブル名", "SEQ = 'B'") = 0 Then
  ・
  ・
End Sub

の様に繰り返し処理をすれば良いと思われます。
配列を使うと

Private Sub Form_Load()
Dim I As Long
  For I = 65 To 69
    If DLookup("値", "テーブル名", "SEQ = '" & Chr(I) & "'") = 0 Then
      Me.Controls("イメージ" & Chr(I)).Visible = False
    Else
      Me.Controls("イメージ" & Chr(I)).Visible = True
    End If
  Next
End Sub

こんな感じになると思われます。

※エラーチェックの処理は特につけていません。

【5672】Re:フォーム上での表示のON/OFF
お礼  ISA  - 05/7/22(金) 17:58 -

引用なし
パスワード
   ▼小僧 さん:
早急な回答有難う御座います。
しっかりと思ったとおりの動きになりました。^^
ところで抽出条件を増やす場合は
If DLookup("値", "テーブル名", "SEQ = 'A'") = 0 Then
の部分を
If DLookup("値", "テーブル名", "SEQ = 'A'" and "フィールド名 = '***'" ) = 0 Then
のように増やせば良いのでしょうか?
一度に聞けば良かったですね、本当に申し訳ありません。

【5673】Re:フォーム上での表示のON/OFF
回答  小僧  - 05/7/22(金) 18:07 -

引用なし
パスワード
   ▼ISA さん:
こんにちは。
DLookupをヘルプで調べてみると、

>>DLookup(expr, domain, [criteria])

となっています。

>DLookup("値", "テーブル名", "SEQ = 'A'" and "フィールド名 = '***'" )

ですと

>>DLookup(expr, domain, [criteria] and [criteria])

になってしまいエラーがでてしまいます。
微妙な差なのですが、「and」は「"」の中に入れたままで大丈夫です。

>>DLookup("値", "テーブル名", "SEQ = 'A' and フィールド名 = '***'" )

フィールドである事を明示化する為に、下記の様な書き方の方が良いかもです。

>>DLookup("値", "テーブル名", "[SEQ] = 'A' and [フィールド名] = '***'" )

【5683】Re:フォーム上での表示のON/OFF
お礼  ISA  - 05/7/25(月) 8:17 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。
お礼が遅くなってすいませんでした。
小僧さんの通りにしたら上手くいきました。
本当に丁寧な説明有難う御座います。^^
まだまだ勉強不足ですが、いつかは小僧さんのように
教えて上げられる立場に立会いなーと思ったり。
本当に有難う御座いました。
それでは。

1705 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078255
(SS)C-BOARD v3.8 is Free