【发布时间】:2014-08-06 14:00:45
【问题描述】:
我正在使用带有 Microsoft SQL Server 2008 后端的 Access 2010。我有一个将新值(由参数提供)插入到表中的存储过程。分配给参数的值是从存储在文件夹中的文件中获得的。 Windows 文件系统用于扫描特定文件夹以列出其中的文件。对于每个扫描的文件,都会调用存储过程,并使用 FileName 和 QueueId(不带扩展名的文件名)以及其他值作为调用的存储过程的参数。存储过程用于为表的每个文件创建新记录。
Public Function CreateInstrumentInterfaceLogRecords(BatchID As Long, InstrumentName As String) As Boolean
On Error GoTo HandleError
Dim objFSO As FileSystemObject
Dim AllFiles As Object
Dim objFolder As Object
Dim objFile As Object
Dim FileExt As String
Dim strSQL As String
CreateInstrumentInterfaceLogRecords = False
strSQL = "SELECT FileExt FROM tlkpInstrument"
FileExt = ExecuteScalar(strSQL)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(NewPath)
'NewPath is a public variable that holds the path to the folder'
Set AllFiles = objFolder.Files
For Each objFile In AllFiles
FileName = objFile.FileName
QuenueId = Replace(FileName, FileExt, "")
'call procedure to pass values'
Next objFile
ExitProc:
Exit Function
HandleError:
MsgBox Err.Number & " " & Err.Description & " in CreateInstrumentInterfaceLogRecords"
GoTo ExitProc
End Function
存储过程是:
CREATE PROCEDURE upInsertToInstrumentInterfaceLog @BatchID nvarchar(60),@InstrumentName nvarchar(60) ,@FIleName nvarchar(60), @QueueId nvarchar(60)
AS
INSERT INTO tblInstrumentInterfaceLog (BatchID,InstrumentName,FileName,QueueID,DateOfBatch,Folder)
VALUES (@BatchID, @InstrumentName,@FileName, @QueueId,getdate(),'New');
GO
所有示例并没有真正让我对创建连接和调用过程有一个可靠的想法。我得到的一些建议是研究 ExecuteNonquery 的工作原理,所以我一直在尝试找到与此相关的示例。以下是我找到的示例模板之一
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Set conn = New ADODB.Connection
conn.ConnectionString = “your connection String here”
conn.Open
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "put stored procedure name here"
cmd.Execute
conn.Close
Set conn = Nothing
Set cmd = Nothing
我不确定我应该从这个例子中得到什么以及如何合并传递值。此外,即使我访问过http://www.connectionstrings.com/,我仍然对如何制作它们感到困惑。任何帮助将不胜感激
【问题讨论】:
-
您的具体问题是什么?您是在问如何将值从 VBA 过程传递到存储过程并调用它?
-
是的,很抱歉没有澄清。我的问题是如何将值传递给并调用存储过程。
-
MSDN 有一个example
标签: sql sql-server vba ms-access stored-procedures