0

好的,所以我一直在查看该站点一段时间,接受合理的建议并在我的开发中使用它。

但是,我遇到了一个问题,我似乎无法找到要解决的写入方向。我是一个完整的 SQL 初学者,所以我一直在摸索和搜索 Google 的时间比我通常允许自己的时间要长。所以,我在这里问是否有办法做到这一点。我希望有,但这里有。

我有一个内置在 vb.net 中的表单,用户可以在其中创建车辆记录。它在表 1 中添加了记录。然后他们可以从表 2 中添加车辆规格(例如卫星导航、双氙气大灯、拖车杆等)。每辆车的这些选择存储在表 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

因此,如果他们在这辆车上添加一个牵引杆,就会添加一个新列。同样,如果 Sat Nav 被删除,该列也会消失。

如果这是可能的,我可以请一些聪明的小伙子引导我朝着正确的方向前进吗?

4

1 回答 1

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# 中混为一谈的,所以它可能很接近但并不完美(未经测试),干杯

于 2013-07-30T12:58:56.887 回答