У меня есть инструмент для создания отчетов на основе Excel, который подключается к базе данных Oracle для запуска стандартных отчетов и возврата результатов в новую электронную таблицу.У меня нет проблем с подключением к базе данных или выполнением моих отчетов.Учетные данные базы данных предоставляются через пользовательскую форму каждый раз, когда требуется отчет.Я вижу, что этот вопрос задают по-разному, но нет реального ответа, поэтому я постараюсь уточнить.
Текущее поведение
- Пользователь предоставляет неверные учетные данные базы данных
- Системное окно выскакивает с полями для имени пользователя, пароля и сервера с кнопками "ОК" и "Отмена"
Excel не воспринимает это как ошибку, поэтому я могу 't использовать обычную обработку ошибок.
Требуемое поведение
- Excel отлавливает неверные учетные данные, полученные из базы данных Oracle, до того, как системное сообщение всплывает
- Если это произойдет, я могу предоставить пользователю свое пользовательское сообщение об ошибке и фирменную форму пользователя.
Я просто пытаюсь избежать системного сообщения по причинам, связанным с пользовательским опытом.Должен ли я попытаться пройти проверку подлинности с помощью базы данных и оценить ответ?Любая помощь будет оценена!Я не уверен, есть ли какой-нибудь код, которым я могу поделиться, который был бы полезен.
Обновлен с фрагментом кода и рабочим процессом:
- Пользователь нажимает кнопку Создать отчет
- Пользователю предоставляется пользовательская форма с 3 раскрывающимися списками
- Пользователь выбирает приложение (назовем это переменное приложение) из первого раскрывающегося списка
- Пользователь выбирает тип отчета (давайте назовем эту переменную reportType) из второго раскрывающегося списка
- Пользователь выбирает отчет из (давайте назовем этот переменный отчет) 3-й выпадающий список
- Пользователь нажимает кнопку Отправить
- Пользователь предоставляет имя пользователя и пароль во второй форме пользователя
- Пользовательские щелчкиКнопка «Отправить»
Несколько сведений о фрагменте кода ниже: 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