Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Программное создание таблиц и ключей (первичных и вторичных) для БД Access

Delphi , Базы данных , Access



Автор: Дима
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Программное создание таблиц/ключей(первичных и вторичных) для бд Access

В принципе данный пример описан на сайте http://www.olap.ru/desc/microsoft/borland_ado.asp ,за
исключением создания ключей. Там же можно прочитать , о том как включить ссылку на библиотеку
типов ADOX(Для этого следует выбрать Project | Import Type Library главного меню среды
разработки Delphi, а затем из списка доступных библиотек типов выбрать Microsoft ADO Ext.
2.5 for DDL and Security. Чтобы избежать конфликтов с именами уже имеющихся классов Delphi
(например, TTable), следует переименовать классы ADOX, заменив имена на что-нибудь типа TADOXxxx.
Затем нужно убрать отметку из опции Generate Component Wrapper — в данном случае нам нужен
только файл *.pas, содержащий интерфейс для доступа к объектам ADOX, а затем нажать кнопку
Create Unit. Это приведет к созданию файла ADOX_TLB.PAS, содержащего интерфейс к библиотеке
типов ADOX. Создав этот файл, мы должны сослаться на него, а также на модуль ADODB в
предложении Uses главного модуля нашего проекта).

Создаются 2 таблицы (Otdel,Departament).Поле NumDepartament в таблице Otdel является
внешним ключем к полю NumDepartament в таблице NumDepartament. Поля NumDepartament и
NumOtdel в таблицах Departament и Otdel сответственно являются первичными ключами.

Зависимости: Библиотека типов ADOX
Автор:       Дима
Copyright:   http://www.olap.ru/desc/microsoft/borland_ado.asp + msdn
Дата:        30 июля 2003 г.
***************************************************** }

var
  Catalog: _Catalog;
  Table: _Table;
  Column: _Column;
  FKKey: _Key;
begin
  Catalog := CoCatalog.Create;
  try
    Catalog.Set_ActiveConnection('Provider=Microsoft.Jet.OLEDB.4.0;' +
      'Data Source=' + DatabaseName + ';Persist Security Info=False');
    //DatabaseName - Путь к файлу с базой данных (C:\1\12.mdb)
    //=============================================DOLGNOST=========================
    Table := CoTable.Create;
    try
      Table.Name := 'Dolgnost';
      Table.ParentCatalog := Catalog;
      Column := CoColumn.Create;
      try
        with Column do
        begin
          ParentCatalog := Catalog;
          Name := 'NumDolgnost';
          Type_ := adInteger;
        end;
        Table.Columns.Append(Column, 0, 0);
      finally
        Column := nil;
      end;
      with Table.Columns do
      begin
        Append('NameDolgnost', adVarWChar, 50);
      end;
      Catalog.Tables.Append(Table);
    finally
      Table := nil;
    end;
    //=============================================DEPARTAMENT======================
    Table := CoTable.Create;
    try
      Table.Name := 'Departament';
      Table.ParentCatalog := Catalog;
      Column := CoColumn.Create;
      try
        with Column do
        begin
          ParentCatalog := Catalog;
          Name := 'NumDepartament';
          Type_ := adInteger;
        end;
        Table.Columns.Append(Column, 0, 0);
      finally
        Column := nil;
      end;
      with Table.Columns do
      begin
        Append('NameDepartament', adVarWChar, 50);
      end;
      Catalog.Tables.Append(Table);
    finally
      Table := nil;
    end;
    //==============================Создание первичных ключей=======================
        //Otdel
    FKKey := CoKey.Create;
    try
      with FKKey do
      begin
        Name := 'PKNumOtdel';
        Type_ := adKeyPrimary;
        Columns.Append('NumOtdel', adInteger, 0);
      end;
      Catalog.Tables['Otdel'].Keys.Append(FKKey, 0, EmptyParam, '', '');
    finally
      FKKey := nil;
    end;
    //Departament
    FKKey := CoKey.Create;
    try
      with FKKey do
      begin
        Name := 'PKNumDepartament';
        Type_ := adKeyPrimary;
        Columns.Append('NumDepartament', adInteger, 0);
      end;
      Catalog.Tables['Departament'].Keys.Append(FKKey, 0, EmptyParam, '', '');
    finally
      FKKey := nil;
    end;
    //==============================Создание вторичных ключей=======================
        //Otdel
    FKKey := CoKey.Create;
    try
      with FKKey do
      begin
        Name := 'FKNumOtdel';
        Type_ := adKeyForeign;
        Columns.Append('NumDepartament', adInteger, 0);
        RelatedTable := 'Departament';
        Columns['NumDepartament'].RelatedColumn := 'NumDepartament';
        UpdateRule := adRICascade;
      end;
      Catalog.Tables['Otdel'].Keys.Append(FKKey, 0, EmptyParam, '', '');
    finally
      FKKey := nil;
    end;
  finally
    Catalog = nil;
  end;

Программа на Delphi создает таблицы и ключи в базе данных Microsoft Access с помощью библиотеки ADOX. Программа создает две таблицы - "Otdel" и "Departament", с первичными ключами в столбцах "NumOtdel" и "NumDepartament", соответственно. Она также создает внешний ключ между таблицей "Otdel" и таблицей "Departament".

Программа состоит из следующих шагов:

  1. Создается экземпляр класса _Catalog, представляющего базу данных Access.
  2. Метод Set_ActiveConnection используется для установки строки подключения к базе данных. В этом случае указывается провайдер как Microsoft Jet OLEDB 4.0 и источник данных как файл "C:\1\12.mdb".
  3. Создаются экземпляры классов _Table и _Column, чтобы создать таблицы и столбцы в базе данных.
  4. Для каждой таблицы программа устанавливает имя и родительский каталог (то есть, базу данных Access). Она также создает столбцы для каждой таблицы с помощью класса _Column.
  5. Программа создает первичные ключи для каждой таблицы с помощью класса _Key. Первичный ключ - это уникальный идентификатор для каждой строки в таблице.
  6. Наконец, программа создает внешний ключ между таблицей "Otdel" и таблицей "Departament". Внешний ключ - это столбец или набор столбцов, который ссылается на первичный ключ другой таблицы.

Код содержит подробные комментарии, объясняющие каждую часть программы, что помогает понимать логику программы.

Для улучшения кода предлагаются следующие предложения:

  1. Программа могла быть более устойчивой, если бы добавляла обработку ошибок для случаев, когда соединение с базой данных не удается или таблица уже существует.
  2. Код мог бы использовать более описательные имена переменных и констант вместо жесткого кодирования значений, таких как "C:\1\12.mdb".
  3. Рекомендуется добавить комментарии к объяснению цели каждого раздела кода, особенно для разделов, которые не сразу понятны.

В целом, код хорошо структурирован и легко читаемый. С несколькими минимальными улучшениями он мог бы быть еще более эффективным в создании таблиц и ключей в базе данных Access с помощью ADOX.

Создание таблиц и ключей (первичных и вторичных) для базы данных Microsoft Access с помощью программного кода на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Access ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 10:45:43/0.0057711601257324/1