比较数组到数据库并更改匹配元素

时间:2014-07-12 14:08:26

标签: vb.net sorting ms-access

我正在医院数据库工作,我正在将医院病床装入组合框。我想要做的是,如果已经睡觉了,我想在睡觉后添加(占用)。

有一个房间和床名单表。 101室有三张床。 1001,1002和1003.我已将Bed_No加载到数组中。的 bed_ids_array()

enter image description here

有一张病床占用的桌子。正如您所见,1002和1003被患者占据。我通过while循环 dr(1)

读取了这些数据

enter image description here

我在vb.net中向combobox添加数据,它应该如下所示: enter image description here 但看起来像这样:

enter image description here (当使用不同的值重新检查时,从访问数据库中读取数据时会出现相同的数据)

我使用的代码是:

       'Check if beds in array have patients
    Call connect()
    con.Open()
    cmd = New OleDbCommand("Select * from Bed_to_Patient_Relation", con)
    dr = cmd.ExecuteReader
    While dr.Read
        'Add all occupied stuff to combobox first
        For i = 0 To room_bed_count - 1
            'take first bed id and check all database
            If bed_ids_array(i) = dr(1) Then
                Cmbbx_Beds.Items.Add(bed_ids_array(i) & "Occupied")
            Else
                Cmbbx_Beds.Items.Add(bed_ids_array(i))
            End If
        Next
    End While

我想要做的是如果找到匹配则将" Occupied" 添加到文本中,否则,只需正常输入

1 个答案:

答案 0 :(得分:1)

我建议做一些改变。抛弃组合框以获取数据网格视图。您仍然可以选择所需的行,但可以更好地查看数据。在查询中加入您的两个表,以确定哪些床可用或占用。在患者卧床关系表中包括床和房间ID,或者更好的是,为每张床分配一个唯一的id。占用的表可以允许更有效的连接。

我认为您对现有代码的问题是,您要在每次重新加载框后两次添加列表,或者不清除它。我发现根据查询中的数据填充网格会更有效,例如上面提到的连接。

可能不是你想要的答案。