Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Подключить бы БД Access в рантайме в User DSN...   Найти похожие ветки 

 
GL00m   (2006-02-06 01:34) [0]

Есть БД Access (*.mdb). Хотелось бы в программе подключить эту БД в User DSN (чтобы не прописывать вручную в ODBC Data Source Administrator). Я подозреваю, что это как-то можно сделать, но догадываюсь, что не хватает знаний...
Я думал, что видел в форуме как-то, но сейчас не смог найти. Помогите, плз!


 
piople ©   (2006-02-06 06:21) [1]

Программным путем создать алиас чтоли?


 
GL00m   (2006-02-06 09:17) [2]

Да-да-да, точно! =)


 
sniknik ©   (2006-02-06 09:23) [3]

ну так посмотри на существующий (создай руками), после найди его в реестре по ключевому слову (названию)... вот и все, в рантайме надо эти записи повторить. (можно также библиотеку ODBC задействовать, там есть фунция на создание (тем же методом, она сама в реестр пищет, только от тебя скрыто))

но вообще какой смысл использовать устаревшие методы и еще себе же проблемы устраивать? делай подключение через Jet, он алиасов вообще не требует.


 
GL00m   (2006-02-06 09:28) [4]

Спасибо огромное, но один вопрос:
Jet? Это где такое? Это как-то связано с ADO?


 
piople ©   (2006-02-06 09:33) [5]

type
 TSQLConfigDataSource =
   function(hwndParent: Integer;
   fRequest: Integer;
   lpszDriverString: string;
   lpszAttributes: string): Smallint; stdcall;

function SQLConfigDataSource(hwndParent: Integer; fRequest: Integer;
 lpszDriverString: string; lpszAttributes: string): Integer; stdcall;
var
 func: TSQLConfigDataSource;
 OdbccpHMODULE: HMODULE;

begin
 OdbccpHMODULE := LoadLibrary("c:\WINDOWS\SYSTEM\odbccp32.dll");
 if OdbccpHMODULE = 0 then
   raise Exception.Create(SysErrorMessage(GetLastError));
 func := GetProcAddress(OdbccpHMODULE, PChar("SQLConfigDataSource"));
 if @func = nil then
   raise Exception.Create("Error Getting adress for SQLConfigDataSource" +
     SysErrorMessage(GetLastError));
 Result := func(hwndParent, fRequest, lpszDriverString, lpszAttributes);
 FreeLibrary(OdbccpHMODULE);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if SQLConfigDataSource(0, 1, "Microsoft Excel Driver (*.xls)",
   Format("DSN=%s;DBQ=%s;DriverID=790", ["MyDSNName",
   "c:\temp\temp.xls"])) <> 1 then
   ShowMessage("Cannot create ODBC alias");
end;


Delphi World вообще полезная штука :)


 
GL00m   (2006-02-06 09:33) [6]

Извиняюсь, нашел: Microsoft Jet OLEDB в TADOConnection. Оно?


 
Личность   (2006-02-06 09:34) [7]

r0.ru + ADO + Delphi + examples :)


 
GL00m   (2006-02-06 09:36) [8]

Круто. Спасибо! Пойду переваривать, разбираться и все такое. Если что, вернусь и спрошу. =))


 
msguns ©   (2006-02-06 09:48) [9]

function TdmLibr.DB_Open: boolean;
begin
 result := true;
 with cnLibr do
   if not Connected then
     try
      ConnectionString := "Provider=Microsoft.Jet.OLEDB.4.0;"+
                          "Data Source="+MainForm.Path_To_Database+";"+
                          "Persist Security Info=False";
      LoginPrompt := false;
      Open;
     except
      result := false;
     end;
end;


 
GL00m   (2006-02-06 21:37) [10]

Спасибо, все получилось: сделал ADOConnection, там Microsoft Jet OLEDB и в качестве Data Source указал файл *.mdb. Дальше, как я понял, все не сильно отличается от работы с mySQL через dbExpress.
Еще раз всем спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.101 c
4-1137428016
sicilla
2006-01-16 19:13
2006.04.02
Доступ к com1


8-1130135852
Chaser
2005-10-24 10:37
2006.04.02
Как реализовать перетаскивание картинки мышью


1-1141280201
Димон
2006-03-02 09:16
2006.04.02
запуск Оутлук с адресом из таблицы


2-1142932625
Dmitrij_K
2006-03-21 12:17
2006.04.02
Try ... Finally


15-1141762238
parovoZZ
2006-03-07 23:10
2006.04.02
Подсчитать кол-во строк на MySQL.