|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как изменить тип и размер поля в BDE?
Всем привет! Опять обращаюсь к великим ГУРУ Delphi (форум, миленький, спасай)... Столкнулся с проблемой изменения размера поля в DBF через TTable. Вроде как есть такие свойства как Table.Fields[0].DateSize и TTable.Fields[0].DateType, но когда их используешь пишет такое... "cannot perform this operation on a open dataset" и я ХЗ чё с этим делать. В Гугле всё облазил толкового примера не нашел. Помогите кто чем может.
P.S. DbiDoRestructure не предлагать, я очень далёк от этого!!! Заранее благодарен! |
#2
|
||||
|
||||
Попробуй свойство Table active в false перевести. а потом попробуй изменить свои свойства
|
#3
|
|||
|
|||
Боюсь не поможет.
Тебе надо в ран-тайме или это разовая операция? Если разовая, то через BDE desktop открой табличку и сделай изменения. Если в рантайме - то создавай новую таблицу и переписывай данные. |
#4
|
|||
|
|||
Цитата:
|
#5
|
||||
|
||||
(тут я долго ругаюсь матом) ТС пытается изменить ридонли (read-olni) свойства - это чревато. ИХМО, ТС следует получится, F1 спасает, реально, я сам так учился..
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#6
|
|||
|
|||
Ну ладно, ругаться-то
Вообще, можно, конечно, попробовать сделать через BDE и SQL-запрос (не уверен, что получится, а если и получится, то будет сделано ровно тем же путем, что и "руками"). Тут такое дело, что DBF-файл имеет структуру, зависящую от длинн полей в нем, так что как бы ты не делал, все равно будет происходит полное изменение файла. А в этом случае просто создать новую структуру и туде все переписать будет просто быстрее, да и легче в реализации. |
#7
|
||||
|
||||
Цитата:
Код:
Query1.DatabaseName:='DBDEMOS'; Query1.SQL.Text:='create table "test.dbf" (name char(20), capital char (20), continent char(20), area char(20), population char(20))'; Query1.ExecSQL; Query1.SQL.Text:='insert into "test.dbf" select cast(name as char(20)), cast(capital as char(20)), cast(continent as char(20)), cast(area as char(20)), cast(population as char(20)) from country'; Query1.ExecSQL; Пишу программы за еду. __________________ |