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

Вниз

автоинкрементное поле в TClientDataSet   Найти похожие ветки 

 
Дмитрий Белькевич   (2012-05-16 16:01) [0]

Добрый всем день. Понадобилось создать автоинкрементное поле в компоненте TClientDataSet. Компонент работает с файлами cds, на форме два таких компонента, связаны по ключевым полям, через соответсвующие TDataSource"ы подсоединены к двум DBGrid"ам. Всё замечательно работает, редактирутся, сохраняется. Одно неудобство - приходится ключи вводить руками, что, понятно, неудобно. Кто работал с этими компонентами, скажите, как такое можно реализовать. D2010, если это имеет значение.


 
Loginov Dmitry ©   (2012-05-16 16:31) [1]

По AfterOpen запоминать в какой-нибудь переменной максимальное значение ключевого поля, по BeforePost увеличивать переменную на 1 и полученное значение присваивать ключевому полю.


 
Дмитрий Белькевич   (2012-05-16 17:53) [2]

Спасибо, похоже, что все получилось. Единственное - ключевое поле обновляю не в BeforePost, а в AfterInsert.


 
Дмитрий Белькевич   (2012-05-16 17:54) [3]

Ну и инкремент там же - в AfterInsert. Инкрементирую ключ таблицы-мастера.


 
AV ©   (2012-05-17 08:59) [4]

я б потомка написал
public св-во KeyField: string //какое поле автоинкремент
public св-во Step: integer;  // шаг инкремента
private FKeyVal: integer; // инициализируется при загрузке  >>максимальное значение ключевого поля,
public св-во NextVal: integer; // KeyField := KeyField +  Step; result := KeyField;
public св-во CurrVal: integer; //result := KeyField;

в BeforeInsert в мастере делать FieldByName[KeyField].AsInteger := NextVal;
в BeforeInsert в детайл делать FieldByName[KeyField].AsInteger := CurrVal;

если бы желание осталось, NextVal и CurrVal, сделал бы потокобезопасными


 
AV ©   (2012-05-17 09:57) [5]

блин, конечно, FKeyVal

> public св-во NextVal: integer; // FKeyVal := FKeyVal  +
>  Step; result := FKeyVal ;
> public св-во CurrVal: integer; //result := FKeyVal ;



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

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

Наверх




Память: 0.48 MB
Время: 0.053 c
15-1352775498
Abcdef123
2012-11-13 06:58
2013.03.22
Современные тенденции пользовательского интерфейса


15-1347556136
Dimka Maslov
2012-09-13 21:08
2013.03.22
Обработка исключений


2-1332692006
leklerk
2012-03-25 20:13
2013.03.22
Нужно ли явно уничтожать ADODataSet, ADOCommand и т.д.?


2-1333447731
Цукор5
2012-04-03 14:08
2013.03.22
Объединение мелких файлов в один большой


15-1339744950
RWolf
2012-06-15 11:22
2013.03.22
Древовидный редактор настроек