Создание новой таблицы на основе структуры другой таблицыDelphi , Базы данных , ТаблицыСоздание новой таблицы на основе структуры другой таблицыНа ум сразу приходит операция присваивания значения свойству (стоящему с левой стороны от ':='), при которой Delphi в своих недрах вызывает метод 'write' и передает ему в виде единственного параметра все то, что находится в правой части выражения. Если свойство не имеет метода write, оно предназначено только для чтения. Вот определение свойства FieldDefs объекта TDataSet в файле DB.PAS:
Как вы можете видеть, у него есть метод write. Следовательно, код:
в действительности делает такую операцию:
(за исключением того, что вы не можете использовать эту строку, поскольку SetFieldDefs определен в секции Private.) Вот определение свойства IndexDefs объекта TTable в файле DBTABLES.PAS file:
В этом случае метод write отсутствует, поэтому свойство имеет атрибут только для чтения. Тем не менее, для самого объекта TIndexDefs существует метод Assign. Следовательно, следующий код должен работать:
Перед вызовом Assign для Source.IndexDefs вызывайте метод Update, чтобы быть уверенным в том, что вы получите то, что хотите. Метод SetFieldDefs является процедурой с одной строкой кода, в которой вызывается метод FieldDefs Assign. Также можно проверить, определен ли реально индекс, и, если нет, то при вызове IndexDefs.Assign вы можете получить исключение типа "List Index Out Of Bounds" (или что-то типа этого). Например, так:
Вам нужно будет это сделать, поскольку метод TIndexDefs.Assign не проверяет это перед копированием индекс-информации. Также вам нет необходимости вызывать Clear до работы с IndexDefs, поскольку метод Assign сделает это и без вашего участия. Создание новой таблицы на основе структуры другой таблицы в Delphi позволяет использовать операцию присваивания значения свойству FieldDefs объекта TDataSet или IndexDefs объекта TTable для копирования структуры одной таблицы в другую. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |