Редактируемые подробные записи в Delphi DBGrid - PullRequest
1 голос
/ 14 апреля 2011

У меня есть база данных (хранящаяся в файле Access .MDB), в которой записываются сотрудники и их отсутствие, например, праздники, болезни, учебные курсы, даты начала и окончания, а также часы потерянного рабочего времени.

Затем у меня есть dbgrid, привязанная к «основному» запросу ADO, который находит всех сотрудников, удовлетворяющих выбранным критериям диапазона дат, отдела, строки поиска по имени, суммируя часы продуктивного потерянного времени.

У меня есть еще одна таблица dbgrid, связанная с таблицей ADO "detail", содержащей записи об отсутствии.

Желаемый эффект заключается в том, что база данных dbgrid должна содержать только те записи из таблицы Absence, которые соответствуют строке, выбранной в основной записи (Таблицы отсутствия «основного» персонала и «подробности» содержат общее поле EmployeeID).

Хотя я могу добиться этого с помощью запросов ADO, созданных на лету, меняя запрос каждый раз, когда пользователь переходит к другому главному персоналузапись, я надеялся использовать подробный DBGrid в качестве основного метода удаления, обновления,d добавление дополнительных записей об отсутствии в комплекте с поиском в сетке;поэтому пользователь может выбирать типы записей без необходимости запоминать код для этого типа.

Я также хотел бы, чтобы изменения в этой таблице подробностей были отражены в сводках в основной dbgrid.

Iдобились этого, используя подробный ADOTable, связанный как MasterDetail с запросом персонала, но необходимо отфильтровать значение True и управлять onfilterevent в коде;но с увеличением размера базы данных она становится все медленнее и медленнее.

Есть ли что-то, что я могу сделать, чтобы улучшить эту производительность, или я буду вынужден сделать подробный dbgrid только для чтения и все отсутствиезаписи, введенные через другую форму или панель?

1 Ответ

1 голос
/ 14 апреля 2011

Дополнительная информация о Создание таблицы как детали другого набора данных

ADOTable2.MasterSource := DataSource1;
ADOTable2.MasterFields := 'EmployeeID';


Я также хотел бы, чтобы изменения в этой сетке подробностей былиотражено в сводках в основной dbgrid.
После редактирования таблицы подробностей и публикации любых изменений вы можете использовать событие AfterPost для пересчета сводок.

...