Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

Не могу создать резервную копию базы. (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
14-51913
Nimda2000
2002-11-25 09:10
2002.12.16
Просто вопрос!


14-51931
Axis_of_Evil
2002-11-25 15:32
2002.12.16
Lyrics


3-51584
Bakch
2002-11-27 12:51
2002.12.16
---|Ветка была без названия|---


4-52025
GOD
2002-11-05 02:22
2002.12.16
Вопрос № 2


4-52024
TankMan
2002-10-30 23:22
2002.12.16
Событие OnMouseOver на Label?