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;
    
Previous page:
MS Access
Top:
DRKB
Next page:
Задать пароль на MS ACCESS через ADO