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

Вниз

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

 
Вова   (2012-10-12 04:50) [0]

Вообщем сделал я базу данных на 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
как быть?


 
kilkennycat ©   (2012-10-12 05:57) [1]


> ClientDataSet3.ApplyUpdates(10)

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

> Missingdata provider or data packet


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


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

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) [3]


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


10 от балды.

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


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


> 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:46) [5]

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

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

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


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

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


 
AV ©   (2012-10-12 08:44) [7]

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

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

     LoadFromStream(Stream);


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


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

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


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


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


Полный.

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


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


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


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


 
Inovet ©   (2012-10-12 15:53) [11]

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

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


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


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

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


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


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


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


 
Inovet ©   (2012-10-12 17:50) [14]

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

ФБ ембедед


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

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



Страницы: 1 вся ветка

Текущий архив: 2013.04.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
2-1350042679
DdiK
2012-10-12 15:51
2013.04.21
исправить ошибку regular procedure and method pointer


4-1264592623
Владислав
2010-01-27 14:43
2013.04.21
Входит ли пользователь в группу AD.


15-1356268593
lead-in
2012-12-23 17:16
2013.04.21
Поток ввода в .bat-файле Windows


15-1356292928
Павел Калугин
2012-12-24 00:02
2013.04.21
Опять анкеты?


8-1231501163
Б
2009-01-09 14:39
2013.04.21
Обрезка растра