Четверг, 19.06.2025, 00:32
Приветствую Вас Гость | RSS
Меню сайта
fff
  • Индексация
  • Девочки
    Форма входа
    Категории раздела
    Теория алгоритмов [3]
    Теория алгоритмов
    Code Snippets [1]
    Code Snippets
    Все о PHP [20]
    Все о PHP
    Visual C++ [13]
    Visual C++
    WIN32 API [7]
    WIN32 API
    Delphi [72]
    Delphi
    ASP [2]
    ASP
    Java [67]
    Java
    VBScript [6]
    VBScript
    CGI [2]
    CGI
    VRML [2]
    VRML
    PERL [9]
    PERL
    HTML [4]
    HTML
    XML [10]
    XML
    Архив записей

    Статьи по Оптимизации

    ПРОГРАММИРОВАНИЕ! СОЗДАНИЕ САЙТОВ И ИХ ОПТИМИЗАЦИЯ

    Главная » Статьи » Программирование » Delphi

    Перемещение таблиц
    Перемещение таблиц
    Здесь я привожу примеры программ, которые я использую для копирования и удаления таблиц. Необходимые для работы модули: DB, DBTables, DbiProcs,DbiErrs, и DbiTypes.

    Вам всего лишь необходимо указать каталог расположения, исходное имя таблицы, каталог назначения и имя таблицы, куда будет скопирована исходная таблица и BDE скопирует таблицу целиком со всеми индексами. Процедура удаления в качестве входных параметров использует каталог расположения и имя таблицы, при этом BDE удаляет как саму таблицу, так и все файлы, связанные с ней (индексы и т.п.).

    Для тестирования данные процедуры были помещены в новое приложение и мне пришлось их немного отредактировать, чтобы удалить некоторые зависимости, которые были связаны с главной формой приложения. Теперь процедуры являются полностью автономными и могут быть помещены в отдельный модуль. (Не забудьте включить его в список используемых модулей).
    procedure TConvertForm.CopyTable(FromDir, SrcTblName, ToDir, DestTblName: String);
    var

    DBHandle: HDBIDB;
    ResultCode: DBIResult;
    Src, Dest, Err: Array[0..255] of Char;
    SrcTbl, DestTbl: TTable;
    begin

    SrcTbl := TTable.Create(Application);
    DestTbl := TTable.Create(Application);
    try
    SrcTbl.DatabaseName := FromDir;
    SrcTbl.TableName := SrcTblName;
    SrcTbl.Open;
    DBHandle := SrcTbl.DBHandle;
    SrcTbl.Close;
    ResultCode := DbiCopyTable(DBHandle,false,
    StrPCopy(Src,FromDir + '' + SrcTblName),nil,
    StrPCopy(Dest,ToDir + '' + DestTblName));
    if (ResultCode <> DBIERR_NONE) then
    begin
    DbiGetErrorString(ResultCode,Err);
    raise EDatabaseError.Create('При копировании ' +
    FromDir + '' + SrcTblName + ' в ' +
    ToDir + '' + DestTblName + ' ,'
    + 'BDE сгенерировал ошибку '''
    + StrPas(Err) + '''');
    end;
    finally
    SrcTbl.Free;
    DestTbl.Free;
    end;
    end;

    procedure TConvertForm.Table(Dir, TblName: String);
    var

    DBHandle: HDBIDB;
    ResultCode: DBIResult;
    tbl, Err: Array[0..255] of Char;
    SrcTbl, DestTbl: TTable;
    SrcTbl := TTable.Create(Application);
    try
    SrcTbl.DatabaseName := Dir;
    SrcTbl.TableName := TblName;
    SrcTbl.Open;
    DBHandle := SrcTbl.DBHandle;
    SrcTbl.Close;
    ResultCode := DbiTable(DBHandle,
    StrPCopy(Tbl,Dir + '' + TblName),nil);
    if (ResultCode <> DBIERR_NONE) then
    begin
    DbiGetErrorString(ResultCode,Err);
    raise EDatabaseError.Create('Удаляя ' +
    Dir + '' + TblName + ', BDE ' +
    'сгенерировал ошибку '''
    + StrPas(Err) + '''');
    end;
    finally
    SrcTbl.Free;
    end;
    end;

    Категория: Delphi | Добавил: Merlin (07.12.2009)
    Просмотров: 340 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *: