![]() |
|
|
![]()
|
|
| User |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 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; Но в том и другом случае дельфи (при компиляции) говорит что ошибок нет, а при запуске выдает ошибку на невозможность подключения (и аксцеш виалейшен). Как быть? Я прямо растерялся..... |
|||
|
||||
| Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: нет Всего: 24 |
У меня такаяже проблема, но не динамически подключится получается
http://forum.vingrad.ru/index.php?showtopic=43165&st=15
Там где ты вводиш сообщение для отправки, в панели инструментов, есть открывающийся список, с названием Код, щёлкни справа на стрелку, и выбери например Delphi, появятся где ты вводишь сообщение вот такие штуки [cоde=delphi] [/code] А внутри в пустой строке пиши свой текст программы |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 6 Всего: 55 |
Доступ к DM и ко всем лежащим не нем компонентам возможен только после Application.CreateForm(TDM, DM);. Т.к. до этого, экземпляр DM еще не создан.
Я например делаю это так (упрощенно):
-------------------- Все знать невозможно, но хочется |
|||
|
||||
| User |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
| Anakin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 25.9.2006 Репутация: нет Всего: нет |
Всем Привет.
Я знаю что эта тема не поднималась уже 2 года ) но я решил использовать данный пример который дал Петрович Прога компелируетса норм но при запуске выдаёт ошибку с таким текстом "невозможно найти устанавливаемый ISAM" КТо знает чем вызванна данная ошибка?? Или кто знает каким ещё можно способом соеденить DataModule без указания прямого пути. |
|||
|
||||
| malor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
Настраиваю ADOConnection для работы с таблицей Paradox. После нажатия на кнопке Build... какого поставщика данных нужно выбирать?
Это сообщение отредактировал(а) malor - 4.6.2007, 15:41 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |