|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Наблюдаю непонятное поведение в FireDAC, набор Unidirectional. Идет запрос. Идет в цикле вычитка текущей, активной записи из набора, Next, и так до Eof. Всё отлично читается до Eof = true. Но! Когда случается Eof, то набор становится пустым, IsEmpty = True. Соответственно из него вычитать уже ничего нельзя, все поля обнуливаются. Посмотрел что в IsEmpty, FActiveRecord = 0; FRecordCount = -1. Ранее использовал два набора: IBX и UniDAC, оба не опустошали набор в случае достижения конца фетча в Unidirectional режиме. Видимое поведение крайне неудобно. Последняя вычитанная из базы запись бывает нужна после Eof=True. Вопрос: можно ли это как-то настроить опциями FireDAC набора? Очень не хочется Unidirectional отключать только ради этого или какие-то костыли использовать для хранения данных последней записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 07:11 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Да. Delphi 10.4.2, Win32. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 07:26 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Как бы по классике Eof - это не последняя запись, а за последней записью. Так что для Unidirectional поведение логичное ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 19:04 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_ Как бы по классике Eof - это не последняя запись, а за последней записью. Так что для Unidirectional поведение логичное ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 20:49 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
YuRock, Вот, увы, нет. И это крайне неудобно. База, к слову, FireBird 2.5. Может у кого будут идеи что можно покрутить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 21:28 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Логику приложения. После завершения нормального цикла Код: sql 1. 2. 3. 4.
переменная а сохраняет своё значение. По счастливой случайности это значение - из последней записи. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 23:07 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
YuRock Ну последняя отфетченная запись тем не менее должна оставаться доступной 1. Очистить текущий буфер 2. Отфетчить новую запись / получить указатель на новую запись 3. Если записей больше нет, то установить Eof ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 00:10 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_ YuRock Ну последняя отфетченная запись тем не менее должна оставаться доступной 1. Очистить текущий буфер 2. Отфетчить новую запись / получить указатель на новую запись 3. Если записей больше нет, то установить Eof ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 02:48 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
AutoClose = False не поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 11:18 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Michael Longneck, не помогло, смотрю пока дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 15:16 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
А если заменить TFDQuery на TFDCommand? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:04 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_, TFDCommand - это не набор, это просто команды без возращенных данных ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:34 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
нашел что не так. видимо это бай дизайн. думаю пока как переписать: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:37 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_ YuRock Ну последняя отфетченная запись тем не менее должна оставаться доступной 1. Очистить текущий буфер 2. Отфетчить новую запись / получить указатель на новую запись 3. Если записей больше нет, то установить Eof Вот именно такая схема. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:39 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Логику приложения. После завершения нормального цикла Код: sql 1. 2. 3. 4.
переменная а сохраняет своё значение. По счастливой случайности это значение - из последней записи. а теперь представь, если нужных полей штук 10 и переменных изначально в коде не было, так как проблем не было ни разу на двух наборах. придётся перелопачивать всё везде. и мест таких много. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:41 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
makhaonа теперь представь, если нужных полей штук 10 10 операторов присваивания. Ничего, от чего бы на пальцах появились мозоли. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:45 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
makhaon, Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 19:32 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
makhaon TFDCommand - это не набор, это просто команды без возращенных данных ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 21:39 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_, придется немало переписывать, структура работы совсем другая. пока что думаю над правкой компоненты. предварительно: буду сохранять запись и пробовать фетчить еще одну. если отфетчилось, то первую, старую, запись под нож. если нет - то она останется. лучше идей как-то нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:23 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
makhaon, Я не пойму, если тебе нужна только последняя запись, почему бы ее не вытаскивать запросом конкретно ее? P.S. Сам я Unidirectional не использую никогда. Если он нужен, то использую не датасеты: TIBSQL/TFDCommand... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:50 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
makhaon, Посмотри еще в сторону TFDCommand + TFDQuery.AttachTable() ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 10:55 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_, мне нужна не только последняя запись. сценарий такой, для примера: 1. выбираем 50 записей 2. пробегаемся в цикле Next, обрабатываем нужные записи до Eof 3. выходим из цикла, снаружи цикла обрабатываем последнюю запись дополнительно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:04 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
_Vasilisk_, я то TIBSQL сам использовал, пока проекты были на IBX'ах. там всё работало как нужно. потом переписал на UniDAC, там тоже всё ок. и вот решил таки DAC, но встроенный заюзать и повылазило несовместимостей слегка :) так то всяко разрулил, кроме этой. эта, похоже, бай дизайн. за рекомендации спасибо. буду тут думать как лучше разрулить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:07 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
makhaon2. пробегаемся в цикле Next, обрабатываем нужные записи до Eof 3. выходим из цикла, снаружи цикла обрабатываем последнюю запись дополнительно То есть последнюю запись ты обрабатываешь два раза. Ню-ню... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:17 |
|
FireDAC, Unidirectional, оставить последнюю запись активной в наборе
|
|||
---|---|---|---|
#18+
Можно сохранять как массив вариантов, тогда код будет общим для любых полей (разве что кроме блобов). Либо поискать какой-нибудь DataSet.CloneCurrentRecord(DestDataSet) в потрохах ОгнеУтки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:37 |
|
|
start [/forum/topic.php?fid=58&msg=40113449&tid=2036853]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 403ms |
0 / 0 |