0

このプログラムは座席予約システムで、各座席の空席状況を確認するのに問題があります。

フォームが読み込まれると、配列が作成され、座席名が格納されます。各座席は、ボタンとして表示されるチェック ボックスです。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
4

1 に答える 1