Главная страница
    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.46 MB
Время: 0.041 c
1-1141225888
ArtemESC
2006-03-01 18:11
2006.04.02
Алгоритм поиска относительного пути...


3-1139213959
Afanasiy
2006-02-06 11:19
2006.04.02
Delphi 5 &amp; ADO


3-1139309450
John_Doe
2006-02-07 13:50
2006.04.02
Referential Integrity,не пускает удалить.


15-1142236865
Alex_Delphi
2006-03-13 11:01
2006.04.02
Где достать исходник к InterBase 6.0.


15-1141583271
pasha_golub
2006-03-05 21:27
2006.04.02
Минусовка Metallica "Nothing Else Matters"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский