Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

не сохраняются данные при закрытии в таблице   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.109 c
11-1128773253
homm
2005-10-08 16:07
2006.06.18
WM_DISPLAYCHANGE


2-1149015612
Volkodav
2006-05-30 23:00
2006.06.18
Передача файлов через интернет


3-1145660888
Asail
2006-04-22 03:08
2006.06.18
Групировка в SQL-запросе с суммированием времени...


2-1148942125
alec_sey
2006-05-30 02:35
2006.06.18
Массивы


15-1148722099
Petr V. Abramov
2006-05-27 13:28
2006.06.18
ipnat.sys