使用数据集查询多个结果集时出错

时间:2014-01-03 13:50:46

标签: sql vb.net ms-access

我正在经历很多关于如何填充数据集的资源。当我尝试用4个select语句填充创建的数据集时,我遇到了一些错误。 但我的sql使用where子句,我看到的其他语句选择了某些列,并使用半列转到另一个select语句。

现在当我在两个sql语句之间包含分号并尝试运行时会发生错误,告诉我"Characters found after end of SQL statement"

当我省略半结肠时,会出现另一个错误  "Syntax error in query expression"

有没有办法解决问题?

感谢您的帮助。

    str1 = "SELECT [description] FROM [project] WHERE [project number]=@project"
    str2 = "SELECT [material number],[material type],[unit],[work_item_material_cost].[quantity],[rate],[cost/unit] FROM [work_item_material_cost]" & _
  "WHERE [work_item_material_cost].[project number]=@wimproject"
    str3 = "SELECT [labour number],[labour title],[work_item_labor_cost].[quantity],[work_item_labor_cost].[utilization factor],[indexed hourly cost],[total hourly cost] FROM [work_item_labor_cost]" & _
   "WHERE [work_item_labor_cost].[project number]=@wilproject"
    str4 = "SELECT [equipment number],[equipment type],[work_item_equipment_cost].[quantity],[work_item_equipment_cost].[utilization factor],[hourly rental rate],[total rental rate] FROM [work_item_equipment_cost]" & _
 "WHERE [work_item_equipment_cost].[project number]=@wieproject"

    currentProject = New DataSet()
    project = New DataTable("project")
    wimaterial = New DataTable("work_item_material")
    wilabour = New DataTable("work_item_labour")
    wiequipment = New DataTable("work_item_equipment")

    cmd.CommandText = str1
    cmd.Parameters.AddWithValue("@project", str)
    Dim data_reader = cmd.ExecuteReader()
    project.Load(data_reader)
    currentProject.Tables.Add(project)

1 个答案:

答案 0 :(得分:1)

您似乎正在使用MSAccess作为数据库 如果是这种情况,则MSAccess不支持多个select语句作为您的查询 除了自己发出每个select命令之外别无选择。 (或使用不同的数据库)。

string q1 = "SELECT [description] FROM [project] WHERE [project number]=?"
string q2 = "SELECT [material number],[material type],[unit],[quantity],[rate],[cost/unit] " & _
            "FROM [work_item_material_cost] WHERE [work_item_material_cost].[project number]=?" 
string q3 = "SELECT [description] FROM [project] WHERE [project number]=?"
string q4 = "SELECT [material number],[material type],[unit],[quantity],[rate],[cost/unit] " & _
            "FROM [work_item_material_cost] WHERE [work_item_material_cost].[project number]=?" 
string q5 = "SELECT [labour number],[labour title],[quantity],[utilization factor]," & _
            "[indexed hourly cost],[total hourly cost] FROM [work_item_labor_cost] " & _
             "WHERE [work_item_labor_cost].[project number]=?"
string q6 = "SELECT [equipment number],[equipment type],[quantity],[utilization factor]," & _
            "[hourly rental rate],[total rental rate] FROM [work_item_equipment_cost] " & _
            "WHERE [work_item_equipment_cost].[project number]=?"

Dim ds As DataSet = new DataSet()
Dim dt1 = new DataTable("dt1")
Dim dt2 = new DataTable("dt2")
Dim dt3 = new DataTable("dt3")
Dim dt4 = new DataTable("dt4")
Dim dt5 = new DataTable("dt5")
Dim dt6 = new DataTable("dt6")

cmd = New OleDbCommand()
cmd.Connection = conn
cmd.CommandText = q1
cmd.Parameters.AddWithValue("@p1", str)
Dim rd = cmd.ExecuteReader()
dt1.Load(reader)
ds.Tables.Add(dt1)

cmd.CommandText = q2
rd = cmd.ExecuteReader()
dt2.Load(reader)
ds.Tables.Add(dt2)

.... and so on for the other queries ....