Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программное создание DSN [D7, MSSQL]


Леди ©   (2005-09-02 11:48:00) 

Подскажите, как программно в источниках данных ODBC создать системный DNS, а также проверить его существование?


Dick Gonsales   (2005-09-07 09:17:00) [1]

Одно время я этим пользовался. нашел в интернете, кто автор не знаю.

unit SystemDSN;

interface
uses
   Windows, Sysutils, Classes;
const
ODBC_ADD_DSN        = 1;    
ODBC_CONFIG_DSN     = 2;    
ODBC_REMOVE_DSN     = 3;    
ODBC_ADD_SYS_DSN    = 4;    
ODBC_CONFIG_SYS_DSN = 5;    
ODBC_REMOVE_SYS_DSN = 6;    

type
TSQLConfigDataSource = function( hwndParent: HWND;
                                 fRequest: WORD;
                                 lpszDriver: LPCSTR;
                                 lpszAttributes: LPCSTR ) : BOOL; stdcall;

function CreateDSN( DriverName, Path, DSNName, Description : string; Mode : integer ) : boolean;

implementation

function CreateDSN( DriverName, Path, DSNName, Description : string; Mode : integer ) : boolean;
var
pFn: TSQLConfigDataSource;
hLib: LongWord;
strAttr: string;
begin
   Result := false;
   if ( DriverName = '' ) or ( Path = '' ) then
        exit;
   hLib := LoadLibrary( 'ODBCCP32' );    
   if hLib = 0 then
   begin
        MessageBox(HWND(nil), 'Not found ODBCCP32.DLL', 'Error!', 4112);
        exit;
   end;
   @pFn := GetProcAddress( hLib, 'SQLConfigDataSource' );
   if( @pFn <> nil ) then
   begin
         strAttr := Format( 'DSN=' + DSNName + #0 +
                            'DBQ=%s' + #0 +
                            'Exclusive=0' + #0 +
                            'Description=' + Description + #0 + #0,
                            [ Path ] );
         Result := pFn( 0, Mode, @DriverName[1], @strAttr[1] );
    end;
  FreeLibrary( hLib );
end;

end.

// Пример вызова
  if not SystemDSN.CreateDSN('Microsoft Access driver (*.mdb)',NameDB,'Report','',1)
  then MessageDlg(('Ошибка создания DSN - Report.'),mtError, [mbOK], 0);


Игорь Шевченко   (2005-09-02 16:44:00) [2]


> А в каких модулях или библиотеках находятся эти функции
> и где поподробней о них можно узнать?


odbccp32.dll

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcsqlconfigdatasource.asp


Леди   (2005-09-02 12:40:00) [3]

А в каких модулях или библиотеках находятся эти функции и где поподробней о них можно узнать?


DiamondShark   (2005-09-02 12:04:00) [4]

SQLConfigDataSource
SQLDataSources


Наверх

Титульная страница Поиск, карта сайта Написать письмо