Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Программное создание таблиц и ключей (первичных и вторичных) для БД 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 World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay