Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO+Access. Настройка на клиенте [D6]


msguns ©   (2004-11-23 17:40:00) 

Как на клиентском ПК настроить приложение на работу с БД с произвольном каталоге ? Т.е. на ПК, где разрабатывалось приложение, был добавлен System DSN, настроенный на конкретный mdb. При установке на ПК пользователя надо делать то же самое ?
А нельзя программно (типа через ini-файл с предварительно скорректированной строкой с пачем) создать этот источник или использовать уже имеющийся на компе юзера, задав ему нужный путь к файлу БД ?
В хэлпах по ADO и ODBC это очень туманно описано (типа все через ConnectionString, а как достучаться до самого источника данных - ни слова)

Заранее прошу прощение за ламерство и благодарю за помощь


msguns   (2004-11-24 10:14:00) [1]

Спасибо всем. Вчера в конце раб.дня разобрался.
Сделал так:

function TForm1.Open_DataBase: boolean;
var
 CS: string;
begin
 CS := '';
 if adocAccess.Connected then adocAccess.Close;
 CS := CS_Provider+'='+S_Provider+';'+CS_Security+'='+S_Security+';'+CS_Data_Source+'='+S_Data_Source;
 if S_Mode>'' then CS := CS+';'+CS_Mode+'='+S_Mode;
 if S_User_ID>'' then CS := CS+';'+CS_User_ID+'='+S_User_ID;
 CS := CS+';'+CS_Initial_Catalog+'='+S_Initial_Catalog;
 Edit2.Text := CS;
 adocAccess.ConnectionString := CS;
 adocAccess.Open;
 adocAccess.GetTableNames(ComboBox1.Items,false);
 ShowMessage('БД открыта');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 sbtSelectDB.Enabled := true;
 sbtConnect.Enabled := false;
 sbtOpenTable.Enabled := false;
 CS_Provider := 'Provider';
 S_Provider := 'MSDASQL.1';
 CS_Security := 'Persist Security Info';
 S_Security := 'False';
 CS_USER_ID := 'User ID';
 S_USER_ID := '';
 CS_Data_Source := 'Data Source';
 S_Data_Source := 'База данных MS Access';
 CS_Mode := 'Mode';
 S_Mode := 'ReadWrite';
 CS_Initial_Catalog := 'Initial Catalog';
 S_Initial_Catalog := '';
end;

procedure TForm1.sbtSelectDBClick(Sender: TObject);
begin
 if not OpenDialog1.Execute then exit;
 Edit1.Text := OpenDialog1.FileName;
 sbtConnect.Enabled := true;
 S_Initial_Catalog := Edit1.Text;
end;

procedure TForm1.sbtConnectClick(Sender: TObject);
begin
 Open_DataBase;
end;


sniknik   (2004-11-23 21:17:00) [2]

ini файл со строкой конекта в ado это udl. делаеш пустой файл.udl(сделай текстовый и переименуй) кликаеш на нем в проводнике (или запускаеш в общем как exe-шник) и настраивай. а сам файл укажеш в строке конекта.
настраивать лучше вообще без ODBC (устарел) а с другим любым OLEDB провайдером, и твой источник не нужен (стучать до него ;о)), может поэтому и ни слова про это не пишут? что не нужен он.

хотя создать его можно, и достаточно просто, в реестре прописать например (что можно посмотреть в настоенном), или через библиотеку одбс (есть обертки для odbc32.dll), или совсем просто создать файловый DSN и копировать его...
но зачем? прямой конект к OLEDB провайдеру гораздо проще его можно прямо на лету составить без всяких источников... ( http://www.delphimaster.ru/cgi-bin/forum.pl?n=1&search=Jet.OLEDB.4.0)


SergP   (2004-11-23 21:17:00) [3]


>  msguns ©   (23.11.04 17:40)
> Как на клиентском ПК настроить приложение на работу с БД
> с произвольном каталоге ?


Так ведь в строке подключения указывается путь где находится БД.
Сделай чтобы в проге можно было указать нужный путь, а затем вставляй его в строку подключения.
Или я неправильно понял чего ты хочешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо