Форум: "Базы";
Текущий архив: 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