У меня есть 2 таблицы в отношении master-details, отображаемые в 2 tdbgrid. Теперь Я хотел бы показать каждое поле в строках данных таблицы в элементе управления Tedit, но теперь я просматриваю только первую строку детали в моей первой группе tedit.Delphi Firedac master подробнее несколько
ответ
Если это проект VCL (а не FireMonkey один), вы можете сделать это очень просто.
Поместите TDBCtrlGrid на вашей форме и установите ее
DataSource
для детализации данных.В IDE, DBCtrlGrid отобразит вертикальную серию панелей, один цветной сплошной серый, а другие полосатые. Поместите элементы управления db, такие как TDBEdits на сплошной серой панели, установите их свойства DataField, затем выполните компиляцию и запуск. DBCtrlGrid имеет свойство
Orientation
, которое вы можете установить на вертикальное или горизонтальное, в соответствии с вашими предпочтениями.
Вы должны видеть, что во время выполнения, то DBCtrlGrid заселяет с таким количеством экземпляров панели и БД-зависимых компонентов, содержащихся в нем, как есть детальные записи, до числа, указанного RowCount
имущества DBCtrlGrid в , Если вы хотите убедиться, что имеется достаточно копий панели, вы можете попробовать установить значение RowCount
в событие RecordCount' of the detail dataset in the
AfterScroll` основного набора данных.
С другой стороны, если это (FMX) проект FireMonkey, так что вы должны использовать LiveBindings (которые не имеют TDBCtrlGrids), то может быть возможно сделать это таким же образом, как вы могли бы установить контроль для отображения полей базового набора данных, но я никогда не пробовал.
Следующий минимальный код проекта проекта 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 он поддерживает все поддерживаемые db-компоненты Delphi, включая TDBCtrlGrid. – MartynA
, но я не вижу их одновременно, где я не прав? –
Просто поместите TDBEdit на форму, а затем установить его свойство DataField и Datasource свойство таблицы деталей.
Если вы посмотрите на скриншот OP, это выглядит так, как его главная таблица - таблица пациентов, а детали - таблица их рецептов, и он, похоже, уже подключен к таблице подробностей TBEdits. – MartynA
, но линии запускаются только в первой группе Tedit. Мне хотелось бы увидеть все строки во всех современных Тодитах. Он не работает даже с tdctrlgrid. Есть что-то, что ускользает от меня –
https://www.youtube.com/edit?o=U&video_id=y_us6WeHVoQ –
- 1. Таблицы памяти Delphi Firedac
- 2. Delphi Firedac TFDtable open issue
- 3. PlSql в Delphi с Firedac
- 4. Delphi Firedac: Подождите открытого TFDQuery
- 5. Delphi FireDac (TFDConnection) подключиться к службе Sphinx
- 6. Использование служб FireDAC MS Access (Delphi XE6)
- 7. Delphi Firedac MSSQL копия на другой сервер
- 8. Delphi: Миграция с IBO на FireDac
- 9. Delphi FireDAC и обновление с классом FDUpdateSQL
- 10. Фильтр запросов delphi firedac База данных Firebird
- 11. Ошибка Delphi + Firedac и сетевого подключения
- 12. Работа с параметрами Delphi XE7 Firedac
- 13. Delphi 10.1 FireDac и Sqlite date issue
- 14. SQLite FireDAC конечные пробелы
- 15. FireDAC: Array DML Progress
- 16. Самый быстрый способ загрузить массив DML в Delphi FireDAC
- 17. Показать базу данных sqlite в Delphi XE6, используя программно firedac
- 18. Создать Master/Подробнее Посмотреть на основе TreeView Control в Silverlight
- 19. FireDac поле не найден
- 20. Delphi FireDac - Получить автоматически увеличивающееся значение после переопределения сообщения Обновления
- 21. Как работать с TFDTable (FireDAC) в Delphi XE7?
- 22. Регистрация фильтра Firebird Blob с использованием FireDac (Delphi)
- 23. Delphi XE6 FireDAC - экспортировать набор записей TFDQuery в JSON
- 24. Драйвер Firedac Visual Foxpro 6.0 Ошибка в памяти в Delphi
- 25. Подключение к SQLServer с Firedac в Delphi 10 Seattle
- 26. Delphi поток в/из базы данных с FireDAC
- 27. Delphi FireDAC Событие TFDQuery «AfterOpen» никогда не выполняется
- 28. Ошибка при подключении к MS SQL LocalDB через FireDac (Delphi)
- 29. Создание базы данных в Firebird с использованием FireDac (Delphi)
- 30. Подробнее ... Подробнее нет.
Да, проект VCL. Затем я должен написать запрос для каждой строки? –
Затем я должен написать запрос для каждой строки? yes is VCL –
«Я должен написать запрос для каждой строки?» если вы используете TDBCtrlGrid, как в моем ответе, нет необходимости. – MartynA