Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > ПРограммно изменить длину поля


Автор: lavish 27.12.2004, 15:29
Есть таблица Paradox. Одно из полей было текстовым длинной 19. Теперь надо чтобы его длина была равна 20. Как это сделать программно?

Автор: BSV_Sergey 27.12.2004, 15:48
Можно использовать компонент Query, подконектиться к БД и применить скрипт
Код

alter table
'Имя таблицы'
alter column
'Имя столбца' "Новый тип данных"

к примеру
Код

alter table
REPORTINFO
alter column
[FILENAME] varchar(20)

Работает с MS SQL сервером. Paradox возможно изменен синтаксис но должно быть что-то подобное.

Автор: <Spawn> 27.12.2004, 21:05
Цитата
Работает с MS SQL сервером. Paradox возможно изменен синтаксис но должно быть что-то подобное.
Возможно, что за место alter column будет modify, хотя сам не проверял(Modify работает в Oracle).

Автор: Akella 30.12.2004, 16:08
Отключаем таблицу (Active:=False)

сначала удаляем поле
Код

Table1.FieldDefs.Delete(Table1.FieldDefs.IndexOf('AName'));


потом добавляем
Код

Table1.FieldDefs.Add('AName',ftString,20,False);
tnew.FieldDefs.Update

Автор: Bes 31.12.2004, 07:45
2dsergey: эй-эй-йэ а данные?
тогда уж сначала добавить, скопировать, а потом удалить.
хотя самое правильное на мой взгляд решение через альтер тэйбл.

Автор: Akella 3.1.2005, 12:02
Цитата
2dsergey: эй-эй-йэ а данные?
тогда уж сначала добавить, скопировать, а потом удалить.
хотя самое правильное на мой взгляд решение через альтер тэйбл.

совсем забыл smile

Тогда нужно еще и данные из этого поля сохранять, а затем обратно запихивать.
А если это Paradox? Кто-нибудь пробовал с Paradox`ом такое попробовать?

Автор: Vit 4.1.2005, 17:16
Цитата(dsergey @ 3.1.2005, 03:02)
Тогда нужно еще и данные из этого поля сохранять, а затем обратно запихивать.
А если это Paradox? Кто-нибудь пробовал с Paradox`ом такое попробовать?



Для парадокса используй низкоуровневые функции BDE

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)