Как создать таблицу в MS Access при помощи DAO? |
Previous Top Next |
1. Объявляем переменные:
Code: |
var access, db, td, recordset: Variant; |
2. объявляем массив констант соответствия типов данных
(между полями в Delphi и типами полей DAO)
Code: |
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:
Code: |
try access := GetActiveOleObject('DAO.DBEngine.35'); except access := CreateOleObject('DAO.DBEngine.35'); end; |
4. открываем базу данных
Code: |
try db := access.OpenDatabase(yourDatabaseName); except exit end; |
5. создаём новую таблицу в открытой базе данных
Code: |
td := db.CreateTableDef(yourTableName, 0, '', ''); |
6. добавляем в таблицу поле с описаниями
Code: |
td.Fields.Append(td.CreateField(strFieldName, arrMDBTypes[intDataType], Size)); |
например,
Code: |
td.Fields.Append(td.CreateField('ID', arrMDBTypes[intDataType], Size)); td.Fields.Append(td.CreateField('NAME', arrMDBTypes[intDataType], Size)); |
7. добавляем таблицу в список таблиц
Code: |
db.TableDefs.Append(td); |
8. открываем созданную таблицу
Code: |
recordset := db.OpenTable(yourTableName, 0); |
9. добавляем новую запись в открытую таблицу
Code: |
recordset.AddNew; |
10. изменяем значения поля
Code: |
curField := recordset.Fields[0].Value := 1; curField := recordset.Fields[1].Value := 'First record'; |
11. помещаем новую запись в базу
Code: |
recordset.Update(dbUpdateRegular, False); |
где
Code: |
const dbUpdateRegular = 1; |
12. закрываем recordset
Code: |
recordset.Close; |
13. закрываем базу данных
Code: |
db.Close; |
14. освобождаем экземпляр DAO
Code: |
access := UnAssigned; |
©Drkb::02763
Взято из http://forum.sources.ru