CSV 파일을 한 줄씩 읽는 대신 각 줄마다 무엇인가를하는 대신 파일을 ADO 레코드 집합으로 열어야한다고 생각합니다. Access 대상 테이블에 대한 DAO 레코드 집합을 엽니 다.
그런 다음 ADO 레코드 집합의 각 행에있는 필드를 반복하여 해당 값을 DAO 레코드 집합의 새 행에 추가 할 수 있습니다. 대상 테이블에 CSV 필드와 이름이 같고 호환 가능한 데이터 유형이있는 필드가 포함되어 있으면이 작업이 상당히 원활해질 수 있습니다.
Public Sub Addikt()
#If ProjectStatus = "DEV" Then
' needs reference for Microsoft ActiveX Data Objects
Dim cn As ADODB.Connection
Dim fld As ADODB.Field
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
#Else ' assume PROD
Const adCmdText As Long = 1
Const adLockReadOnly As Long = 1
Const adOpenForwardOnly As Long = 0
Dim cn As Object
Dim fld As Object
Dim rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
#End If
Const cstrDestination As String = "tblMaster"
Const cstrFile As String = "temp.csv"
Const cstrFolder As String = "C:\share\Access"
Dim db As DAO.Database
Dim rsDao As DAO.Recordset
Dim strConnectionString As String
Dim strName As String
Dim strSelect As String
strConnectionString = "Provider=" & _
CurrentProject.Connection.Provider & _
";Data Source=" & cstrFolder & Chr(92) & _
";Extended Properties='text;HDR=YES;FMT=Delimited'"
'Debug.Print strConnectionString
cn.Open strConnectionString
strSelect = "SELECT * FROM " & cstrFile
rs.Open strSelect, cn, adOpenForwardOnly, _
adLockReadOnly, adCmdText
Set db = CurrentDb
Set rsDao = db.OpenRecordset(cstrDestination, _
dbOpenTable, dbAppendOnly + dbFailOnError)
Do While Not rs.EOF
rsDao.AddNew
For Each fld In rs.Fields
strName = fld.Name
rsDao.Fields(strName) = rs.Fields(strName).value
Next fld
rsDao.Update
rs.MoveNext
Loop
rsDao.Close
Set rsDao = Nothing
Set db = Nothing
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
이
이다 내가 그 절차 저장 모듈의 선언 구역 :
Const cstrDestination As String = "tblMaster"
Const cstrFile As String = "temp.csv"
Const cstrFolder As String = "C:\share\Access"
참고 :이 상수의 값은 시스템에서 테스트하는
Option Compare Database
Option Explicit
#Const ProjectStatus = "DEV" '"DEV" or "PROD"
변경 폴더 이름 뒤에 백 슬래시가 없습니다.
파일 이름을 상수로 남겨 두지 않고 매개 변수로 전달하려면이 절차를 적용해야합니다. CSV 파일이 둘 이상의 디렉토리에 저장되어있는 경우 폴더 이름도 매개 변수로 전달할 수 있습니다.
하나의 파일에 대해 파일을 저장하는 방법을 보여 주면 충분합니다. 여기에서 모든 CSV 파일을 처리 할 수 있습니다. 또한 오류 처리 추가를 고려하십시오.
귀하의 접근 방법이 맞는 것 같습니다. 지금까지 가지고있는 것을 게시하고 (실패한 섹션) 커뮤니티가 당신을 더 잘 도울 수 있어야합니다. – Pynner