gpt4 book ai didi

c# - 如何根据两个表过滤 TableAdapter 的 FillBy?

转载 作者:行者123 更新时间:2023-11-30 21:25:55 24 4
gpt4 key购买 nike

我在 Windows 窗体应用程序上使用 VS2008 C# Express 和 Northwind 数据库。

我使用拖放操作为两个数据 GridView 设置了主详细信息绑定(bind)(我使用了订单和订单详细信息)。此时,一切都按预期工作。为了不返回表中的每一行,我想根据订单表的过滤器以及订单详细信息表中的字段来过滤订单表。在 TableAdapter 配置向导中,我使用查询构建器添加了一个新的 FillByMyFilter,它创建了以下查询:

SELECT Orders.[Order ID], Orders.[Customer ID], Orders.[Employee ID], Orders.[Ship Name], Orders.[Ship Address], Orders.[Ship City], Orders.[Ship]地区], 订单。[发货邮政编码],订单。[发货国家],订单。[发货方式],订单。[订单日期],订单。[要求日期],订单。[发货日期], 订单.运费FROM 订单 INNER JOIN [订单详情] ON 订单。[订单 ID] = [订单详情]。[订单 ID]WHERE (Orders.[Ship Name] LIKE N'A%') AND ([Order Details].Quantity < 20)

我通过添加两个表得到了这个,但没有选中订单详细信息表中的任何字段框,因此它只会返回在原始 Fill 查询中使用的列。此时我只是想过滤主表中的数据集,而不是返回不同数量的列。订单详细信息的子行仍应像默认的未过滤结果集一样工作。

现在的问题是:当我单击“执行查询”按钮时,它工作正常。我从上面的查询中得到 53 行,而不是使用设计者创建的默认 Fill 得到的 1078 行。它返回与原始填充查询相同的列。但是,当我尝试运行该应用程序时,出现以下约束错误:

“无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。”

我做错了什么?

更新:我认为我遇到了约束错误,因为向导创建了 INNER JOIN。如果我编辑查询以使用 LEFT JOIN,则向导会将其改回 INNER JOIN。

我的问题仍然是如何根据父表和子表的条件过滤父表(订单)中的记录。我的下一个测试是尝试使用存储过程,但想知道仅使用 TableAdapter 自定义 FillBy 方法。

问候,

调试

最佳答案

本文包含一些故障排除建议,以查明导致问题的确切行:

DataSet hell - "Failed to enable constraints. One or more rows contain values...."

关于c# - 如何根据两个表过滤 TableAdapter 的 FillBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/410148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com