Главная страница
    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.085 c
15-1342885937
alexdn
2012-07-21 19:52
2013.03.22
Курсор для сайта


15-1330882741
alexdn
2012-03-04 21:39
2013.03.22
Выборы 2012


15-1342038603
Юрий
2012-07-12 00:30
2013.03.22
С днем рождения ! 12 июля 2012 четверг


2-1345262775
0?0
2012-08-18 08:06
2013.03.22
Не ожидать завершения процедуры.


15-1345453966
Es
2012-08-20 13:12
2013.03.22
ADO + большая транзакция





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский