私は、2つのテーブルを2つのtdbgridに表示されている関係マスター詳細です。今すぐ 私はTeditのコントロールのテーブルの詳細の行に各フィールドを表示したいと思いますが、今はteditの最初のグループの詳細の最初の行だけを表示します。Delphi Firedacマスター詳細マルチ
答えて
これは、VCLプロジェクト(とないFireMonkeyの1)である場合、あなたは非常に簡単にこれを行うことができます。
フォーム上に配置しTDBCtrlGridと詳細データセットのためにその
DataSource
を設定します。IDEで、DBCtrlGridは垂直な一連のパネルを表示します.1つはソリッドグレー、もう1つはストライプ化されています。実線の灰色のパネルにTDBEditsのようなdb対応コントロールを配置し、DataFieldプロパティを設定してコンパイルして実行します。 DBCtrlGridには、
Orientation
というプロパティがあり、好みに応じて縦または横に設定できます。あなたは、実行時に、DBCtrlGridはパネルのように多くのインスタンスとDB対応のコンポーネントに移入詳細レコードがあるとして、それはDBCtrlGridのRowCount
プロパティで指定された数まで、含まれていることを確認する必要があり
。パネルのコピーが十分にあるようにするには、RowCount
の値をマスターデータセットのRecordCount' of the detail dataset in the
AfterScroll`イベントに設定してみてください。それはあなたが(何TDBCtrlGridsを持っていない)LiveBindingsを使用する必要がありますので、FireMonkeyの(FMX)プロジェクトがある場合は、コントロールを設定と同じように一方
以下の最小限のVCLプロジェクトコード抽出は、DBCtrlGridの使用を示しています。
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBClient,
dbcgrids, Mask;
type
TForm1 = class(TForm)
cdsMaster: TClientDataSet;
cdsDetail: TClientDataSet;
dsMaster: TDataSource;
dsDetail: TDataSource;
gMaster: TDBGrid;
dbnavMaster: TDBNavigator;
gDetail: TDBGrid;
dbnavDetail: TDBNavigator;
DBCtrlGrid1: TDBCtrlGrid;
DBEdit1: TDBEdit; // placed in DBCtrlGrid1
DBEdit2: TDBEdit; // placed in DBCtrlGrid1
procedure cdsMasterAfterScroll(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
private
public
end;
[...]
procedure TForm1.FormCreate(Sender: TObject);
var
i,
j : Integer;
Field : TIntegerField;
begin
DBEdit1.DataField := 'MasterID';
DBEdit2.DataField := 'DetailID';
Field := TIntegerField.Create(Self);
Field.FieldName := 'MasterID';
Field.DataSet := cdsMaster;
cdsMaster.CreateDataSet;
Field := TIntegerField.Create(Self);
Field.FieldName := 'DetailID';
Field.DataSet := cdsDetail;
Field := TIntegerField.Create(Self);
Field.FieldName := 'MasterID';
Field.DataSet := cdsDetail;
cdsDetail.MasterSource := dsMaster;
cdsDetail.MasterFields := 'MasterID';
cdsDetail.IndexFieldNames := 'MasterID;DetailID';
cdsDetail.CreateDataSet;
for i := 1 to 10 do begin
cdsMaster.InsertRecord([i]);
for j := 1 to i do
cdsDetail.InsertRecord([j, i]);
end;
cdsMaster.First;
end;
procedure TForm1.cdsMasterAfterScroll(DataSet: TDataSet);
begin
cdsDetail.DisableControls;
try
DBCtrlGrid1.RowCount := cdsDetail.RecordCount;
finally
cdsDetail.EnableControls;
end;
end;
私のデータベースへの接続はFiredacと申し訳ありません –
FireDACは何も違いはありません.VCLプロジェクトでは、TDBCtrlGridを含むDelphiのすべてのdb対応コンポーネントがサポートされています。 – MartynA
しかし、私はそれらを同時に見ないのですが、どこが間違っていますか? –
TDBEditをフォームに配置し、そのDatafieldプロパティとDetailsテーブルのDatasourceプロパティを設定するだけです。
OPのスクリーンショットを見ると、彼のマスターテーブルは患者のテーブルであり、詳細は処方箋のテーブルであり、TBEditsはすでに詳細テーブルに接続されているようです。 – MartynA
しかし、行はTeditの最初のグループでのみ実行されます。 私はTeditと並行してすべての行を見たいと思います。 tdctrlgridでも機能しません。 逃げ出すものがあります –
https://www.youtube.com/edit?o=U&video_id=y_us6WeHVoQ –
- 1. firedacマスター - 詳細関係のdoesntの仕事のデータベーステーブルの
- 2. マスター/詳細動作
- 3. マスター詳細ビューアプリケーション
- 4. マスター - 詳細:アンドロイドに
- 5. JHipsterマスター詳細UI
- 6. RadGridマスター/詳細Telerik
- 7. grafanaマスター詳細ダッシュボード
- 8. マスター詳細 - マスターボタン - MasterBtn
- 9. マスター詳細in AngularJS
- 10. iOSマスター詳細秒
- 11. 詳細を変更すると、AngularJs、マスター詳細更新マスター
- 12. Entity Framework(マスター詳細)マスターから別のフォームにある詳細
- 13. マスター詳細レポートを作成
- 14. マスター詳細ビューASP.NET MVC
- 15. ストリーム解析 - >マスター - 詳細
- 16. xamarin.formsのマスター詳細ページ
- 17. jaGridマスターの詳細1回
- 18. Xamarin.Forms iOSのマスター/詳細エッジスワイプ
- 19. マスター詳細コンポーネント角度4
- 20. Hibernateマスター詳細カスケード挿入
- 21. Xamarinマスターの詳細ページオートハンバーガー
- 22. ノックアウトのマスター詳細JS
- 23. Androidのマスター詳細レイアウト
- 24. MVVM WPFマスター詳細コンボボックス
- 25. 詳細レコードのfiredac投稿やキャンセルを防ぐには?
- 26. Oracle Apex - マスター詳細フォームの詳細フォームの編集
- 27. マスター詳細グリッドの詳細グリッドを動的にロード
- 28. 詳細がライトボックスにあるASP.NETマスター/詳細ページの例?
- 29. マスター詳細データウィンドウの詳細を新しいウィンドウに表示
- 30. マスター詳細jqGrid(HTMLでxml入力)
はいプロジェクトはVCLです。私はその後、各行のクエリを書く必要がありますか? –
次に、各行にクエリを書く必要がありますか? yesはVCL –
です。「各行にクエリを書き込む必要がありますか?」私の答えのようにTDBCtrlGridを使用する場合、必要はありません。 – MartynA