使用VBA捕获错误的数据库凭据到oracle数据库

时间:2018-10-13 02:07:37

标签: excel database vba oracle user-experience

我有一个基于Excel的报告工具,该工具可连接到oracle数据库以运行罐头报告并在新电子表格中返回结果。连接到数据库或运行报告没有任何问题。每次需要报告时,都会通过用户表单提供数据库凭据。我看到这个问题以很多不同的方式提出,但没有真正的答案,所以我会尽力弄清楚。

当前行为

  1. 用户提供了不正确的数据库凭据
  2. 使用“确定”和“取消”按钮弹出系统框,其中包含用于用户名,密码和服务器的字段

Excel不会将其视为错误,因此我无法使用常规错误处理。

期望的行为

  1. Excel在弹出系统消息之前捕获了从oracle数据库返回的不正确凭据,
  2. 如果发生这种情况,我可以向用户显示我的自定义错误消息和品牌用户表单。

出于用户体验的原因,我只是在尝试避免系统消息。我应该尝试对数据库进行身份验证并评估响应吗?任何帮助,将不胜感激!我不确定是否可以共享任何代码。

使用代码段和工作流程进行了更新:

  1. 用户单击“创建报告”按钮
  2. 向用户显示带有3个下拉菜单的用户表单
  3. 用户从第1个下拉列表中选择应用程序(我们称其为变量应用程序)
  4. 用户从第二个下拉列表中选择报告类型(我们称此变量为reportType)
  5. 用户从第3个下拉列表中选择报告(以下称此变量报告)
  6. 用户单击“提交”按钮
  7. 用户在第二个用户表单中提供用户名和密码
  8. 用户单击“提交”按钮

有关以下代码段的一些注意事项: dbProvider是OraOLEDB.Oracle。 用户在步骤7中通过用户表单提供pw。 用户在步骤7中通过用户表单提供un。 数据库由另一个选项卡上的应用程序存储在宏本身中。宏查找用户选择的各个应用程序的数据库。 wsData只是我的电子表格中的一个标签,其中显示了查询结果。

userQuery是根据用户选择的应用,reportType和报告创建的。我有一些自定义函数可以根据用户选择的内容构建查询。我对此没有任何问题,它们运行良好。

这是Excel连接到oracle数据库的方式。

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

0 个答案:

没有答案