[英]firedac master - detail relationship doesnt work
First definition of database tables: 数据库表的第一个定义:
CREATE TABLE UNCERTAINTY
(
ID Integer NOT NULL,
NAME Varchar(240) CHARACTER SET NONE NOT NULL,
CONSTRAINT PK_UNCERTAINTY PRIMARY KEY (ID),
UNIQUE (NAME)
);
CREATE TABLE UNCERTAINTYDETAIL
(
ID Integer NOT NULL,
UNCERTAINTY_ID Integer NOT NULL,
MEASTYPE Varchar(255) CHARACTER SET NONE,
CONDITION Varchar(255) CHARACTER SET NONE,
POWERFACTOR Double precision,
LOADTYPE Varchar(255) CHARACTER SET NONE,
UNCERTAINTY Double precision,
CONSTRAINT PK_UNCERTAINTYDETAIL PRIMARY KEY (ID)
);
ALTER TABLE UNCERTAINTYDETAIL ADD CONSTRAINT FK_UNCERTAINTY_UNCERTAINTYDETAI
FOREIGN KEY (UNCERTAINTY_ID) REFERENCES UNCERTAINTY (ID) ON DELETE CASCADE;
And now definition of my data sources and queries in dfm file: 现在在dfm文件中定义我的数据源和查询:
object FDQuery1: TFDQuery
Connection = Connection1
SQL.Strings = (
'select * from UNCERTAINTY'
'order by NAME')
Left = 125
Top = 239
end
object FDQuery2: TFDQuery
MasterSource = DataSource1
MasterFields = 'ID'
Connection = Connection1
SQL.Strings = (
'select * from UNCERTAINTYDETAIL'
'where UNCERTAINTY_ID=:param1'
'order by ID')
Left = 456
Top = 224
ParamData = <
item
Name = 'PARAM1'
ParamType = ptInput
end>
end
object DataSource1: TDataSource
DataSet = FDQuery1
Left = 53
Top = 239
end
object DataSource2: TDataSource
DataSet = FDQuery2
Left = 392
Top = 224
end
Both data sources are connected to db grids. 两个数据源都连接到数据库网格。
In FormShow event I call following methods: 在FormShow事件中,我调用以下方法:
FDQuery1->Open();
FDQuery2->Open();
The master grid displays correctly all items stored in table UNCERTAINTY but detail grid is always empty. 主网格正确显示存储在表UNCERTAINTY中的所有项目,但明细网格始终为空。 Why ?
为什么呢
The parameters of detail query should match MasterFields. 详细信息查询的参数应与MasterFields相匹配。 So change
param1
of FDQuery2 to ID
to match value MasterFields. 因此,将FDQuery2的
param1
更改为ID
以匹配值MasterFields。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.