Мне нужно использовать довольно сложный запрос к нескольким таблицам в качестве источника данных для непрерывной формы, но форма должна оставаться редактируемой. Все поля формы, которые мне нужно отредактировать, связаны только с одной таблицей, но мне все еще нужно отображать информацию из многостолового запроса в нескольких полях в неизменяемой форме. Я выполнил это, используя DLookUp в исходном запросе записи для полей «только для отображения», но производительность ужасна, поскольку база данных разделена, а резервная копия находится на сервере со связанными таблицами. Если я выполняю то же самое, просто используя SELECT для полей запроса, мне нужно отобразить производительность в порядке, но вся форма становится недоступной для редактирования.
Будем весьма благодарны за любые идеи о том, как добиться этого более эффективно. Я связал изображения формы, страницы дизайна формы, страниц дизайна запроса и вставил соответствующий SQL ниже.
Пример формы Пример дизайна формы
ITNQuery SQL: ITNQuery
SELECT itn.id,
itn.itnnumber,
itn.portfolio,
itn.topic,
itn.itndate,
itn.statusid,
itn.notes,
itn.delivereddate,
itn.leadlinguistid,
itn.teamid AS Expr1,
itn.newversionentry,
itn.previousitn,
itn.reviewinglinguistid,
itn.itnresponse,
itn.leadresponsecoordinatorid,
itn.datesenttoleadcoordinator,
itn.responsedeadline,
itn.priority,
itn.casemanagerid,
itn.responsecoordinator2id,
itn.datesenttocoordinator2,
itn.responsecoordinator3id,
itn.datesenttocoordinator3,
itn.responsecoordinator4id,
itn.datesenttocoordinator4,
itn.coordinatinglinguistid,
Iif([itn].[statusid] <> 9
AND [itn].[statusid] <> 10
AND [itn].[statusid] <> 19
AND [itn].[statusid] <> 20
AND [itn].[statusid] <> 28
AND [itn].[statusid] <> 30, Iif([itn].[delivereddate] > 0,
Datediff("d", [itn].[itndate], [itn].[delivereddate]),
Datediff("d", [itn].[itndate], Now()))) AS ITNAge,
itn.newversionentry,
itn.teamid,
statuslist.[display order],
itn.cooraspondanceid,
itn.documenttypeid,
Dlookup("ducumentabreviation", "associateditntextquery",
"currentitnid =" & [itn].[id]) AS AssocAbrev,
Dlookup("itnnumber", "associateditntextquery",
"currentitnid =" & [itn].[id])
AS AssocNumber
AssociatedITNTextQuery: AssociatedITNTextQuery
SELECT associateditns.current_itn_id AS CurrentITNID,
associateditns.associated_itn_id,
associateddocstextquery1.maxofitndate,
documenttypes.ducumentabreviation,
itn.itnnumber,
itn.itndate
FROM (itn
INNER JOIN documenttypes
ON itn.documenttypeid = documenttypes.id)
INNER JOIN (associateditns
INNER JOIN associateddocstextquery1
ON associateditns.current_itn_id =
associateddocstextquery1.current_itn_id)
ON itn.id = associateditns.associated_itn_id
WHERE ( ( ( itn.itndate ) IN ( associateddocstextquery1 ! maxofitndate ) )
AND
( ( associateddocstextquery1.current_itn_id ) =
associateditns ! current_itn_id ) );
AssociatedITNTextQuery1: AssociatedITNTextQuery1
SELECT associateditns.current_itn_id,
Max(ITN_1.itndate) AS MaxOfITNDate
FROM itn AS ITN_1
INNER JOIN associateditns
ON ITN_1.id = associateditns.associated_itn_id
GROUP BY associateditns.current_itn_id;