将Visual Basic ComboBox与Access表连接

时间:2014-06-24 18:32:39

标签: vb.net ms-access combobox

我正在使用Visual Basic Express 2010和Microsoft Access。我创建了数据库和Access的关系,将它们连接到VB就好了。 我的问题是,我有一个名为Address_Table的表,它只包含一个名为Address_Name的字段。表Address_Table连接到The_Student表到名为Student_Address的字段,其中包含"强制参照完整性"。

我无法上传图片我真的很抱歉,我真的很努力。

问题#1是: 在visual basic中,我想创建一个组合框,用户可以从Address_Name中选择导入的选项,然后在单击添加按钮后,该选项将被添加到数据库中的Student_Address字段。 我的意思是,Address_Name将包含像A,B,C这样的值。我希望这些值出现在组合框中,在他选择其中一个之后,他点击添加,选择将被插入到数据库中。

问题#2是: 对不起它也是关于组合框的。它是关于两个组合框,当你选择第一个像表国家一样,你选择美国,然后在另一个组合框中只会出现美国的状态。或者当你选择英格兰时,只会出现英格兰的城市,等等。

*表国家/地区有一个名为Country_Name的字段。 *表奖学金包含字段:Scholarship_To,Country_Name,City_Name * Table City有fileds:City_Name,Country

*表奖学金和国家/地区都连接到名为Student_Info的表,国家/地区连接到ABC字段,奖学金连接到新字段。 *表国家/地区连接到奖学金和城市表到以下字段:奖学金中的Country_Name和City表中的国家/地区。 *奖学金表连接到City表:City_Name with Country字段。 所有这些都有"强制参照完整性"。

哦,上帝,我希望有人了解我,我试图提供一切,请帮助我。

Public Class frmStudent
Dim cnn As New OleDb.OleDbConnection
 Private Sub RefreshData()
    If Not cnn.State = ConnectionState.Open Then
        'open connection
        cnn.Open()
    End If

    Dim da As New OleDb.OleDbDataAdapter("SELECT Student_ID as [ID], " & _
                                         "Student_Name as [Name], Student_Gender, Student_Phone, Student_Address " & _
                                         " FROM The_Student ORDER BY Student_ID", cnn)
    Dim dt As New DataTable
    'fill data to datatable
    da.Fill(dt)

    'offer data in data table into datagridview
    Me.dgvData.DataSource = dt

    'close connection
    cnn.Close()
End Sub

 Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Dim cmd As New OleDb.OleDbCommand
    If Not cnn.State = ConnectionState.Open Then
        'open connection if it is not yet open
        cnn.Open()
    End If

    cmd.Connection = cnn
    'check whether add new or update
    If Me.txtstdID.Tag & "" = "" Then
        'add new 
        'add data to table
        cmd.CommandText = "INSERT INTO The_Student(Student_ID, Student_Name, Student_Gender, Student_Phone)" & _
                        " VALUES(" & Me.txtstdID.Text & ",'" & Me.txtStdName.Text & "','" & _
                        Me.cboGender.Text & "','" & Me.txtPhone.Text & "')"
        cmd.ExecuteNonQuery()
    Else
        'update data in table
        cmd.CommandText = "UPDATE The_Student " & _
                    " SET Student_ID=" & Me.txtstdID.Text & _
                    ", Student_Name='" & Me.txtStdName.Text & "'" & _
                    ", Student_Gender='" & Me.cboGender.Text & "'" & _
                    ", Student_Phone='" & Me.txtPhone.Text & "'" & _
                    ", Student_Address='" & Me.txtAddress.Text & "'" & _
                    " WHERE Student_ID=" & Me.txtstdID.Tag
        cmd.ExecuteNonQuery()

    End If
    'refresh data in list
    RefreshData()
    'clear form
    Me.btnClear.PerformClick()

    'close connection
    cnn.Close()
End Sub

Private Sub frmStudent_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    cnn = New OleDb.OleDbConnection
    cnn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\data.mdb"
    '
    'get data into list
    Me.RefreshData()
End Sub

1 个答案:

答案 0 :(得分:0)

这正是您正在寻找的。这些通常称为查找列表。 http://msdn.microsoft.com/en-US/vstudio/bb466226.aspx#formsoverdata

因此,特别是视频#5应该是您正在寻找的视频。由于您使用的是VB + Access,我建议您放弃OleDb命令并使用强类型数据集和适配器等,除非您有令人信服的理由不这样做。即使你这样做,建立查找的方式与她在这些视频中的方式一样,也会生成Insert / Update / Delete语句,以满足约束条件(它们是适配器的属性)。