Перехват неверных учетных данных базы данных с использованием VBA для базы данных Oracle - PullRequest
0 голосов
/ 13 октября 2018

У меня есть инструмент для создания отчетов на основе Excel, который подключается к базе данных Oracle для запуска стандартных отчетов и возврата результатов в новую электронную таблицу.У меня нет проблем с подключением к базе данных или выполнением моих отчетов.Учетные данные базы данных предоставляются через пользовательскую форму каждый раз, когда требуется отчет.Я вижу, что этот вопрос задают по-разному, но нет реального ответа, поэтому я постараюсь уточнить.

Текущее поведение

  1. Пользователь предоставляет неверные учетные данные базы данных
  2. Системное окно выскакивает с полями для имени пользователя, пароля и сервера с кнопками "ОК" и "Отмена"

Excel не воспринимает это как ошибку, поэтому я могу 't использовать обычную обработку ошибок.

Требуемое поведение

  1. Excel отлавливает неверные учетные данные, полученные из базы данных Oracle, до того, как системное сообщение всплывает
  2. Если это произойдет, я могу предоставить пользователю свое пользовательское сообщение об ошибке и фирменную форму пользователя.

Я просто пытаюсь избежать системного сообщения по причинам, связанным с пользовательским опытом.Должен ли я попытаться пройти проверку подлинности с помощью базы данных и оценить ответ?Любая помощь будет оценена!Я не уверен, есть ли какой-нибудь код, которым я могу поделиться, который был бы полезен.

Обновлен с фрагментом кода и рабочим процессом:

  1. Пользователь нажимает кнопку Создать отчет
  2. Пользователю предоставляется пользовательская форма с 3 раскрывающимися списками
  3. Пользователь выбирает приложение (назовем это переменное приложение) из первого раскрывающегося списка
  4. Пользователь выбирает тип отчета (давайте назовем эту переменную reportType) из второго раскрывающегося списка
  5. Пользователь выбирает отчет из (давайте назовем этот переменный отчет) 3-й выпадающий список
  6. Пользователь нажимает кнопку Отправить
  7. Пользователь предоставляет имя пользователя и пароль во второй форме пользователя
  8. Пользовательские щелчкиКнопка «Отправить»

Несколько сведений о фрагменте кода ниже: dbProvider - это OraOLEDB.Oracle.pw предоставляется пользователем через форму пользователя на шаге 7. un предоставляется пользователем через форму пользователя на шаге 7. база данных сохраняется в самом макросе приложением на другой вкладке.Макрос ищет базы данных для соответствующего приложения, выбранного пользователем.wsData - это просто вкладка в моей электронной таблице, где отображается результат запроса.

userQuery создается на основе приложения, reportType и отчета, выбранного пользователем.У меня есть несколько пользовательских функций, которые строят запросы на основе того, что выбрал пользователь.У меня нет проблем с ними, и они работают нормально.

Вот так Excel подключается к базе данных оракула. ​​

With wsData.ListObjects.Add(SourceType:=0, Source:= _
    "OLEDB;Provider=" & dbProvider & ";Password=" & pw & ";User ID=" & un & ";Data Source=" & database, Destination:=wsData.Cells(lrData + 1, 1)).QueryTable
    .CommandType = xlCmdSql
    .CommandText = userQuery
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .Refresh BackgroundQuery:=False
End With

Это окно, которое появляется, что япытается не выскакивать:

Oracle Box

...