系統背景:我在Access 2010中使用用戶界面和存儲數據庫的Microsoft SQL Server 2008後端。將分隔文件(.cvs)中的行導入到MS-Access表中
問題背景:我實驗室中的一臺機器以.csv文件的形式輸出結果。這些文件被放置在服務器上的一個文件夾中。目前,結果被手動輸入到數據庫中。我們的目標是在訪問程序(VBA)中逐行讀入文件中的數據,並將文件的每一行插入數據庫中的特定表中。我被指示給我們ADO對象來完成這個任務。
進度:我的問題在於嘗試讀取分隔文件的每一行。我被給了一個參考網站http://msdn.microsoft.com/en-us/library/ms974559.aspx,但是當我嘗試在字幕下實施示例時,我如何使用ADO查詢文本文件?和我得到了不少錯誤堅持方法沒有被發現具體連接。打開。我想獲得每行的值並將它們存儲到臨時變量中以傳遞給存儲過程。存儲過程已經創建並且已經創建了插入新記錄的過程。
旁註代碼:該代碼是一個較低級別的函數,這意味着它不會同時讀取該文件夾中的所有.csv文件。該函數由一個更高級別的函數給出一個文件名,並從該文件名中讀取指定文件中的每一行,並將其存儲在表「tblICPMS」中。這是什麼樣的.cvs文件時看起來在Excel
這裏開了像樣品是我的代碼:
Public Function ImportICPMS(ThisFileName As String, ThisQueueID As Long, BatchID
As Long, InstrumentName As String, TechId As Long)
On Error GoTo HandleError
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Dim obj_fso As Object
Dim objconnection As connection
Dim objRecordset As Recordset
Dim strpathtotextfile As String
'test if file exists (newpath is a public path to folder)'
Set obj_fso = CreateObject("Scripting.FileSystemObject")
If obj_fso.FileExists(NewPath & "\" & ThisFileName) Then
Else
Err.Raise vbObjectError + 1000, "MyProjectName.MyObjectName", "file " & ThisFileName & " for " & InstrumentName & " not found" 'if false error is raised
End If
Set objconnection = CreateObject("ADODB.connection") 'create ADO objects'
Set objRecordset = CreateObject("ADODB.recordset")
strpathtotextfile = NewPath & "\" 'path to folder where file resides'
objconnection.Open "Provider=SQLOLEDB.1;Data Source=strpathtotextfile;Extended Properties=;HDR = YES;FMT = Delimited"
objrecordset.Open "SELECT * FROM " & ThisFileName,objconnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
'I do not know what Wscript.Echo means but I want to save the acquired values into
temp variables to pass them to a stored procedure that inserts them into the table'
Wscript.Echo objRecordset.Fields.Item("Sample Name")
Wscript.Echo objRecordset.Fields.Item("Date and Time Acquired")
Wscript.Echo objRecordset.Fields.Item("Element Full Name")
Wscript.Echo objRecordset.Fields.Item("Concentration")
Wscript.Echo objRecordset.Fields.Item("Units")
'code to insert rows into table would probably go here'
'code to clear out local objects would go here'
objRecordset.MoveNext
Loop
objRecordset.Close
objconnection.Close
我不包括代碼的其餘部分也不是存儲過程,但我可以的,如果你有人想看到他們。我只想將我插入的代碼集中在我正在處理的部分上。
另外CONST爲adCmdText =&H0001不斷自動改變到CONST爲adCmdText = H1 – VictoriaJay