このプログラムは座席予約システムで、各座席の空席状況を確認するのに問題があります。
フォームが読み込まれると、配列が作成され、座席名が格納されます。各座席は、ボタンとして表示されるチェック ボックスです。SQL ステートメントが実行され、ヌルの顧客 ID フィールド、その座席の座席 ID、および上映日が金曜日のレコードが検索されます。返されたレコード数 = 1 の場合、チェック ボックス ボタンの背景色は緑になり、それ以外の場合は赤になります。
可用性をチェックするコードは完全に機能します。配列のその位置でチェックボックスの背景色を変更する方法がわかりません。配列がオブジェクトではなく文字列を保持しているためだと思います。私はこれについて多くの研究を行ってきましたが、解決策を見つけることができないようです.
必要なのは、配列に格納される座席の名前 (A1、A2 など) と、その座席の背面の色を変更する方法です。全部で 197 席あるので、配列でこれを行う必要があります。
この問題の解決方法を教えていただければ幸いです。データベース テーブルのスクリーンショット、フォーム デザインのスクリーンショット、コードなど、すべての情報を以下に示します。
データベーステーブル: http://gyazo.com/0cf669a1c2144b7174066bdbbd29d3a3
フォームデザイン: http://gyazo.com/b9400018cccd61afb83518e3754df2d4
Private Sub frmSeatPlan_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim seat(11, 15) As String
Dim seatname As String
Dim sql As String
Dim da As OleDb.OleDbDataAdapter
seat(1, 1) = A1.Name
seat(1, 2) = A2.Name
seat(1, 3) = A3.Name
seat(1, 4) = A4.Name
seat(1, 5) = A5.Name
seat(1, 6) = A6.Name
seat(1, 7) = A7.Name
seat(1, 8) = A8.Name
seat(1, 9) = A9.Name
seat(1, 10) = A10.Name
seat(1, 11) = A11.Name
seat(1, 12) = A12.Name
seat(1, 13) = A13.Name
seat(1, 14) = A14.Name
Dim x As Integer
Dim y As Integer
For y = 1 To 1
For x = 1 To 14
seatname = seat(y, x)
con.ConnectionString = dbProvider & dbSource
con.Open() 'opens the connection to the database
sql = "SELECT * FROM Bookings where show_id = 'friday' AND customer_ID is null AND seat_id ='" & seatname & "'"
da = New OleDb.OleDbDataAdapter(sql, con) 'create a data adapter to store the filtered data using the SQL code
MsgBox(sql)
da.Fill(ds, seat(y, x))
'count the number of records with an empty customer id, the show ID of Friday and the seat ID of this seat.
Dim recordCount As Integer
recordCount = ds.Tables(seat(y, x)).Rows.Count
MsgBox(recordCount)
If recordCount = 1 Then
'change backcolor to green
Else
'change backcolor to red
End If
con.Close()
Next x
Next y
End Sub