Автор: de1phi | 18.12.2007 в 10:22 | Рубрики: Базы данных

Приведенная ниже процедура создает пустую базу данных MS 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=0×0409;CP=1252;COUNTRY=0′, 32);
exit;
end;
raise Exception.Create(’DAO engine could not be initialized’);
end;

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}, Читать полностью…

От: Святой Петр
Кому: Всем на Земле
Дата Октябрь, 1999 от рождества Христова
Тема: Не помирать!
Для ускорения регистрационного процесса у врат Рая, мы стали использовать Microsoft Access, после чего у нас начались серьeзные проблемы. А посему, пожалуйста, не помирайте пока!

var
Access: Variant;
begin
// Открываем Access
try
Access := GetActiveOleObject(’Access.Application’);
except
Access := CreateOleObject(’Access.Application’);
end;
Access.Visible := True;

// Открываем базу данных
// Второй параметр указывает - будет ли база открыта в Exclusive режиме
Access.OpenCurrentDatabase(’C:\My Documents\Books.mdb’, True);

// открываем отч¸т
{Значение второго пораметра может быть одним из следующих
acViewDesign, acViewNormal, or acViewPreview. acViewNormal,
которые устанавливаются по умолчанию, для печати отч¸та.
Если Вы не используете библиотеку типов, то можете определить
эти значения следующими:

const
acViewNormal = $00000000;
acViewDesign = $00000001;
acViewPreview = $00000002;

Третий параметр - это имя очереди для текущей базы данных.
Четв¸ртый параметр - это строка для SQL-евского WHERE -
то есть строка SQL, минус WHERE.}

Access.DoCmd.OpenReport(’Titles by Author’, acViewPreview, EmptyParam,
EmptyParam);

< ... >

// Закрываем базу данных
Access.CloseCurrentDatabase;

// Закрываем Access
{const
acQuitPrompt = $00000000;
acQuitSaveAll = $00000001;
acQuitSaveNone = $00000002;}
Access.Quit(acQuitSaveAll);
end;

procedure….
var
x: TStrings;
begin
x:=TstringList.Create;
ADOConnection.GetTableNames(x, false или true) // <- почитай Help
операции с x…
x.Free;
end;

Автор: de1phi | в 10:22 | Рубрики: Базы данных

// Using ODBC:

const
ODBC_ADD_DSN = 1; // Add data source
ODBC_CONFIG_DSN = 2; // Configure (edit) data source
ODBC_REMOVE_DSN = 3; // Remove data source
ODBC_ADD_SYS_DSN = 4; // add a system DSN
ODBC_CONFIG_SYS_DSN = 5; // Configure a system DSN
ODBC_REMOVE_SYS_DSN = 6; // remove a system DSN
ODBC_REMOVE_DEFAULT_DSN = 7; // remove the default DSN

function SQLConfigDataSource(hwndParent: HWND;
fRequest: Word;
lpszDriver: LPCSTR;
lpszAttributes: LPCSTR): BOOL; stdcall; external ‘ODBCCP32.DLL’;

function CreateDB(const Database: string): Boolean;
begin
Result := SQLConfigDataSource(0, ODBC_ADD_DSN,
‘Microsoft Access Driver (*.mdb)’, PChar(’CREATE_DB=’ + Database + ‘ General’#0));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
CreateAccessDatabase(’c:\Testdb.mdb’);
end;