Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как создать таблицу в MS Access при помощи DAO?

01.01.2007

1. Объявляем переменные:

var
  access
, db, td, recordset: Variant;

2. объявляем массив констант соответствия типов данных

(между полями в Delphi и типами полей DAO)

  arrMDBTypes: array[TFieldType] of Integer =
   
({dbText} 10 {ftUnknown},
     
{dbText} 10 {ftString},
     
{dbInteger} 3 {ftSmallint},
     
{dbLong} 4 {ftInteger},
     
{dbInteger} 3 {ftWord},
     
{dbBoolean} 1 {ftBoolean},
     
{dbDouble} 7 {ftFloat},
     
{dbCurrency} 5 {ftCurrency},
     
{dbDouble} 7 {ftBCD},
     
{dbDate} 8 {ftDate},
     
{dbTime} 22 {ftTime},
     
{dbDate} 8 {ftDateTime},
     
{dbLongBinary} 11 {ftBytes},
     
{dbLongBinary} 11 {ftVarBytes},
     
{dbInteger} 3 {ftAutoInc},
     
{dbLongBinary} 11 {ftBlob},
     
{dbMemo} 12 {ftMemo},
     
{dbLongBinary} 11 {ftGraphic},
     
{dbMemo} 12 {ftFmtMemo},
     
{dbLongBinary} 11 {ftParadoxOle},
     
{dbLongBinary} 11 {ftDBaseOle},
     
{dbBinary} 9 {ftTypedBinary},
     
{dbText} 10 {ftCursor}
 
   
{$IFDEF VER120}
     
,
     
{dbText} 10 {ftFixedChar},
     
{dbText} 10 {ftWideString},
     
{dbBigInt} 16 {ftLargeint},
     
{dbText} 10 {ftADT},
     
{dbText} 10 {ftArray},
     
{dbText} 10 {ftReference},
     
{dbText} 10 {ftDataSet}
   
{$ELSE}
 
   
{$IFDEF VER125}
     
,
     
{dbText} 10 {ftFixedChar},
     
{dbText} 10 {ftWideString},
     
{dbBigInt} 16 {ftLargeint},
     
{dbText} 10 {ftADT},
     
{dbText} 10 {ftArray},
     
{dbText} 10 {ftReference},
     
{dbText} 10 {ftDataSet}
 
   
{$ELSE}
 
   
{$IFDEF VER130}
     
,
     
{dbText} 10 {ftFixedChar},
     
{dbText} 10 {ftWideString},
     
{dbBigInt} 16 {ftLargeint},
     
{dbText} 10 {ftADT},
     
{dbText} 10 {ftArray},
     
{dbText} 10 {ftReference},
     
{dbText} 10 {ftDataSet},
     
{dbLongBinary} 11 {ftOraBlob},
     
{dbLongBinary} 11 {ftOraClob},
     
{dbText} 10 {ftVariant},
     
{dbText} 10 {ftInterface},
     
{dbText} 10 {ftIDispatch},
     
{dbGUID} 15 {ftGuid}
   
{$ENDIF}
   
{$ENDIF}
   
{$ENDIF}
 
   
);

3. загружаем DAO:

    try
      access
:= GetActiveOleObject('DAO.DBEngine.35');
   
except
      access
:= CreateOleObject('DAO.DBEngine.35');
   
end;

4. открываем базу данных

    try
      db
:= access.OpenDatabase(yourDatabaseName);
   
except
     
exit
   
end;

5. создаём новую таблицу в открытой базе данных

    td := db.CreateTableDef(yourTableName, 0, '', '');

6. добавляем в таблицу поле с описаниями

    td.Fields.Append(td.CreateField(strFieldName, arrMDBTypes[intDataType], Size));

например,

    td.Fields.Append(td.CreateField('ID', arrMDBTypes[intDataType], Size));
    td
.Fields.Append(td.CreateField('NAME', arrMDBTypes[intDataType], Size));

7. добавляем таблицу в список таблиц

    db.TableDefs.Append(td);

8. открываем созданную таблицу

    recordset := db.OpenTable(yourTableName, 0);

9. добавляем новую запись в открытую таблицу

    recordset.AddNew;

10. изменяем значения поля

 
    curField
:= recordset.Fields[0].Value := 1;
    curField
:= recordset.Fields[1].Value := 'First record';

11. помещаем новую запись в базу

     recordset.Update(dbUpdateRegular, False);

где

const
  dbUpdateRegular
= 1;

12. закрываем recordset

     recordset.Close;

13. закрываем базу данных

     db.Close;

14. освобождаем экземпляр DAO

     access := UnAssigned;

Взято из https://forum.sources.ru