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

Вниз

Проблема автоинкримента и ClientDataSet а!   Найти похожие ветки 

 
YURA-007   (2007-05-23 19:52) [0]

Всем добрый вечер! При добавлении новой записи в ClientDataSet, точнее при сохранении записи, автоинкрементное поле не генерируется, а остаётся пустым, в результате после добавления второй записи(точнее сохранении), выскакивает Key Violation. Почему поле не генерируется, в Table всё работает отлично. БД Paradox Зарание спасибо!


 
Johnmen ©   (2007-05-24 09:10) [1]

AutoGenerateValue и далее по теме.


 
YURA-007   (2007-05-24 10:23) [2]


> AutoGenerateValue и далее по теме.


> Если это вы о свойстве автоинкрементного поля, то его значение
> и у Table и у ClientDataSet = arNone(по умолчанию), но я
> менял его на arAutoInc, и у Table и у ClientDataSet, но
> результат тот же самый – у Table при сохранении записи поле
> генерируется, у ClientDataSet нет!
> И какими бы я способами не пытался сохранять, добавлять
> не разу это поле не сгенерировалось!


 
Johnmen ©   (2007-05-24 10:30) [3]

Приводи полное описание связок (в первую очередь CDS) и алгоритма работы.


 
YURA-007   (2007-05-24 11:46) [4]

Соединение самое простое
ClientDataSet1 - ProviderName->DataSetProvider1
DataSetProvider1 - DataSet->Table1
DataSource1 – DataSet-> ClientDataSet1
DBGrid1 и DBNavigator1 – DataSource-> DataSource1

В редактор полей ClientDataSet добавлены все поля из Table, в том числе и автоинкремент.
Ну а сам Table1, со своим личным DataSource2, DBGrid2 и DBNavigator2  настроены и работают как положено.

------
var
 Form1: TForm1;
 MySavePoint: integer;
 Modified: boolean;
-------

Procedure FormCreate
begin
Table1.Open;
ClientDataSet1.FileName:="Save.XML";
ClientDataSet1.Open;
ClientDataSet1.SaveToFile("", dfXML);
Mysavepoint:=ClientDataSet1.SavePoint;
end;

Добавление, сохранение происходит через навигатор.
И есть две кнопки
1. В базу
begin
ClientDataSet1.ApplyUpdates(-1);
Table1.Refresh;
MySavePoint:=ClientDataSet1.SavePoint;
Modified:=false;
end;

2. В файл
begin
MySavePoint:=ClientDataSet1.SavePoint;
Modified:=true;
end;

Причём если нажать В базу, при сохранении, то добавляемая строка в Table записывается как положено, а в ClientDataSet, как всегда без генерации.
С кодом проблем я думаю быть не может, его практически нет. Может флаг какой у ClientDataSet1 или DataSetProvider1, или я что-то не правильно соеденил, ваще не пойму.


 
YURA-007   (2007-05-24 18:44) [5]

Что-то толи нет мастеров, толи не хотят мастера помочь мне!


 
Shaman_ ©   (2007-05-25 22:41) [6]

может и есть у CDS возможность автоматом загружать значение автоинкрементного поля после applyupdates, но я так и не нашел у этого класса такой возможности.  Приходится каждый раз вручную запрашивать сгенерированные базой значения и добавлять в CDS



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
4-1175360086
Vovka
2007-03-31 20:54
2007.09.30
Пропадающий курсор


1-1184932927
Ice-T
2007-07-20 16:02
2007.09.30
Приложение и его главное окно - странный эффект


1-1184236602
DevilDevil
2007-07-12 14:36
2007.09.30
ToolBar,Menu,ToolButton, Font


2-1188827777
AlexSt
2007-09-03 17:56
2007.09.30
Как считать данные из файла открытого другим приложением


15-1188983980
tytus
2007-09-05 13:19
2007.09.30
Нужен сниффер и все что с ним связано.