【发布时间】:2013-05-18 05:26:50
【问题描述】:
我正在使用 MySQL 数据库自学 Delphi 数据库编程。我正在尝试从嵌套的 ClientDataSet 添加一条记录,其中包含主表和详细表之间的链接以及主表中的自动增量字段。我在Inserting records with autoincrementing primary keys
找到了一个似乎可以回答我的问题的问题/答案对我不明白的是在 Query 中设置 required 标志。我不知道该怎么做,因为我太缺乏经验,也不明白为什么需要这样做。
与上面链接的问题类似,我有一个
(SQLConnection->TSQLDataSet->DataSetProvider->ClientDataSet using dbexpress.
| |->LinkDataSource
->TSQLDataSet2->LinkDataSource
我很好地将数据加载到我的嵌套 ClientDataSet 中,因此创建嵌套结构的组件链接工作。将主/明细表加载到嵌套数据集中后,以下代码报错。
MasterCDS1.Append;
MasterCDS1.FieldByName('TLNo').Required := False;
MasterSDS.FieldByName('TLNo').Required := False; { Error: Field 'TLNo' not found }
MasterCDS1.FieldByName('TLNo').ProviderFlags := [pfInWhere, pfInKey];
{ ... Populate Master table Fields}
MasterCDS1.Post;
MasterCDS1.ApplyUpdates(0);
TLNo 是链接表的字段,主表主键部分,明细表主键部分。我尝试设置 TSQLDataSet 的第三行生成注释中显示的错误。 MasterSDS 是我放置“Select * from master”查询的地方。 MasterCDS 从该查询中学习 Schema,并且字段 TLNo 是 MySQL 主表和详细表中的必填字段。第三行代码是我对 Uwe Raabe 先生所说的“解释”。显然我做错了。有人可以提供一个代码示例,以便这个 Delphi noob 不会误解说明吗?提前致谢。
【问题讨论】:
-
我不知道您的实际问题是什么。我看到一大堆文本和代码,然后“有人可以提供代码示例吗?提前致谢。”您能edit 减少无关信息并提出我们可以回答的问题吗?