Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизCachedUpdate на модифицированную запись Найти похожие ветки
← →
Selax (2002-08-15 07:26) [0]На автомате заносятся только вставленные или удаленные записи
Как занести в кэш измененную запись?(не сильно извращаясь)
Потому как если я только изменяю записи,в кэш они не заносятся
и при переходе по записям изменения теряются,а постоянно делать applyUpdates и commit не охота,да думаю и не красиво :(
Использую стандартные DataBase,Query,DBGrid и DBNavigator
← →
Johnmen (2002-08-15 09:27) [1]>...при переходе по записям изменения теряются...
Вот этого не должно быть...Что-то не так делаешь...
← →
Black Cat (2002-08-15 10:03) [2]Именно так и должно быть (для detail), если CachedUpdates=TRUE. См. хелп для UpdatesPending.
← →
Selax (2002-08-15 12:19) [3]Тогда как быть?
Не хотелось бы сохранять каждую запись при переходе.
Уважаемые мастера подскажите какую-нибудь идею,плз
Не писать же самому полностью кэш,для такой мелочи,
должны же быть какие-нибудь стандартные средства для этого
← →
Johnmen (2002-08-15 12:25) [4]Именно для того и существует стандартное кеширование изменений, чтобы вносить их в неск.записей и потом целиком принимать или нет. В процессе перехода по записям изменения не должны теряться ! Если это не так - то ошибка где-то в написанном тобой коде...
← →
Selax (2002-08-15 13:29) [5]Есть главная и подчиненная таблицы. У подчиненной в Query2.datasourse=DataSourse1 от Квери главной таблицы
Query2.SQL=select * from table where id=:id
Когда я перехожу по записям в главной таблице в подчиненной отображаются связанные записи.
При изменении (не добавления или удаления!) записи при переходе в главной таблице ,эти изменения теряются
Предполагаю,что при переходе Query2 просто переоткрывается,поэтому записи теряются
Есть идеи как это реализовать,чтобы не сохранять каждую запись при переходе,а все изменения по нажатию кнопки?
(хелп по UpdatesPending просмотрел не раз, но умные мысли не пришли :( )
← →
Johnmen (2002-08-15 13:37) [6]>Предполагаю,что при переходе Query2 просто
>переоткрывается,поэтому записи теряются
Именно поэтому !!! Перед переходом делай ApplyUpdate.
Перед редактированием всего стартуй транзацию, после всех изменений (напр.по нажатию кнопы) подтверждай тр-ию или откатывай.
← →
Selax (2002-08-16 08:41) [7]
> Именно поэтому !!! Перед переходом делай ApplyUpdate.
Пробовал делать,но без commit"a записи все равно теряются.
> Перед редактированием всего стартуй транзацию, после всех
> изменений (напр.по нажатию кнопы) подтверждай тр-ию или
> откатывай.
Попробую...
← →
Black Cat (2002-08-16 09:26) [8]Делай как в хелпе:
with CustomerQuery do
begin
Database1.StartTransaction;
try
ApplyUpdates; {try to write the updates to the database};
Database1.Commit; {on success, commit the changes};
except
Database1.Rollback; {on failure, undo the changes};
raise; {raise the exception to prevent a call to CommitUpdates!}
end;
CommitUpdates; {on success, clear the cache}
end;
Но нафига вообще связываться с кэшем?
← →
Johnmen (2002-08-16 09:47) [9]>Black Cat © (16.08.02 09:26)
Это не тот случай...Не годится...
← →
Black Cat (2002-08-16 10:16) [10]Почему не тот? Выполнять этот код КАЖДЫЙ РАЗ перед переходом и все.
← →
Johnmen (2002-08-16 10:21) [11]>Black Cat © (16.08.02 10:16)
>Почему не тот? Выполнять этот код КАЖДЫЙ РАЗ перед переходом и
>все.
Тогда да...:)
← →
Selax (2002-08-16 14:24) [12]До этого я и сам додумался :(
Но вся трабла в том,чтобы при переходе commit"a не было,а был он при нажатии на кнопку.
Только тогда все измененные записи заносились в базу.
А то получается,что записи заносятся в базу без желания пользователя(то бишь постоянно при переходе по записям)
А если ламер просто балуется или изучает прогу - все его изменения нарушат базу,т.е. вместо нормальных данных идет лажа.
Есть идеи реализации этой траблы?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c