Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.069 c
2-1329483465
vasa
2012-02-17 16:57
2013.03.22
xml


15-1338548076
oxffff
2012-06-01 14:54
2013.03.22
Сушка или ремонт телефона galaxy s plus i9001


15-1329061277
Бумбурум
2012-02-12 19:41
2013.03.22
нужен список ключ-значение.


15-1342444836
картман
2012-07-16 17:20
2013.03.22
точка пересечения двух графиков


15-1337159093
Дмитрий С
2012-05-16 13:04
2013.03.22
Загрузить одним махом несколько динамических массивов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский