2016-04-20 6 views
0

まず定義:firedacマスター - 詳細関係のdoesntの仕事のデータベーステーブルの

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; 

そして今、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 

両方のデータソースがDBに接続されていますグリッド。

私は次のメソッドを呼び出すFormShowイベントで

FDQuery1->Open(); 
FDQuery2->Open(); 

マスタグリッドが正しく表の不確実性に格納されているすべての項目が表示されますが、詳細グリッドが常に空です。どうして ?

答えて

0

詳細クエリのパラメータは、MasterFieldsと一致する必要があります。したがって、FDQuery2のparam1IDに変更し、値MasterFieldsと一致させてください。

関連する問題