![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема автоинкримента и ClientDataSet'а! [D7, Paradox]
YURA-007 © (2007-05-23 19:52:00)Всем добрый вечер! При добавлении новой записи в ClientDataSet, точнее при сохранении записи, автоинкрементное поле не генерируется, а остаётся пустым, в результате после добавления второй записи(точнее сохранении), выскакивает Key Violation. Почему поле не генерируется, в Table всё работает отлично. БД Paradox Зарание спасибо!
Shaman_ (2007-05-25 22:41:00) [1]может и есть у CDS возможность автоматом загружать значение автоинкрементного поля после applyupdates, но я так и не нашел у этого класса такой возможности. Приходится каждый раз вручную запрашивать сгенерированные базой значения и добавлять в CDS
YURA-007 (2007-05-24 18:44:00) [2]Что-то толи нетмастеров, толи не хотятмастера помочь мне!
YURA-007 (2007-05-24 11:46:00) [3]Соединение самое простое
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, или я что-то не правильно соеденил, ваще не пойму.
Johnmen (2007-05-24 10:30:00) [4]Приводи полное описание связок (в первую очередь CDS) и алгоритма работы.
YURA-007 (2007-05-24 10:23:00) [5]
> AutoGenerateValue и далее по теме.
> Если это вы о свойстве автоинкрементного поля, то его значение
> и у Table и у ClientDataSet = arNone(по умолчанию), но я
> менял его на arAutoInc, и у Table и у ClientDataSet, но
> результат тот же самый – у Table при сохранении записи поле
> генерируется, у ClientDataSet нет!
> И какими бы я способами не пытался сохранять, добавлять
> не разу это поле не сгенерировалось!
Johnmen (2007-05-24 09:10:00) [6]AutoGenerateValue и далее по теме.