0

データベース テーブルの最初の定義:

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();

マスター グリッドにはテーブル UNCERTAINTY に格納されているすべてのアイテムが正しく表示されますが、詳細グリッドは常に空です。なんで ?

4

1 に答える 1

0

詳細クエリのパラメータは、MasterFields と一致する必要があります。param1そのため、FDQuery2 をID値 MasterFields に一致するように変更します。

于 2016-09-12T19:49:10.847 に答える