好的,所以我一直在看这个网站一段时间,在我的开发过程中提出建议并使用它。
然而,我遇到了一个问题,我似乎无法找到要解决的写入方向。我是一个完整的SQL初学者,所以我一直在摸不着头脑,搜索谷歌的时间超过了我通常允许的时间。所以,我在这里问是否有办法做到这一点。我希望有,但这里有。
我有一个在vb.net中构建的表单,用户可以在其中创建车辆记录。它在表1中添加了记录。然后他们可以从表2中添加车辆规格(如Sat Nav,双氙气大灯,牵引杆等)。每辆车的这些选择存储在表3中,以便我可以在表格中显示在我的项目上。
3个表:
表1 - “车辆”:
vehicleID ¦ RegNumber ¦ makeModel ¦ .....
1 ¦ AB01 CDE ¦ Ford Focus ¦ .....
表2 - “车辆规格”
specID ¦ specItem
1 ¦ Bi-Xenon Headlights
2 ¦ Sat Nav
表3 - “车辆规格链接”
specID ¦ vehicleID¦ netCost
1 ¦ 1 ¦ 256.20
2 ¦ 1 ¦ 150
现在,我被要求在一张电子表格中提供这些信息,以便他们可以将其发送给最终用户。然而,他们想要的是有点混乱和复制的棘手。我可以通过创建方法和手动生成DataGridView来实现这一点,但速度很慢。我想象的更好的是创建一个单独的SQL查询来完成所有这一切,然后将DataGridView数据源设置为它。
他们想要的是扩展的电子表格,它显示表1中的标准信息,但是当他们为车辆分配了规格时,还包含表3中的相关信息。
结果将是:
Make/Model ¦ Reg Number ¦ Bi-Xenon Headlights ¦ Sat Nav
Ford Focus ¦ AB01 CDE ¦ 256.20 ¦ 150
因此,如果他们在这辆车上添加一个牵引杆,就会添加一个新的列。同样,如果删除了卫星导航,则该列将消失。
如果可以,我可以请一位聪明的小伙子指导我朝正确的方向发展吗?
答案 0 :(得分:0)
Dim cs As String = "connection string here"
Dim query As String = "SELECT table_1.makeModel, table_1.regNumber" & _
"INTO table_new" & _
"FROM table_1" & _
"JOIN table_2 ON table_2.vehicleID = table_1.vehicle.ID" & _
"JOIN table_3 ON table_2.specID = table_3.specID"
Dim newTable As New DataTable
Dim dgv As New DataGridView
Dim bs As New BindingSource
Using con As New SqlConnection(cs)
con.Open()
Using adapter As New SqlDataAdapter(query, con)
adapter.Fill(newTable)
End Using
con.Close()
End Using
dgv.autogeneratecolumns = true
bs.DataSource = newTable
dgv.DataSource = bs
我的vb是我的c#,所以它可能接近但不完美(未经测试),欢呼