我正在经历很多关于如何填充数据集的资源。当我尝试用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)
答案 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 ....