Как создать SystemDSN


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;   
Теги:
SystemDSN
Добавлено: 30 Июля 2018 20:12:54 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...