VBA数据层错误处理

时间:2011-02-02 10:34:21

标签: excel vba vb6 error-handling

我有一些遗留的Excel文件,包含大量对存储过程和数据库连接的调用,所有这些都是以记录集的旧方式完成的......

因为在VBA中没有try-catch的概念 - 最终在.NET中是否有任何最佳实践可以应用于拥有更加可靠的数据访问层?我想有一个很好的例子,说明如何打开连接,执行需要一些参数的存储过程,然后在任何情况下成功或错误,关闭连接并释放资源。

2 个答案:

答案 0 :(得分:7)

在VBA中你必须使用On Error块:它很乱,但它可以工作

On Error Goto ConnectionFail
' open connection
on Error GoTo 0
...
On Error GoTo QueryFail
' execute querys etc
on Error goto 0
...
Cleanup:
' close connection destroy objects etc
Exit Sub
ConnectionFail
On Error GoTo 0
' handle failure
GoTo Cleanup
QueryFail
On Error GoTo 0
' handle failure
GoTo Cleanup
End Sub

答案 1 :(得分:4)

我现在实际上使用了不同的方法,我创建了一个.NET托管数据层并将其导出为COM类,按照此处的说明进行操作:Calling .NET from VBA这样我必须部署并注册COM程序集使用excel文件,我承认这有点痛苦,但至少我能以正确的方式处理数据访问并使用C#,ADO.NET等......