【发布时间】:2019-03-20 16:40:45
【问题描述】:
我在过去运行单线程 SP 方面取得了很好的成功,等待“0”或“-1”回复表示成功,使用:
Set cnn = New ADODB.Connection
cnn.CursorLocation = adUseClient
cnn.ConnectionString = "driver={SQL Server};server=" & TempVars!my_ip & ";Trusted_Connection=no;Database=" & TempVars!my_Database & ";UID=username;PWD=password"
cnn.CommandTimeout = 0
cnn.Open
strSQL = "ExportToCSVZip 'myTable', '\\192.168.242.147\InventoryProcessing\Exports\', 'ProdCIVProcess', 'Y';"
Set rs = cnn.Execute(strSQL)
'SP Result -1 = Success, 0 = Fail
If rs.Fields(0) = -1 Then
msgbox "Done"
Else
msgbox "Fail"
End If
我可以使用以下方式异步运行:
cnn.Execute strSQL, adExecuteNoRecords, adAsyncExecute
但我不清楚这种形式的正确语法来确定返回标志。我的尝试返回了一个“序数”错误。
建议?
【问题讨论】:
-
@June7 这没有回答如何异步执行。从异步运行的存储过程返回值要复杂得多。
-
更复杂或不可能。我唯一能找到的涉及Android stackoverflow.com/questions/15739635/…
-
当然不是不可能。从异步调用的过程中返回值可能有点微不足道,这可能就是为什么没有很多关于它们的答案的原因,但是 VBA 并没有真正做异步的东西,所以这里也没有太多关于它的信息。稍后我会看看我是否有时间写下并测试答案
-
我已经设法解决了这个问题。 SP 在 FTP 站点上创建一个临时文件,该文件在 SP 完成之前被删除。我正在测试临时文件是否存在 - 当我发现它丢失时,我认为 SP 已完成。不理想,但到目前为止,通过测试大小文件似乎可靠。