У меня есть база данных (хранящаяся в файле Access .MDB), в которой записаны сотрудники и любое их отсутствие, например. отпуск, болезнь, учебный курс, даты начала и окончания, а также количество потерянных часов продуктивного времени.
Затем у меня есть dbgrid, привязанный к «главному» запросу ADO, который находит всех сотрудников, отвечающих выбранным критериям диапазона дат, отдела, строки поиска по имени, суммируя часы продуктивного потерянного времени.
У меня есть еще одна dbgrid, привязанная к «подробной» таблице ADO, содержащей записи об отсутствии.
Желаемый эффект заключается в том, что детальная таблица dbgrid должна содержать только те записи из таблицы «Отсутствия», которые соответствуют строке, выбранной в основной записи (и «основная» таблица «Сотрудники», и «подробная» таблица «Отсутствие» содержат общее поле «Код сотрудника»).
Хотя я могу добиться этого с помощью запросов ADO, созданных «на лету», изменяя запрос каждый раз, когда пользователь переходит к другой основной записи персонала, я надеялся использовать детальную DBGrid в качестве основного метода удаления, обновления и добавления дополнительных записей об отсутствии. , в комплекте с поиском в сетке; поэтому пользователь может выбирать типы записей, не запоминая код для этого типа.
Я также хотел бы, чтобы изменения в этой детализированной сетке отражались в сводках в главной dbgrid.
Я добился этого, используя подробный ADOTable, связанный как MasterDetail с запросом персонала, но мне нужно установить для параметра filter значение True и управлять событием onfilterevent в коде; но по мере увеличения размера базы данных это становится все медленнее и медленнее.
Могу ли я что-нибудь сделать, чтобы улучшить эту производительность, или мне придется иметь детальную dbgrid только для чтения, а все записи об отсутствии вводить через другую форму или панель?