0.Подключиться к access
Кидаем на форму adoconnection1
в connectionstring указываем
provider=microsoft.jet.oledb.4.0;data source=c:\ПУТЬ\ИМЯ.mdb;persist security
info=false
(
microsoft.jet.oledb.4.0... - строку подключения можно менять как обычную
текстовую.
Может быть довольно много параметров
s:='provider=microsoft.jet.oledb.4.0;'+
'user id=admin;'+ {id пользователя}
'data source='+basename+';'+ {цепляемся к базе}
'mode=readwrite;extended properties="";'+
'jet oledb:system database="";'+
'jet oledb:registry path="";'+
'jet oledb:database password="1234";'+ {а вот и пароль}
'jet oledb:engine type=5;'+
'jet oledb:database locking mode=1;'+
'jet oledb:global partial bulk ops=2;'+
'jet oledb:global bulk transactions=1;'+
'jet oledb:new database password="";'+
'jet oledb:create system database=false;'+
'jet oledb:encrypt database=false;'+
'jet oledb:don''t copy locale on compact=false;'+
'jet oledb:compact without replica repair=false;'+
'jet oledb:sfp=false';
adoconnection1.loginprompt:=false; // не использовать логин
)
Кидаем adotable и/или adoqwery
у них в connection указываем adoconnection1
До работы с таблицами выполняем
adoconnection1.open; // подключение к базе
Дальше по обычной схеме работы с базой
Там все про bde, но идея таже за исключением того, что вместо например table
надо использовать adotable вместо qwery adoqwery
Т.е. не закладку bde, а закладку ado.
dataacces и datacontrols остаются те же
1. Как через delphi создать базу данных access? procedure createmsaccessdatabase(filename: string);
var
dao: variant;
i: integer;
const
engines: array[0..2] of string = ('dao.dbengine.36', 'dao.dbengine.35',
'dao.dbengine');
function checkclass(oleclassname: string): boolean;
var
res: hresult; begin
result := cocreateinstance(progidtoclassid(oleclassname), nil,
clsctx_inproc_server or clsctx_local_server, idispatch, res) = s_ok; end; begin for i := 0 to 2 do if checkclass(engines[i]) then begin
dao := createoleobject(engines[i]);
dao.workspaces[0].createdatabase(filename,
';langid=0x0409;cp=1252;country=0', 32);
exit; end;
raise exception.create('dao engine could not be initialized'); end;
2. Как создать таблицу?
var
access, db, td, recordset: variant;
массив констант соответствия типов данных (между полями в delphi и типами полей
dao)
// добавляем новую запись в открытую таблицу
recordset.addnew;
// изменяем значения поля
curfield := recordset.fields[0].value := 1;
curfield := recordset.fields[1].value := 'first record';
// помещаем новую запись в базу
recordset.update(dbupdateregular, false);
// где
const
dbupdateregular = 1;
// закрываем recordset
recordset.close;
// закрываем базу данных
db.close;
// освобождаем экземпляр dao
access := unassigned;
3. Как получить список таблиц существующей БД? (заполнить ими например
stringlist) var
x: tstrings; begin
x:=tstringlist.create;
adoconnection.gettablenames(x, false или true)
операции с x...
x.free;
4. Как получить список полей существующей таблицы БД?
Это уже смешно, если Вы знаете имена таблиц
adottable.fields[xxx].filedname где xxx порядковый номер поля
fieldscount - как всегда :-)