Comments (8)
Да, там проблема, при select стэйтментов он все равно делает commit в DoAfterExecute.
Позже этот код не выполняется так как ставится флаг vAfterExecEvent.
Буду переделывать как у датасетов: Если select то не сделать Commit.
Наверное это лучший компроммис когда AutoCommit.
from fibplus.
я правильно понимаю, что тут может помочь пока только использование FetchAll ?
from fibplus.
FetchAll нет в FIBQuery.
для себя закомментировал
if FGoToFirstRecordOnExecute
then begin
// DoAfterExecute(Assigned(FMDTMainDataOrder), vAfterExecEvent);
// vAfterExecEvent := False;
Next;
end;
from fibplus.
точно. посмотрел. это в Dataset
реализовано как Bookmark + Last
from fibplus.
Данный фикс "сломал" функционал получения количества записей, который был раньше работал корректно и вполне логично:
В событии OnAfterExecute проверяется количество записей через свойство RecordCount.
Соответственно перенос кода
if FGoToFirstRecordOnExecute and FOpen then
Next;
после вызова события DoAfterExecute не логично и "ломает" работу компонента.
- При проверке количества записей в событии DoAfterExecute соответственно получаем 0.
- Выбор следующей записи вполне логично для SQLSelect, а не для всех типов SQL.
- DoAfterExecute как следует из названия должен выполнялся самой последней инструкцией, после всех действий.
Лучше явно управлять транзакциями, чем пытаясь вылечить "автоматический" режим "сломать" основной функционал.
from fibplus.
Привет, AnryJester,
Да, щас проблема в том что DoAfterExecute вызывается до Next и собственно получается RecordCount = 0.
Хотя незнаю если правильнее так как было. Будем править, чтобы не ломать совместимость.
from fibplus.
Anry, смотрел код.
В 7.6 DoAfterExecute и выполняется до Next, независимо от этого фикса. этого было до.
В 7.5 было иначе да, сначала Next а потом DoAfterExecute.
Я нахожу логику в 7.6 более правильной.
В DoAfterExecute RecordCound максимум может быть 1, после одного фетча что позволяет проверять только если есть записи и ничего другое.
Посмотрим что скажет сообщество. Можно фиксить только ради совместимости.
- Выбор следующей записи вполне логично для SQLSelect, а не для всех типов SQL.
Еще для сингулярных запросов тоже, типа execute procedure. Хотя в FB3 уже это не работает. Уже курсор с одной записи не открывается.
- DoAfterExecute как следует из названия должен выполнялся самой последней инструкцией, после всех действий.
Next уже как бы не связан с Execute. есть isc_execute а есть isc_fetch.
from fibplus.
Я бы вообще описал RecordCount как deprecated
По идее, нужно бы пользоваться явным RecordCountFromSrv
from fibplus.
Related Issues (20)
- How to activate compression? HOT 1
- Out of memory, StrUtil HOT 4
- Component tpFibClientDataset
- Support for new Firebird 4 data types
- validation HOT 5
- TpFIBDataSet.RefreshFromQuery подставляет лишние записи в датасет
- Access violation in TFIBCustomDataSet.DataEvent on 64bit application with Delphi 11.1 HOT 2
- About version
- Installation
- Incomplete
- FIB Editor not displaying correctly HOT 2
- В дизайтайм-пакете FIBPlusEditors2007.dpk (и т.п.) ссылка на отсутствующий UnitSyntaxMemo.
- TpFIBClientBCDField.GetAsVariant in case IsNull is true
- Can't install FIBPlusEditors2007.dproj
- Can't find by name lookup field with type TFIBWideStringField HOT 1
- cacheSchema slows down user experience when firebird is over internet
- Problem with fibplus installation
- OnValidate event failed.
- Bookmark HOT 3
- SQL Editor Cursor HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fibplus.