• ベストアンサー

トグルボタンのON/OFF

seatテーブルがあり、座席番号フィールドがあります。 そのseatテーブルに座席番号が入力されたとき トグルボタンをONにしたりテーブルからその座席番号が削除されたら、OFFにするといったことはできるんでしょうか? たとえばA-1といった座席番号でトグルぼたんが、A-1とします。 また不可能であれば、現在使用中の座席を一覧で認識できる別の方法があれば教えていただきたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.5

AccessVBAのお勧めの本は 特に無いです。 本屋さんで適当に めくって 気に入ったので良いと思います。 自分の持っているのは Access97 アプリケーション開発テクニックAtoZ  (ちょっと古いですね)と Access2000 Webデーターベスプログラミングの2冊です。 97 の方は VBAのページは半分にも満たないです。 入門書的な本です。 2000 の方は ちょっと実践的な感じです。 今では、それぞれ、Access最新バージョン用のが出ていると思います。

Hugh
質問者

お礼

近くの本屋では数が少ないので大きな本屋で探してみたいと思います。 どうもありがとうございました。

その他の回答 (4)

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.4

#2 の回答に対する補足 で 色を変える対応です。 Private Sub コマンド12_Click() Dim Db As Database Dim Rs As DAO.Recordset Dim Tg As Control Set Db = CurrentDb() Set Rs = Db.OpenRecordset("seatテーブル") '総ての トグルボタンを OFF に設定 For Each Tg In Me.Controls With Tg If .ControlType = acToggleButton Then .Value = False '------------------ 文字を黒色にセット .ForeColor = 0 End If End With Next 'seatテーブルに入力されている 座席番号 と '同じ名前の トグルボタンを ON にする Rs.MoveFirst Do Until Rs.EOF = True Controls(Rs!座席番号) = True '------------------ 文字を赤色にセット Controls(Rs!座席番号).ForeColor = 255 Rs.MoveNext Loop Rs.Close Set Rs = Nothing End Sub

Hugh
質問者

補足

完璧にできました。 どうもありがとうございました。 それと今後もっと自分で勉強していきたいのですが、 AccessVBAのお勧めの本があったら教えていただけませんか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

やりたい事の基本は下記ではないですか。 テキストボックスに「B-1」と入れると、関連付けされた、トグルボタンが凹み、「B-1売切れ」とボタンが 変ります。 アクセスVBA(97)です。 97ではコントロール配列が使えないようですので、泥臭くなりますが。少数例でテスト済み。下記tbでArray関数でも失敗して、泥臭くなっています。 トグルボタンは複写で2個目以後は作成しました。 A-1より何番目を割り出すロジックは実情に応じていろいろ考えられると思います。 Option Compare Database Option Explicit Private Sub テキスト4_AfterUpdate() Dim i As Integer Dim j As Integer Dim tb(10) Dim s As String Dim tbname(10) As Object Set tbname(1) = トグル0 Set tbname(2) = トグル1 Set tbname(3) = トグル2 Set tbname(4) = トグル3 tb(1) = "A-1" tb(2) = "B-1" tb(3) = "C-1" tb(4) = "D-1" 'MsgBox テキスト4.Text s = テキスト4.Text '----- For j = 1 To 4 If s = tb(j) Then i = j GoTo p01 End If Next j MsgBox "座席該当なし" Exit Sub '----- p01: tbname(i).Value = -1 tbname(i).Caption = s & "売切れ" End Sub

Hugh
質問者

補足

ありがとうございます。 ボタンが押されると売りけれと文字が変わるのは非常に興味があります。 ただ、座席が100席以上もあるので全部記述するにはちょっと戸惑っています。 ちなみにAccess2000を使っています。

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.2

お役にたててよかったです。

Hugh
質問者

補足

ありがとうございます。 もし可能でしたら教えてください。 トグルボタンのテキスト名がたとえばA-1とかになっているのをボタンをONの時には色を赤に変えてオフにするとまた黒に戻るってのはできますか? わがまま言って申し訳ありませんがよろしくお願いします。

  • ryuu001
  • ベストアンサー率61% (46/75)
回答No.1

トグルボタンの名前がそれぞれ A-1 , A-2 , A-3 , A-4 , A-5 B-1 , B-2 , B-3 , B-4 , B-5であって、 seatテーブルの 座席番号に A-1 や B-3 などと入力した場合に トグルボタンの A-1 と B-3 が ON して、 それ以外の トグルボタンが OFFになる方法で良いのですよね? これは、同一フォーム上に コマンドボタン1(名前はコマンド1) を配置し、 これをクリックしたときの イベントとしました。 Private Sub コマンド1_Click() Dim Db As Database Dim Rs As DAO.Recordset Dim Tg As Control Set Db = CurrentDb() Set Rs = Db.OpenRecordset("seatテーブル") '総ての トグルボタンを OFF に設定 For Each Tg In Me.Controls With Tg If .ControlType = acToggleButton Then Tg.Value = False End If End With Next 'seatテーブルに入力されている 座席番号 と '同じ名前の トグルボタンを ON にする Rs.MoveFirst Do Until Rs.EOF = True Controls(Rs!座席番号) = True Rs.MoveNext Loop Rs.Close Set Rs = Nothing End Sub なお、DAO 3.* を参照設定してください。

Hugh
質問者

お礼

入れ違いになったらすいません。 私のやりたいことが完璧にできました。 どうもありがとうございました。

Hugh
質問者

補足

早速ありがとうございます。 コマンドボタンはひとつで委員ですよね? それから最後の行の DAO 3.* を参照設定 、、、、 のことがよくわからないんですが教えていただけませんでしょうか? よろしくお願いいたします。

関連するQ&A