Как создать таблицу в MS Access при помощи DAO?
Как создать таблицу в MS Access при помощи DAO?
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;
Взято с Исходников.ru