Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

база данных на dataSet проблема с сохранением данных


Вова ©   (2012-10-12 04:50:00) 

Вообщем сделал я базу данных на DataSourse и DataSet (локальную, не серверную) и в процессе работы вызываю процедуры, типа таких:


   ClientDataSet3.Edit;
   ClientDataSet3.FieldByName('SearchX1').Value := coord.x1search;
   ClientDataSet3.FieldByName('SearchY1').Value := coord.y1search;
   ClientDataSet3.Post;


чтобы записывать данные в поля. Дата сеты привязаны к *.cds файлам на диске, т.е. в конечном итоге все сохраняется в них. Только вот в чем беда - при нештатном завершении процесса (ну например, если я убил через диспетчер задач свою программу) изменения произошедшие в текущем сеансе в файлы не попадают и соответственно не  сохраняются (

добавлением такой строки после Post ClientDataSet3.ApplyUpdates(10); надеялся я принудительно его заставить сохранить все в файл, но получил ошибку Missingdata provider or data packet,
а при обычном завершении программы все сохраняется как надо.
Ну еще у сохраняемого дата сета есть мастер дата сет, но в мастере нет изменений. Да и если вызвать ClientDataSet3Master.ApplyUpdates(10); ошибка будет та же только уже на попытке сохранить мастера, и там то я точно знаю что изменений 0
как быть?


AV   (2012-10-13 15:14:00) [1]

http://www.oracle.com/technetwork/ru/database/express-edition/overview/index.html
http://www.microsoft.com/ru-ru/download/details.aspx?id=20610
+ простой Access


Inovet   (2012-10-12 17:50:00) [2]

> [13] Вова   (12.10.12 17:41)

ФБ ембедед


Вова   (2012-10-12 17:41:00) [3]


> Ты сначала скажи, что должно получиться.


Уже получилось ) Программа сохраняет картинки и описание их, некоторые данные о своей работе (несколько таблиц с разными данными). И пользуется этим по ходу работы. Программа не учетная и для личного пользования, поэтому покупать SQL или Oracle было бы как то некруто ) Кроме того важно чтобы разворачивание системы было как можно проще(скопировал, запустил и понеслась). На данный момент база не большая, хотя уже вся эта радость занимает под 30 мб в оперативке, а раздувать нежелательно, т.к. там много чего еще запущено и память не резиновая. Вообщем о многих тысячах и миллионах записей в базе речь не идет. Скорей от сотен до тысячи (сотни 2 уже есть). На самом деле табличка в памяти пока в принципе устраивает, но есть опасения что это может изменится с ростом базы. Так что СУБД если и нужна то простенькая.


Плохиш   (2012-10-12 16:02:00) [4]


> А какие конкретно вы бы могли посоветовать?

Ораклу, конечно же, тут без вариантов.


Inovet   (2012-10-12 15:53:00) [5]

> [10] Вова   (12.10.12 15:50)

Ты сначала скажи, что должно получиться.


Вова   (2012-10-12 15:50:00) [6]


> Возьми готовую СУБД (их вагон и тележка разных) и займись
> уже делом, вместо того, чтобы создавать себе трудности и
> потом пытаться их преодолеть.


А какие конкретно вы бы могли посоветовать?


Понг   (2012-10-12 09:58:00) [7]


> Т.е. если база большая то это трындец....


Полный.

ClientDataSet - это не база данных. Это табличка в памяти.


Ega23   (2012-10-12 08:45:00) [8]


> Т.е. если база большая то это трындец....

Возьми готовую СУБД (их вагон и тележка разных) и займись уже делом, вместо того, чтобы создавать себе трудности и потом пытаться их преодолеть.


AV   (2012-10-12 08:44:00) [9]

procedure TCustomClientDataSet.LoadFromFile(const FileName: string = '');
var
 Stream: TStream;

   Stream := TFileStream.Create(Self.FileName, fmOpenRead) else

     LoadFromStream(Stream);


Вова   (2012-10-12 07:53:00) [10]

Я правильно понял, что в локальном варианте с датасетом, в ОЗУ хранится копия всей базы? и т.е. когда я делаю изменения и сохраняю, то не одна запись добавляется, а вся база сохраняется заного? Т.е. если база большая то это трындец....


Вова   (2012-10-12 07:46:00) [11]

хм, да. похоже так работает.

ClientDataSet1.SaveToFile('E:\ххххх.cds');

ClientDataSet3.ApplyUpdates(10) - только для серверного варианта.


Вова   (2012-10-12 07:14:00) [12]


> To read from or write to a different file, use the LoadFromFile
> and SaveToFile methods instead. These methods can also be
> used to load and save data at times other than when the
> Active property changes.
>
> ms-help://embarcadero.rs_xe3/libraries/Datasnap.DBClient.
> TClientDataSet.FileName.html


что то я сомневаюсь....мне же не затереть все новыми данными нужно, а изменения положить.


Вова   (2012-10-12 07:13:00) [13]


>
> > ClientDataSet3.ApplyUpdates(10)
>
> почему 10? лучше уж -1
>
> > Missingdata provider or data packet
>
>
> а сколько модулей и форм в программе?


10 от балды.

модулей и форм много, но процедуры сохранения, добавления и редактирования записей для конкретного датасета и его родителя находятся в модуле одной формы и все они на этой форме(датасеты) положены. хотя процедуры добавления и редактирования вызываются из других модулей.....а что это меняет?


Понг   (2012-10-12 06:21:00) [14]

To read from or write to a different file, use the LoadFromFile and SaveToFile methods instead. These methods can also be used to load and save data at times other than when the Active property changes.

ms-help://embarcadero.rs_xe3/libraries/Datasnap.DBClient.TClientDataSet.FileName.html


kilkennycat   (2012-10-12 05:57:00) [15]


> ClientDataSet3.ApplyUpdates(10)

почему 10? лучше уж -1

> Missingdata provider or data packet


а сколько модулей и форм в программе?


Наверх

Титульная страница Поиск, карта сайта Написать письмо