我有一个有效的Select查询,但是由于它包含多个表,所以无法从datagridview更新它。
我敢肯定它可以重写以允许更新,但是我的SQL相当有限。
SELECT
d.Unique_Part_ID,
d.Location_ID,
d.Recorded_Value,
d.Date_Time_Stamp,
d.Traceability,
d.Part_Status,
d.Measure_State,
p.Part_Number,
p.Part_Rev,
c.CN,
c.Characteristic_Requirement,
c.Characteristic_Name,
c.Tol_min,
c.Nominal_Value,
c.Tol_Max,
c.Proprietary_Tag
FROM GE_KC_Data AS d
INNER JOIN GE_Key_Characteristics AS c ON d.Characteristic_ID = c.ID
INNER JOIN GE_Parts AS p ON c.PartID = p.ID
WHERE IsNull(d.Reported,'False')='False'
ORDER BY d.Date_Time_Stamp DESC
你们中的任何一个天才都能提供帮助吗? 使用子查询语句还会返回错误“当EXISTS未引入子查询时,只能在选择列表中指定一个表达式” 当然,我不知道那是什么意思。
答案 0 :(得分:0)
我确定可以将其重写以允许更新
不能。确定要更新的表并为其编写更新语句,然后将其分配给所使用的数据适配器的updatecommand属性
如果您将更新两个不同的表,请编写存储过程以进行更新,将数据传递给sproc(再次将其分配给dataadapter的updatecommand)并更新sproc内的多个表
或循环绑定datagridview的数据表,并使用多个更新查询自己手动提交更新的行
对于在这样的情况下(如果我有一个主/从数据关系来表示一个表格)的价值,我不尝试在一个网格中表示它们,而是使用两个网格,对每个表进行简单选择有一个具有可更新表的数据集,我在两个表之间建立一个数据关系,然后使从属网格的绑定源具有一个数据源(主绑定源)和一个数据属性名称(该数据集的数据关系名称)。这意味着当在主网格中选择一个主行时,从网格将仅过滤到与所选主网格相关的行
因此,您最终不会在单个网格中重复使用主单元格(如果您有订单和订单项,那么将对每个订单项重复订单数据:
ordernum | customer name | item ordered
123 | John Smith | washer pump
123 | John Smith | door seal
如果您将一行的名称编辑为简·史密斯,将另一行的名称编辑为约翰·琼斯,哪一行会获胜?
拥有两个网格和链接的数据是执行此操作的正确方法。有关更多信息,请参见:
https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx
无论您如何看待其他情况,建议您先阅读“创建一个简单数据应用程序”教程;