Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Внизне сохраняются данные при закрытии в таблице Найти похожие ветки
← →
eclipse © (2006-05-26 12:25) [0]приветствую =) у меня небольшая проблемка с сохранением данных в бд... при внесении изменений в таблицу с помощью Dataset.Edit и Dataset.Post всё изменяется но при закрытии всё остаётся по старому... на форме есть Datasourse1 и Query_table =) связку из Query Table и Datasourse не получилось сделать... поэтому пришлось юзать только query и прописать у него в Query_tableUpdateRecord // Allow to change records...
знаю что если был бы тэйбл то прописав Table.Close всё должно бы сохраняться... но вот с Query такое не прокатило =)
← →
Sergey13 © (2006-05-26 12:33) [1]Как всегда - тайные база, компоненты и код.
← →
Desdechado © (2006-05-26 12:33) [2]ничего не понял, что за QueryTable
классы какие используешь?
компоненты доступа?
СУБД?
← →
Сергей М. © (2006-05-26 12:33) [3]Транзакцию нужно подтвердить.
см. TDatabase.Commit/Rollback
← →
eclipse © (2006-05-26 12:46) [4]>Сергей М
TDatabase не юзается...
>Sergey13
сейчас попробую всё объяснить =) таблица парадокс... main.db больше файлов никаких нету =) также на форме один Datasource1 и один Query... ну и + DBGridEh... хотел заюзать Datasource Table и Query но не получилось так как в такой связке просто игнорировался Query и запросы не выполнялись... хотя пробовал сделать это двумя методами точно также как описано в одной статье... поэтому отказался от Table и для Query в OnUpdateRecord прописал
// Allow to change records чтобы были изменения... думал что это прописав можно про всё забыть и при закрытии проги всё будет сохраняться =) но вот ошибся похоже...
← →
Сергей М. © (2006-05-26 12:48) [5]
> TDatabase не юзается
Юзается, но неявно.
см. TQuery.Database
← →
eclipse © (2006-05-26 12:50) [6]> Сергей М.
спасибо =) сейчас попробую =)
← →
eclipse © (2006-05-26 13:55) [7]а не получается... пишет no user transaction is currently in progress
← →
Сергей М. © (2006-05-26 14:07) [8]if not MyQuery.Database.InTransaction then
MyQuery.Database.StartTransaction;
try
...
MyQuery.Edit;
MyQuery.Post;
...
MyQuery.Database.Commit;
except
...
MyQuery.Database.Rollback;
...
end;
← →
eclipse © (2006-05-26 14:49) [9]а сейчас пишет The transaction isolation level must be dirty read for local databases... жаль что такие ошибки для меня в новинку...
← →
MsGuns © (2006-05-26 14:54) [10]>Сергей М. © (26.05.06 14:07) [8]
>if not MyQuery.Database.InTransaction then
MyQuery.Database.StartTransaction;
Это для парадокса-то ?
← →
eclipse © (2006-05-26 15:02) [11]кста... во время того как читал ответы на прошлые вопросы ни раз говорилось что транзакции у парадокса не оч идут... значит должны быть какие нить другие пути...
← →
Sergey13 © (2006-05-26 15:06) [12]2 eclipse ©
CachedUpdates чему равен?
← →
eclipse © (2006-05-26 15:10) [13]> Sergey13
Sergey13 := true
← →
Sergey13 © (2006-05-26 15:14) [14]2 [13] eclipse © (26.05.06 15:10)
Тогда ткни в это свойство и нажми F1. Не забудь в "see also" заглянуть на предмет ApplyUpdates.
← →
Сергей М. © (2006-05-26 15:17) [15]
> MsGuns © (26.05.06 14:54) [10]
Сегодня-то Парадокс, а завтра Автора "осенит идея" поработать через BDE с другими СУБД.
Ы ?
← →
MsGuns © (2006-05-26 15:35) [16]>Сергей М. © (26.05.06 15:17) [15]
>Сегодня-то Парадокс, а завтра Автора "осенит идея" поработать через BDE с другими СУБД.
Ы ?
Когда выпадет снег, тогда только я надену лыжи.
Ю ?
← →
eclipse © (2006-05-26 15:45) [17]> Sergey13
спасибо огромное =) постараюсь разобраться...
← →
Сергей М. © (2006-05-26 15:48) [18]
> MsGuns © (26.05.06 15:35) [16]
У Автора-то лыжи "прямо щас" не едут) ... то ли на асфальте он, то ли ..))
← →
eclipse © (2006-05-27 07:56) [19]а еслю юзать UpdateSQL... почему не срабватывают запросы которые прописаны в Modify???
← →
eclipse © (2006-05-27 08:14) [20]и про ApplyUpdates вроде бы всё понятно что надо подтвердить изменения чтобы сбросить из кэша в таблицу... но непонятно как именнр прописать... к чему привязать...
← →
ЮЮ © (2006-05-27 08:16) [21]
> а еслю юзать UpdateSQL... почему не срабватывают запросы
> которые прописаны в Modify???
А какой запрос там генерируется?
Если
... WHERE Field1=:OLD_FIELD1 AND FieldN=:OLD_FIELDN
то следует создать(назначить) ключевое поле, чтобы запрос имел вид
... WHERE KeyField = :OLD_KEYFIELD
← →
eclipse © (2006-05-27 08:26) [22]> ЮЮ ©
генерируется следующий запрос...
update "main.DB"
set
Name = :Name,
OEM = :OEM,
Count = :Count,
Price = :Price,
Price (rub) = :Price (rub),
Primecost = :Primecost,
Date = :Date,
Credit = :Credit,
Maker = :Maker,
Category = :Category,
Subcat = :Subcat
where
Index = :OLD_Index
и вроде бы он верный... или всё-таки Index по-другому прописать надо???
← →
eclipse © (2006-05-27 08:29) [23]в самом гриде изменения происходят... правда они и происходили так как прописан Datasource1.Dataset.Post... но если убрать этот пост и просто юзать UpdateSQL также изменения идут только в гриде... хотя по запросу всё должно меняться так как set стоит...
← →
ЮЮ © (2006-05-27 09:56) [24]
> хотя по запросу всё должно меняться так как set стоит...
Для этого запрос должен выполниться. Ты точно указал этот UpdateSQL в качестве Query.UpdateObject? А удаление выполняется
Что-то мне не нравится название поля "Price (rub)", ибо запрос получается синтаксически неверным.
← →
eclipse © (2006-05-27 10:00) [25]> ЮЮ
Query.UpdateObject точно стоит... а вот про поле Price (rub) сейчас проверю...
← →
ЮЮ © (2006-05-27 10:17) [26]Да, кстати. а ApplyUpdates вызываешь?
← →
eclipse © (2006-05-27 10:19) [27]вот именно его... ApplyUpdates... мне и надо вызвать... но если прописать просто Query_tables.ApplyUpdates то происходит ошибка...
← →
ЮЮ © (2006-05-27 10:30) [28]
> но если прописать просто Query_tables.ApplyUpdates то происходит
> ошибка...
Можно и не просто:
if Query_tables.UpdatesPending then
Query_tables.ApplyUpdates;
Самое интересное и не рассказал: ... Что за ошибка?
← →
eclipse © (2006-05-27 10:33) [29]> Самое интересное и не рассказал: ... Что за ошибка?
Table is read only
то есть сначала нада вызвать Query_table.Ediе???
← →
ЮЮ © (2006-05-27 10:46) [30]>то есть сначала нада вызвать Query_table.Ediе???
Нет, это уже казается физичесого файла таблицы. Где лежит файл? Не стоил ли галочка "только чтение" у него и индексных файлов. И нет ли гденибудь в проекте открытой TTable? Из DataDase Desctop-a открывается при открытом проекте?
← →
eclipse © (2006-05-27 10:57) [31]из DataBase Desctop-a открывается при открытом проекте... и поставив в условие if Query_tables.UpdatesPending then
Query_tables.ApplyUpdates;
Showmessage если условие выполняется мессага не вывелась... то есть он query получается не видит изменений... изменения вводят в DBEditEh... свойство датасорс связано с Form_table.DataSource1 ну и у него в свою очередь стоит датасет Query_tables...
← →
eclipse © (2006-05-29 04:16) [32]=) а самое главное что сам CachedUpdates нужен мне не был... так как в данной проге большого плюса не превносил и был бы просто приятной мелочью =) а нужно было лишь только то чтобы Query был редактируемым... поставил CahedUpdates в true только потому что во всех статьях etc говорилось что без него Query редактируемым не будет... а оказалось чтобы он был редактируемым нада в OnUpdateRecord хотя бы банальный коммент поставить и всё будет классн =)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.012 c