![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TIBQuery + IBUpdateSQL + Refresh = problem? [D7, IB6.x]
Irka © (2005-09-10 18:45:00)Ситуация проста до безобразия, но..
В IBUpdateSQL пока только прописан скрипт на refresh. Когда делаю рефреш (кликая на соотв. DBNavigator), то на месте текущей записи отображаются данные из первой записи.
Думала, что проблема в DBGrid. Но даже при отсоединении последней ситуация та же (за данными наблюдала с помощью DBMemo).
В чем может бить причина и как с этим бороться.
Да, делфи7.
Sergey13 (2005-09-12 09:43:00) [1]2[4] Irka (11.09.05 01:24)
> и что собственно нужно сделать, если я хочу рефрешить все же весь набор данных, а не текущую запись.. Банального переоткрытия набора данных делать не охота, да и хочется...
Это взаимоисключающие хотения. Если не переоткрывать, то что значит решрешить?
}{ander (2005-09-11 12:00:00) [2]> и что собственно нужно сделать, если я хочу рефрешить все же весь набор данных, а не текущую запись..
Close, Open
> Банального переоткрытия набора данных делать не охота, да и хочется
А що робити, синку, що робити... (с)
Единственное, что можно посоветовать - это запоминать bookmark, а затем переходить на нее после переоткрытия DataSet для того, чтобы оставаться на той записи, которая обновлялась.
Irka (2005-09-11 01:24:00) [3]Не, конечно, я понимаю, но я в шоке..
Тут, посоветовали мне посмотреть исхолдники, даже посоветовали примерно где..
Ну, начала от TDataSet.Refresh; потом к
TIBCustomDataSet.InternalRefresh; который вызывает пустышку inherited InternalRefresh; а затем собственно InternalRefreshRow;
Последняя, как я поняла, переносит первую запись, которая возвращается, согласно RefreshSQL, в поточную запись TIBQuery....
Тогда понятно, почему в случае использования select * from MyTable поточная запись забивалась "первой" и почему "select * from MyTable where Id=:Id" дает коректный результат..
Но.. люди добрые, в каком букварике для молоденьких девушек сказано, что так должно быть (я то по наивности предполагала, что должен рефрешится весь набор данных), и что собственно нужно сделать, если я хочу рефрешитьвсе же весь набор данных, а не текущую запись.. Банального переоткрытия набора данных делать не охота, да и хочется, чтобы рефрешился весь набор при щелчке на соответсвующую кнопку DBNavigator...
Irka (2005-09-11 00:08:00) [4]Почему етот запрос возвращает ВСЕ записи?
Irka (2005-09-10 20:45:00) [5]Спасибо, Mike Kouzmine.
После вашего ответа появилась мисль написать:
select * from MyTable
where Id=:Id
вместо
select * from MyTable
в Refresh IBUpdateSQL
помогло
:)
Mike Kouzmine (2005-09-10 19:40:00) [6]Запомни ИД записи и после рефрешь сделай ее текущей.