自动识别字段在许多

我有一个“项目”的数据库,分配给多个“类别”。 分类可以有多个项目,反之亦然。 数据库结构的相关部分如下所示:

[tblItem]
ItemID(自动编号)
主文本(文本)

[tblCategory]
类别ID(自动编号)
名称(文本)

[tblItemCategory]
ItemID(长整数)
CategoryID(长整型)

我想建立一个面板组件,它在顶部显示一个类别名称,并在下面有一个属于该网格的物品的数据绑定网格。 这个面板组件会有很多实例,最终用户应该能够创建一个新的项目,并同时将它分配给任何一个有问题的类别。

在MS Access中,可以创建一个嵌套表单,将“子”一个数据绑定到一个查询,该查询是“MasterFields”,链接到“父”表单上的数据绑定“类别”字段,使得项目网格更改为类别字段已更改。 此项目网格还可以轻松地添加新记录,同时自动填充ItemID(在tblItem和表tblItemCategory中)和链接的CategoryID字段(在tbIItemCategory中)。

该Access窗体的网格查询是:
SELECT tblItemCategory.CategoryID,tblItem。*
FROM tblItemCategory LEFT JOIN tblItem ON tblItemCategory.ItemID = tblItem.ItemID
ORDER BY tblItemCategory.CategoryID;

如果我在Delphi中尝试同样的事情,ItemID AutoNumber字段不会被填充,导致以下错误:

..exception class EOleException带有消息'The field'tblItemCategory.ItemID'不能包含Null值,因为此字段的Required属性设置为True。 在此字段中输入一个值'。

..并且ItemID字段在网格中相应为空白。

有没有办法让Delphi / ADO像Access一样轻松/整洁地处理幕后两张ItemID群体,而无需通过程序手动处理? 如果不是,以编程方式处理它的最好/最优雅的方式是什么?

我想尽可能保留与传统TDataSet / TDataSource方法紧密相关的解决方案,因为我使用了许多不同类型的数据绑定控件,所有这些控件都必须处理相同的数据结构。

(注意:我使用的是Delphi 2007和MSAccess 2000格式的MDB文件。)


几乎相同的方式。 Theres的主要来源和主域属性,因此您只需将详细信息链接至主。

所以,mastersource将是Customer,Detail Source,由CustomerID链接的订单。

死容易显示这一点,但很难解释。

尽管如此,其他一些家伙却写下了这些。

主细节表格和Delphi


如果要通过网格将新记录添加到表中,则必须使用基础查询的BeforePost方法才能获取新密钥,然后将其与类别ID一起手动插入到链接表中。

我承认我从来没有用可编辑(和可插入)网格编写代码,所以我的答案可能需要稍微调整。

链接地址: http://www.djcxy.com/p/35063.html

上一篇: AutoID Field in Many

下一篇: MySQL DataSet into Json Format using delphi SuperObject