const
ODBC_ADD_DSN = 1; // Добавляем источник данных
ODBC_CONFIG_DSN = 2; // Конфигурируем (редактируем) источник данных
ODBC_REMOVE_DSN = 3; // Удаляем источник данных
ODBC_ADD_SYS_DSN = 4; // Добавляем системный DSN
ODBC_CONFIG_SYS_DSN = 5; // Конфигурируем системный DSN
ODBC_REMOVE_SYS_DSN = 6; // удаляем системный DSN
type
TSQLConfigDataSource = function( hwndParent: HWND; fRequest: WORD;
lpszDriver: LPCSTR; lpszAttributes: LPCSTR ) : BOOL; stdcall;
procedure Form1.FormCreate(Sender: TObject);
var
pFn: TSQLConfigDataSource;
hLib: LongWord;
strDriver: string;
strHome: string;
strAttr: string;
strFile: string;
fResult: BOOL;
ModName: array[0..MAX_PATH] of Char;
srInfo : TSearchRec;
begin
Windows.GetModuleFileName( HInstance, ModName, SizeOf(ModName) );
strHome := ModName;
while ( strHome[length(strHome)] <> ′′ ) do
Delete( strHome, length(strHome), 1 );
// Тестовая база данных (Axes = Access)
strFile := strHome + ′TestData.MDB′;
// загружаем библиотеку (путь по умолчанию)
hLib := LoadLibrary( ′ODBCCP32′ );
if( hLib <> NULL ) then
begin
@pFn := GetProcAddress( hLib, ′SQLConfigDataSource′ );
if( @pFn <> nil ) then
begin
// начинаем создание DSN
strDriver := ′Microsoft Access Driver (*.mdb)′;
strAttr := Format( ′DSN=TestDSN′ + #0 + ′DBQ=%s′ + #0 +
′Exclusive=1′ + #0 + ′Description=Test Data′ + #0 + #0, [strFile] );
fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
if( fResult = false ) then
ShowMessage( ′Ошибка создания DSN (Datasource) !′ );
// test/create MDB file associated with DSN
if( FindFirst( strFile, 0, srInfo ) <> 0 ) then
begin
strDriver := ′Microsoft Access Driver (*.mdb)′;
strAttr := Format( ′DSN=TestDSN′+#0+ ′DBQ=%s′+#0+ ′Exclusive=1′+#0+
′Description=Test Data′+#0+ ′CREATE_DB="%s"′#0+#0, [strFile,strFile] );
fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
if( fResult = false ) then
ShowMessage( ′Ошибка создания MDB (файла базы данных) !′ );
end;
FindClose( srInfo );
end;
FreeLibrary( hLib );
end
else
ShowMessage( ′Невозможно загрузить ODBCCP32.DLL′ );
end;
|