| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Проблема с подключением ADOConnection |
| Автор: User 5.3.2005, 09:53 |
| Я сохраняю путь к БД в реестре. Использую БД 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; Но в том и другом случае дельфи (при компиляции) говорит что ошибок нет, а при запуске выдает ошибку на невозможность подключения (и аксцеш виалейшен). Как быть? Я прямо растерялся..... |
| Автор: Zero 5.3.2005, 12:10 | ||
| У меня такаяже проблема, но не динамически подключится получается http://forum.vingrad.ru/index.php?showtopic=43165&st=15
Там где ты вводиш сообщение для отправки, в панели инструментов, есть открывающийся список, с названием Код, щёлкни справа на стрелку, и выбери например Delphi, появятся где ты вводишь сообщение вот такие штуки [cоde=delphi] [/code] А внутри в пустой строке пиши свой текст программы |
| Автор: Петрович 5.3.2005, 12:11 | ||
| Доступ к DM и ко всем лежащим не нем компонентам возможен только после Application.CreateForm(TDM, DM);. Т.к. до этого, экземпляр DM еще не создан. Я например делаю это так (упрощенно):
|
| Автор: User 5.3.2005, 13:36 |
| Все получилось. Требовалось просто подумать. Привожу полученный код. 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. |
| Автор: Anakin 26.3.2007, 16:18 |
| Всем Привет. Я знаю что эта тема не поднималась уже 2 года ) но я решил использовать данный пример который дал Петрович Прога компелируетса норм но при запуске выдаёт ошибку с таким текстом "невозможно найти устанавливаемый ISAM" КТо знает чем вызванна данная ошибка?? Или кто знает каким ещё можно способом соеденить DataModule без указания прямого пути. |
| Автор: malor 4.6.2007, 15:41 |
| Настраиваю ADOConnection для работы с таблицей Paradox. После нажатия на кнопке Build... какого поставщика данных нужно выбирать? |