我正在使用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
答案 0 :(得分:0)
这正是您正在寻找的。这些通常称为查找列表。 http://msdn.microsoft.com/en-US/vstudio/bb466226.aspx#formsoverdata
因此,特别是视频#5应该是您正在寻找的视频。由于您使用的是VB + Access,我建议您放弃OleDb命令并使用强类型数据集和适配器等,除非您有令人信服的理由不这样做。即使你这样做,建立查找的方式与她在这些视频中的方式一样,也会生成Insert / Update / Delete语句,以满足约束条件(它们是适配器的属性)。