0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 27
1

Программная настройка ADOConnection

18.03.2017, 15:27. Показов 2907. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал DataModule
Разместил ADOConnection название DBConnecter,
ADOQuery название SQLQuery,
и дальше все по стандартной схеме
Написал следующий код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var
  //Индикатор выбора пользователя
  URInd: Cardinal;
  //Файл настроек
  Ini: Tinifile;
  //путь к скомпилированному файлу, АДОпровайдер, путь к базе данных, соответственно
  GenDir, Provider, DBPath: String;
begin
  //Определились с путем к приложению
  GenDir:= ExtractFileDir(Application.ExeName);
  //Открыли или создали файл настроек
  Ini:= Tinifile.Create(GenDir + '/Settigs.ini');
  //Индикатору необходимо первоначальное значение
  URInd:= 0;
  //Если пользователь в случае ошибки выберет вариант не настраивать и не перезагружать приложение тогда выходим из цикла
  while URInd <> 7 do
  begin
    //отслеживаем исключения
    try
      //Провайдер для открытия последнего Microsoft Office Access 
      Provider:= 'Provider=Microsoft.ACE.OLEDB.16.0;Data Source=';
      //Получаем путь к базе данных из файла настрое, если этого параметра нет, будем пытаться открыть базу данных в папке приложения
      DBPath:= ini.ReadString('DBSettings', 'path', GenDir + 'DB.accdb');
      //Обращаемся к модулю данных (библиотеку Unit от этого модуля подключил)
      with GeneralDM do
      begin
        //На этом моменте возникает ошибка (настройка ADOConnection)
        BDConnecter.ConnectionString:= provider+DBPath+';Persist Security Info=False;';
        //Подключаемся к базе данных
        BDConnecter.Connected:= True;
        //Отправляем SQL запрос
        SQLQuery.Active:= True;
      end;
    //Выходим из цикла
    break;
    //Если возникла ошибка
    except
      //Фиксируем ошибку
      on E: Exception do
      begin
        //Фиксируем реакцию пользователя на ошибку
        URInd:= MessageDlg(E.ClassName+
          ' Не удолось подключится к базе, код ошибки: '+E.Message+
          ''#13#10#13#10'хотите провести настройку вручную?',
          mtError, [mbYes, mbRetry, mbNo], 0);
        //Корректируем поведение программы
        case URInd of
          //Пользователь решил провести настройку вручную
          6:  if OpenDialog1.Execute then
                begin
                  //Фиксируем базу данных выбранную пользователем в файле настроек
                  ini.WriteString('DBSettings', 'path', OpenDialog1.FileName);
                end;
          //Пользователь решил выйти из программы
          7: Application.Terminate;
        end;
      end;
    end;
  end;
end;
Самое странное что если я компонент настраиваю вручную ошибки не происходит

Добавлено через 3 минуты
Программа с ini взаимодействует и берет корректные значения [Window Title]
Вот код ошибки:
EAccessViolation Access violation at address 004C125F in module 'HelperOkiDoki.exe'. Read of address 00000058

Добавлено через 43 минуты
Один и тот же параметр connectionstring при настройке вручную ошибку не выдает, а программно выдает ошибку, возможно есть какое-то свойство которое я не учел или что-то не так прописываю

Добавлено через 16 минут
Проблема была в том что я пытался обратится к модулю данных на момент создания главной формы приложения, перенес код в процедуру create модуля данных все заработало
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2017, 15:27
Ответы с готовыми решениями:

ADOConnection, настройка
Здравствуйте, у меня проблема с ADOConnection. Есть программка, к неи подключена БД(Access),...

Программная настройка MasterSource и MasterFields
procedure TForm1.ComboBox2Change(Sender: TObject); begin if ComboBox2.ItemIndex = 0 then...

Программная настройка BDLookupComboBox
Есть у меня форма с эдитами и BDLookupComboBox-ами. На этой форме я ввожу данные в эдиты и в...

Программная настройка DCOM
Нужно программно настроить DCOM.Меняю в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole)...

1
5319 / 4254 / 1051
Регистрация: 29.08.2013
Сообщений: 26,800
Записей в блоге: 3
18.03.2017, 21:55 2
21 строка - а если провайдера такого нет?

30 и 32 строка - нужен отдельный try\except

42 строка - сообщение не нужно, нужно просто передать из функции код ошибки.
передаешь 0 - все нормально и дальше уже работаешь
-1 - неизвестная ошибка
>0 - обрабатываешь
0
18.03.2017, 21:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2017, 21:55
Помогаю со студенческими работами здесь

Программная настройка роутера TP-Link
Доброго времени. У меня такая проблема. delphi xe 10 + indy 10 (idhttp, coockie manager) Пишу...

Программная настройка начальной страницы
Доброго времени суток.Надобно сделать программное изменение начальной страницы при запуске...

Программная настройка чувствительности микрофона
Добрый день. Опять я. Такой вопрос: как средствами Qt5.x настроить чувствительность микрофона, ибо...

Программная настройка отбора формы списка
Всем привет! Подскажите пожалуйста, как внешней обработкой задать пользователю отбор в форме списка.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru