Главная страница
    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.46 MB
Время: 0.058 c
2-1142675907
VitV
2006-03-18 12:58
2006.04.02
Очистака элементов формы....


1-1140966751
Конопелька
2006-02-26 18:12
2006.04.02
Выделение области для перетаскивания формы.


3-1139565329
Polevi
2006-02-10 12:55
2006.04.02
Приходный ордер форма № М-4


3-1139464324
Bambino
2006-02-09 08:52
2006.04.02
Вызов диалога настройки подключения к серверу через ADO?


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