Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / странности TADODataSet / 5 сообщений из 5, страница 1 из 1
07.09.2003, 19:23
    #32257835
aag
aag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странности TADODataSet
Есть некий документ, к которому привязаны две таблицы. Причем первая ссылается только документ, а вторая - ссылается и на документ и на первую.
Обе таблицы представлены как view WITH VIEW_METADATA и на них заведены INSTEAD of триггеры. На клиенте для вто-рой таблицы используется св-во Filtered. Соответсвенно, при сохранении (нового) документа, сначала сохраняется сам документ, получается его ID, потом во всех записях этих таблиц подставляется это новое ID, потом выполняется UpdateBatch.

И все это, - как это ни удивительно - работает. Но - что уже не удивительно -не всегда. Во-первых, сложилось странное впечатление, что эта WITH_METADATA периодически слетает. Или что-то еще сбоит.
и появляется
View or function ххх is not updatable because the modification affects multiple base tables.
Во-вторых, простенький код...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DataSet.Filtered := False;
DataSet.First;
while not DataSet.Eof do
begin
  DataSet.Edit;
  DataSet.FieldByName('OrderID').AsInteger := OrderID;
  DataSet.Post;
  DataSet.Next;
end

Так вот, RecordCount = 5, но после первого же прохождения цикла наступает Eof. И все сбивается к черту. Решилось как DataSet.Last перед First, но очень непонятно. Напоминает первую Дельфи.
В-третьих, стоит чему-то сбится и потом все начинает вылезать:
Row cannot be located for updating. Some values may have been changed since it was last read.

Кто-нибудь может что-то посоветавать - или я выбрал неудачный способ редактирования данных с клиента, или что неправильно делаю?
...
Рейтинг: 0 / 0
08.09.2003, 15:22
    #32258657
GroZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странности TADODataSet
Насколько я помню RecordCount всегда показывает неотфильтрованное кол-во записей ....
...
Рейтинг: 0 / 0
08.09.2003, 23:59
    #32259217
aag
aag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странности TADODataSet
Ну хоть кто-то откликнулся на вопль отчаявшейся души! :)

RecordCount у меня показывает правильное число. Да и Filtered я предварительно снимаю. Проблема в том, что Next после первой же записи устанавливает Eof, что неверно. Подозреваю, что фильтрация здесь не виновата. Попробую юзать TBetterADODataSet.
...
Рейтинг: 0 / 0
09.09.2003, 10:48
    #32259495
Papka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странности TADODataSet
Я бы вообще все возможные изменения делал в SP. Тогда пофиг какой VIEW. Быстрее будет точно. Ошибок меньше. Исправлять легче. Вот. :)
...
Рейтинг: 0 / 0
09.09.2003, 12:53
    #32259784
aag
aag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странности TADODataSet
Документ содержит в себе таблицы (гриды). Делать сохранение нового документа с одновременным сохранением прив. к нему таблиц через ХП достаточо геморройно - необходимо держать буферные табл., промежуточные идентификаторы и пр. А разницы в скорости между выполнением inser/update через триггер OF INSTEAD и ХП нет ни какой
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / странности TADODataSet / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]