Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
ВнизНе могу создать резервную копию базы. (BDE) Найти похожие ветки
← →
Jen N (2002-11-25 17:51) [0]{Имею " шаблонную" базу (_shablon.dbf)
(Она проиндексирована, все это в Object Inspector отражено.}
Table_rezerv.TableName := "_shablon.dbf";
Open;
Close;
{Делаю так, чтобы вручную не указывать все Fields, Index для новой базы}
{Теперь присваиваю TableName новое значение (имя резервной базы), и создаю с такими же полями и индексом, но с новым именем}
Table_rezerv.TableName := newName;
Table_rezerv.CreateTable; {безусловно}
Table_rezerv.BatchMove(Table1, batCopy);
{вот тут выскакивает ошибка. Дело в том, что если просто Editы и Appendы делаю - нормально. А после BatchMove - матерится, говорит Index does not exist. И действительно физически файла с расширением mdx не появляется (это же и есть индекс?}
В каком месте я дурак?
Спасибо.
← →
Jen N (2002-11-25 18:06) [1]Еще к тому же и наврал.
Append не ругается, но и ничего не делает. А вот Post после него ругается. Говорит "Table not in Insert or Edit Mode".
← →
Pat (2002-11-25 23:22) [2]>Не могу создать резервную копию базы
Влом разбераться, что у тебя за проблема. Вот, только вчера написал процедуру резервирования таблицы:
procedure BackUpTable(Source:TTable);
const SqlString="insert into %s select * from %s";
begin
with TTable.Create(application) do
try
Source.IndexDefs.Update;
IndexDefs.Assign(Source.IndexDefs);
FieldDefs.Assign(Source.FieldDefs);
DatabaseName:=Source.DatabaseName;
TableName:="bk"+Source.TableName;
CreateTable;
finally
free
end;
with TQuery.Create(application) do
try
SQL.Clear;
DatabaseName:=Source.DatabaseName;
SQL.Add(format(SqlString,["bk"+Source.TableName,Source.TableName]));
ExecSQL;
finally
free
end;
end;
Авось, поможет :-))
← →
Pat (2002-11-25 23:31) [3]>...говорит Index does not exist
Все дело в волшебных пузырьках ©
У тебя индексы не существуют
IndexDefs.Assign(Source.IndexDefs)
← →
Jen N (2002-11-26 15:22) [4]2 Pat:
Спасибо, большое, разберусь!
← →
Jen N (2002-11-26 20:00) [5]2 Pat, 2 All:
Спасибо, Pat, за процедуру.
Только у меня уже начали опускаться руки. Дело в том, что индекс у меня Expression - вычисляется по некоторой формуле из нескольких полей.
Видимо поэтому не хочет выполняться команда CreateTable. Говорит "Invalid index Descriptor. Table (с новым именем) does not exist".
Я долго-долго мучался сидел. И вставил такой кусок:
IndexName := Source.IndexName;
IndexDefs[0].Expression := Source.IndexDefs[0].Expression;
IndexDefs[0].Name := Source.IndexDefs[0].Name;
IndexDefs[0].Source := Source.IndexDefs[0].Source;
Теперь таблица создается (CreateTable).
Но зато ни BatchMove, ни твой, Pat, sql-ловский копировальщик не работают. BatchMove матерится опять же на индексы (???), а sql-ке не нравится русское имя файла (база имеет имя "01 ноября 2002.dbf", например). Я конечно, могу исправить енто имя на англицкое, но не уверен, что и это поможет.
Наверное, стоит опустить руки и работать без бекапа :((
А кто подскажет, может просто тупо 3 файла БД копировать командами ОС, у меня работает на базе только один человек, и во время работы можно копировать эти файлы, я пробовал.
Отчаявшийся, Jen N
← →
Anatoly Podgoretsky (2002-11-26 23:02) [6]dbiCopyTAble
← →
Jen N (2002-11-27 14:35) [7]2 Anatoly Podgoretsky:
dbiCopyTable - это ibase? Я в хелпе Делфи не нашел (даже поиском).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c