Delphi World - Создаём SystemDSN при помощи Delphi
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Создаём SystemDSN при помощи Delphi

Автор: Olivio Moura
WEB-сайт: http://www.sources.ru

Этот пример показывает один из способов создания ODBC драйвера для доступа к файлу Access MDB. Подобная операция применима к большинству файлов баз данных. Естевственно, Вам потребуется MDB файл, для того, чтобы связать его с DSN.


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;

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования