Vic*_*Jay 3 sql sql-server ms-access vba stored-procedures
我正在使用 Access 2010 和 Microsoft SQL Server 2008 后端工作。我有一个存储过程,它将新值(由参数提供)插入到表中。分配给参数的值是从存储在文件夹中的文件中获取的。Windows 文件系统用于扫描特定文件夹以生成其中文件的列表。对于每个扫描的文件,都会调用存储过程,并将 FileName 和 QueueId(不带扩展名的文件名)以及其他值用作所调用的存储过程的参数。存储过程用于为表的每个文件创建新记录。
\n\nPublic Function CreateInstrumentInterfaceLogRecords(BatchID As Long, InstrumentName As String) As Boolean\nOn Error GoTo HandleError\n\nDim objFSO As FileSystemObject\nDim AllFiles As Object\nDim objFolder As Object\nDim objFile As Object\nDim FileExt As String\nDim strSQL As String\n\nCreateInstrumentInterfaceLogRecords = False\nstrSQL = "SELECT FileExt FROM tlkpInstrument"\nFileExt = ExecuteScalar(strSQL)\n\n\nSet objFSO = CreateObject("Scripting.FileSystemObject")\nSet objFolder = objFSO.GetFolder(NewPath) \n\n\'NewPath is a public variable that holds the path to the folder\'\n\nSet AllFiles = objFolder.Files\nFor Each objFile In AllFiles\n\nFileName = objFile.FileName\nQuenueId = Replace(FileName, FileExt, "")\n\n\'call procedure to pass values\'\n\nNext objFile\n\nExitProc:\nExit Function\nHandleError:\nMsgBox Err.Number & " " & Err.Description & " in CreateInstrumentInterfaceLogRecords"\nGoTo ExitProc\n\nEnd Function\n
Run Code Online (Sandbox Code Playgroud)\n\n存储过程是:
\n\nCREATE PROCEDURE upInsertToInstrumentInterfaceLog @BatchID nvarchar(60),@InstrumentName nvarchar(60) ,@FIleName nvarchar(60), @QueueId nvarchar(60) \nAS\nINSERT INTO tblInstrumentInterfaceLog (BatchID,InstrumentName,FileName,QueueID,DateOfBatch,Folder)\nVALUES (@BatchID, @InstrumentName,@FileName, @QueueId,getdate(),\'New\');\nGO\n
Run Code Online (Sandbox Code Playgroud)\n\n所有示例并没有真正让我清楚地了解创建连接和调用过程。我得到的一些建议是研究 ExecuteNonquery 的工作原理,因此我一直在尝试查找与之相关的示例。以下是我找到的示例模板之一
\n\nDim conn As ADODB.Connection \nDim cmd As ADODB.Command \n\nSet conn = New ADODB.Connection \nconn.ConnectionString = \xe2\x80\x9cyour connection String here\xe2\x80\x9d \nconn.Open \n\nSet cmd = New ADODB.Command \ncmd.ActiveConnection = conn \ncmd.CommandType = adCmdStoredProc \ncmd.CommandText = "put stored procedure name here" \n\ncmd.Execute \nconn.Close \n\nSet conn = Nothing \nSet cmd = Nothing \n
Run Code Online (Sandbox Code Playgroud)\n\n我不太确定应该从这个示例中获取什么以及如何合并传递值。另外,即使我访问了http://www.connectionstrings.com/,我仍然对如何制作它们感到困惑。任何帮助将不胜感激
\nDim conn As ADODB.Connection \nDim cmd As ADODB.Command \n\nSet conn = New ADODB.Connection \nconn.ConnectionString = \xe2\x80\x9cyour connection String here\xe2\x80\x9d \nconn.Open \n\nSet cmd = New ADODB.Command \ncmd.ActiveConnection = conn \ncmd.CommandType = adCmdStoredProc \ncmd.CommandText = "upInsertToInstrumentInterfaceLog" \n\ncmd.parameters.Append cmd.CreateParameter("@BatchID", adVarChar, adParamInput, 60, "value for BatchID") \ncmd.parameters.Append cmd.CreateParameter("@InstrumentName", adVarChar, adParamInput, 60, "value for InstrumentName") \n\'...\n\ncmd.Execute \nconn.Close \n
Run Code Online (Sandbox Code Playgroud)\n