提问人:BernsJ 提问时间:8/14/2023 最后编辑:ChenmunkaBernsJ 更新时间:8/16/2023 访问量:92
如何使用 MS Excel 驱动程序将工作表读取到数据表中时解决“客户端任务过多”错误
How to resolve "too many client tasks" error when using MS Excel Driver to read worksheet into a data table
问:
社区
我从这个线程中获取了一些 VB 代码,以便将工作表内容读取到数据表中。
Public Shared Function ReadExcelIntoDataTable(ByVal FileName As String, ByVal SheetName As String) As DataTable
Dim RetVal As New DataTable
Dim strConnString As String
strConnString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & FileName & ";"
Dim strSQL As String
strSQL = "SELECT * FROM [" & SheetName & "$]"
Dim y As New Odbc.OdbcDataAdapter(strSQL, strConnString)
y.Fill(RetVal)
Return RetVal
End Function
该代码在前 3-4 次使用中有效,但随后发生此错误:
错误 [08004] [Microsoft] [ODBC Excel 驱动程序] 客户端任务过多。
在此处<<图片>>在此处输入图片描述
我必须退出/重新启动应用程序才能继续开发。大约四次运行后,错误再次发生,我必须重新启动应用程序。
我得出结论,连接没有关闭,因此导致“客户端任务过多”。对错误消息的搜索还表明已关闭的连接存在问题。
有关如何更改代码以防止错误的任何建议将不胜感激
研究错误消息无助于确定关闭连接的任何特定方法。
答:
1赞
Craig
8/14/2023
#1
看起来这是一个常见问题的新表现形式。 实现(间接地,在基类中向上几个级别)。每当您使用实现的东西时,这是您在完成它时必须调用的信号。通常是因为需要释放某种资源分配。OdbcDataAdapter
IDisposable
IDisposable
Dispose
在这种情况下,正确的做法是使用一个块,该块将在退出块时负责呼叫您(并且还要注意确保即使在发生异常的情况下也会发生):Using
Dispose
Using y = New Odbc.OdbcDataAdapter(strSQL, strConnString)
y.Fill(RetVal)
End Using
评论
OdbcDataAdapter
IDisposable
y
Using
Dispose
Using
Using y = New Odbc.OdbcDataAdapter...
Dispose