Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с подключением ADOConnection 
:(
    Опции темы
User
Дата 5.3.2005, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



Я сохраняю путь к БД в реестре. Использую БД Access. Затем запускаю свою программу. При этом хочется что бы ADOConnection1 прочитала путь и соответственно запустилась прога и подключилась БД. Написал следующее: (извените что не использую стеки не как не пойму как это делать)

program Organaizer;

uses
Forms,
Registry, // Инициализирую работу с реестром
ADOConEd, // Инициализирую работу c ADOConnection
Main in 'Main.pas' {MainForm},
Unit1 in 'Unit1.pas' {DM: TDataModule},
SNP_Form in 'SNP_Form.pas' {SNP},
SNP_Parametr_Form in 'SNP_Parametr_Form.pas' {SNP_Parametr},
SNP_Edit_Form in 'SNP_Edit_Form.pas' {SNP_Edit},
SNP_Find_Form in 'SNP_Find_Form.pas' {Find_Form},
Telefon_Insert_Form in 'Telefon_Insert_Form.pas' {Telefon_Insert},
Komment_Form in 'Komment_Form.pas' {Komenntar},
Telefon_Edit_Form in 'Telefon_Edit_Form.pas' {Telefon_Edit};

{$R *.res}

var
FIniFile : TRegIniFile;
S : String;
begin
FIniFile :=TRegIniFile.Create('Software'); // Инициализация реестра
FIniFile.OpenKey('ORGANAZER', true); // Открываю раздел 1
FIniFile.OpenKey('Options', true); // Открываю раздел 2
S := FIniFile.ReadString('Options_Param', 'Param2', ''); // Загружаю из реестра значения
FIniFile.Free;
DM.ADOConnection1.Close;
if EditConnectionString(DM.ADOConnection1) then
begin
DM.ADOConnection1.Connected := True;
DM.ADOTable1.Active := True;
DM.ADOTable2.Active := True;
DM.ADOTable3.Active := True;
DM.ADOTable4.Active := True;
end;
DM.ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;' + 'DataSource=' + S + ';PersistSecurity Info=false';
DM.ADOConnection1.Open;
DM.ADOConnection1.Connected :=True;

end;

begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TDM, DM);
Application.CreateForm(TSNP, SNP);
Application.CreateForm(TSNP_Parametr, SNP_Parametr);
Application.CreateForm(TSNP_Edit, SNP_Edit);
Application.CreateForm(TFind_Form, Find_Form);
Application.CreateForm(TTelefon_Insert, Telefon_Insert);
Application.CreateForm(TKomenntar, Komenntar);
Application.CreateForm(TTelefon_Edit, Telefon_Edit);
Application.Run;
end.



Пробывал использовать второй вариант:

var
FIniFile : TRegIniFile;
S : String;
begin
FIniFile :=TRegIniFile.Create('Software'); // Инициализация реестра
FIniFile.OpenKey('ORGANAZER', true); // Открываю раздел 1
FIniFile.OpenKey('Options', true); // Открываю раздел 2
S := FIniFile.ReadString('Options_Param', 'Param2', ''); // Загружаю из реестра значения
DM.ADOConnection1.Close;
DM.ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;' + 'DataSource=' + S + ';PersistSecurity Info=false';
DM.ADOConnection1.Open;
DM.ADOTable1.Active := True
DM.ADOTable2.Active := True;
DM.ADOTable3.Active := True;
DM.ADOTable4.Active := True;
FIniFile.Free;
end;

Но в том и другом случае дельфи (при компиляции) говорит что ошибок нет, а при запуске выдает ошибку на невозможность подключения (и аксцеш виалейшен). Как быть? Я прямо растерялся.....
PM MAIL WWW   Вверх
Zero
Дата 5.3.2005, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



У меня такаяже проблема, но не динамически подключится получается
http://forum.vingrad.ru/index.php?showtopic=43165&st=15
Цитата(User @ 5.3.2005, 09:53)
извените что не использую стеки не как не пойму как это делать

Там где ты вводиш сообщение для отправки, в панели инструментов, есть открывающийся список, с названием Код, щёлкни справа на стрелку, и выбери например Delphi, появятся где ты вводишь сообщение вот такие штуки
[cоde=delphi]

[/code]
А внутри в пустой строке пиши свой текст программы
PM MAIL ICQ   Вверх
Петрович
Дата 5.3.2005, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



Доступ к DM и ко всем лежащим не нем компонентам возможен только после Application.CreateForm(TDM, DM);. Т.к. до этого, экземпляр DM еще не создан.

Я например делаю это так (упрощенно):

Код

procedure Tdm.ADOConnectionBeforeConnect(Sender: TObject);
begin
 Abort;  // для того что-бы избежать попытку соединения с БД настроенной во время дизайна, при загрузке формы из ресурса  
end;

procedure Tdm.DataModuleCreate(Sender: TObject);
begin
 try
   // Открыть БД:
   with  ADOConnection  do begin
     BeforeConnect := Nil; // отключение ADOConnectionBeforeConnect.
     ConnectionString := ... строка соединения ...;
     Open;
   end;

   // Открыть датасеты
   ... открытие связанных с ADOConnection наборов данных ...
 except
   ... обработка ошибок ...
 end;
end;




--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
User
Дата 5.3.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



Все получилось. Требовалось просто подумать. Привожу полученный код.

program Project1;

uses
Forms,
Registry,
ADOConEd,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var
FIniFile : TRegIniFile;
S : String;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);

begin
FIniFile :=TRegIniFile.Create('Software'); // Инициализация реестра
FIniFile.OpenKey('ORGANAZER', true); // Открываю раздел 1
FIniFile.OpenKey('Options', true); // Открываю раздел 2
S := FIniFile.ReadString('Options_Param', 'Param2', ''); // Загружаю из реестра значения
FIniFile.Free;
Form1.ADOConnection1.Close;
Form1.ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + S + ';Persist Security Info=false';
Form1.ADOConnection1.Open;
Form1.ADOTable1.Active := True;

Application.Run;
end;
end.
PM MAIL WWW   Вверх
Anakin
Дата 26.3.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 25.9.2006

Репутация: нет
Всего: нет



Всем Привет.
Я знаю что эта тема не поднималась уже 2 года ) но я решил использовать данный пример который дал Петрович
Прога компелируетса норм но при запуске выдаёт ошибку с таким текстом "невозможно найти устанавливаемый ISAM"
КТо знает чем вызванна данная ошибка??
Или кто знает каким ещё можно способом соеденить DataModule без указания прямого пути.
PM MAIL   Вверх
malor
Дата 4.6.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Настраиваю ADOConnection для работы с таблицей Paradox. После нажатия на кнопке Build... какого поставщика данных нужно выбирать?

Это сообщение отредактировал(а) malor - 4.6.2007, 15:41
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.