|
#1
|
|||
|
|||
Firedac vs DOA
TOracleDataSet при изменении текста запроса держит открытым пред. датасет и позволяет выполнить refresh() не обрывая грид.
TFDQuery (FireDac) сразу закрывает датасет, обновить данные можно только методом Open() Как настроить TFDQuery. чтобы он не закрывал запрос и позволял выполнить refresh() ? |
#2
|
|||
|
|||
Ну, это внутренняя кухня компонента. Не уверен, что можно это поведение изменить. С другой стороны, можно заблокировать сообщения об обновлении DataSet, сделать свои мзменения, переоткрыть DataSet и потом обратно разрещить сообщения. Тогда это будет выглядеть для пользователя точно так, как ты описал, т.е. грид не будет пропадать. Только часики не забывай "вешать" на всякий случай:
Код:
FDQuery1.DisableControls; Screen.Cursor := crHourGlass; FDQuery1.Close; Try FDQuery1.SQL.Text := 'select new_fields from here'; FDQuery1.Open; Finally Screen.Cursor := crDefault; FDQuery1.EnableControls; End; |
#3
|
|||
|
|||
Огромное спасибо за отклик.
Попробую. У меня была подобная мысль но я не сообразил как это сделать(пришлось тупо переинициализировать грид). Желаемая цель - разобраться с TFDQuery. (может всё есть) |
#4
|
|||
|
|||
Ну, если ты так кардинально меняешь запрос (меняешь список полей) и у тебя идет динамическая настройка грида, то его все-равно надо переинициализировать. Тут уж все зависит от твоего кода. Если список полей не меняется, то сам грид трогать вообще смысла нет (например, ты только достраиваешь динамически фильтрацию в запросе).
Кстати, а посмотри код Refresh в DOA. Есть подозрение, что он именно то, что я предложил и делает, т.к. по сути с точки зрения клиент-сервер только так и делается. Т.е. все равно просто исполняется новый запрос. |
#5
|
|||
|
|||
ПРоверил
Увы - грид не обманешь, что то ещё надо.
Запрос не меняет поля, только фильтр. |
#6
|
|||
|
|||
гриду сказать , чтоб он не слушал?
А как-то можно гриду сказать , чтоб он не слушал?
|
#7
|
|||
|
|||
Ну вот это же - FDQuery1.DisableControls;
Тут скорее не то, что бы грид "не слушал", а что бы сам источник данных не сообщал об изменениях. |