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


Автор: MouseHouse 10.1.2007, 09:31
формат поля numeric

Пробую так

Table1.FieldDefs.Items[0].DataType:=ftString;
Table1.FieldDefs.Items[0].Size := 30;

а вот чтоб  изменения вступили в силу как?

Автор: Rodman 10.1.2007, 09:49
откуда взял???

Код

Table1.FieldDefs.Items[0].DataType:=ftString;
Table1.FieldDefs.Items[0].Size := 30;
Table1.Post;


не прокатит???

Автор: Mephisto 10.1.2007, 09:53
В DBF не помню, но копать стоит в сторону alter table. По крайней мере так в остальных. Хотя тут не факт.

Автор: MouseHouse 10.1.2007, 09:59
Table1.Post; не прокатит

Взял по аналогии создания таблицы





Автор: Mephisto 10.1.2007, 10:05
Цитата(MouseHouse @  10.1.2007,  10:59 Найти цитируемый пост)
Table1.Post; не прокатит

Взял по аналогии создания таблицы

Но ведь для этого и SQL запрос соответствующий написать надо, типа:

Код

Create Table.......


Тут ничем не отличается. Нужно написать:

Код

Alter Table.......


А потом Post.

Автор: MouseHouse 10.1.2007, 10:17
нет того что могло выполнить  SQL запрос .. нет BDE,
используюся компоненты прямого доступа к DBF файлу

Автор: Mephisto 10.1.2007, 10:36
Какой компонент используешь?

Возьми вместо Table Query, все connection настрой так же...

Автор: MouseHouse 10.1.2007, 10:53
Mephisto и кто выполнит мне код SQL?  
НЕТ у меня SQL сервера и BDE нет с помощью которой  Query и выполняет SQL запрос 


Автор: ТоляМБА 10.1.2007, 11:03
Цитата(Mephisto @  10.1.2007,  10:05 Найти цитируемый пост)

Alter Table.......

А потом Post. 

При чём тут Post??? Надо Query1.ExecSQL;

Цитата(MouseHouse @  10.1.2007,  10:53 Найти цитируемый пост)
и BDE нет 
 Хм. Странно - Делфя есть а BDE нет. Впервые такое слышу.

Короче поменять сразу даже в SQL врядли получится. Сделать можно трехходовкой:
1. Через Alter Table добавить столбец с нужным типом
2. Через Update присвоить значения новому столбцу
3. Опять таки через Alter Table убить старый столбец.

Автор: Rodman 10.1.2007, 11:21
Код

ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]

alter_specification:
        ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
  or    ADD [COLUMN] (create_definition, create_definition,...)
  or    ADD INDEX [index_name] (index_col_name,...)
  or    ADD PRIMARY KEY (index_col_name,...)
  or    ADD UNIQUE [index_name] (index_col_name,...)
  or    ADD FULLTEXT [index_name] (index_col_name,...)
  or    ADD [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
            [reference_definition]
  or    ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
  or    CHANGE [COLUMN] old_col_name create_definition
               [FIRST | AFTER column_name]
  or    MODIFY [COLUMN] create_definition [FIRST | AFTER column_name]
  or    DROP [COLUMN] col_name
  or    DROP PRIMARY KEY
  or    DROP INDEX index_name
  or    DISABLE KEYS
  or    ENABLE KEYS
  or    RENAME [TO] new_tbl_name
  or    ORDER BY col
  or    table_options


вникай

Автор: Mephisto 10.1.2007, 12:41
 smile  smile 

Автор: SergeBS 10.1.2007, 13:58
MouseHouse, 
Даже не надейся "на лету" менять структуру. Поскольку везде это изменение делается одинаково:
1. Делается временная таблица с новой (измененной) структурой.
2. В нее копируются данные (все, что можно преобразовать или не изменившегося типа) из старой таблицы.
3. Старая таблица удаляется.
4. Временная таблица переименовывается в имя старой.
Кстати, если у MS SQL менять структуру таблицы, он этот способ отчетливо пропишет в скрипте на изменение.

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