我有一个基于Excel的报告工具,该工具可连接到oracle数据库以运行罐头报告并在新电子表格中返回结果。连接到数据库或运行报告没有任何问题。每次需要报告时,都会通过用户表单提供数据库凭据。我看到这个问题以很多不同的方式提出,但没有真正的答案,所以我会尽力弄清楚。
当前行为
Excel不会将其视为错误,因此我无法使用常规错误处理。
期望的行为
出于用户体验的原因,我只是在尝试避免系统消息。我应该尝试对数据库进行身份验证并评估响应吗?任何帮助,将不胜感激!我不确定是否可以共享任何代码。
使用代码段和工作流程进行了更新:
有关以下代码段的一些注意事项: 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
这是我要阻止弹出的弹出框: