Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Внизавтоинкрементное поле в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.128 c