Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Подключить бы БД 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
15-1142076062
Santyago
2006-03-11 14:21
2006.04.02
Подключение компьютера к сети через дополнительный компьютер


11-1123503268
mdw
2005-08-08 16:14
2006.04.02
TKOLMHFindReplaceDialog


1-1141295597
Николай2006
2006-03-02 13:33
2006.04.02
использование TChart для рисования многоугольника


15-1142136652
grisme
2006-03-12 07:10
2006.04.02
Quake 3 серверы


2-1142430492
Id
2006-03-15 16:48
2006.04.02
Ошибка при просмотре прав для таблицы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский