2017-05-23 2 views
2

쉼표로 구분 된 값이있는 하나의 필드가있는 액세스 2013 테이블이 있습니다. 나는 그렇게다중 필드로 분할 된 필드 분할

uPPID number 
value1 short text 
value2 short text 
value3 short text 
value4 short text 

항상 수를 수용하기에 충분한 "값"필드가 것이다 될 것이다, 그래서 나는 동적으로 테이블을 생성하고 같은 구조로 결과를 구문 분석 할 필요가 두 번째 테이블을 만들었습니다 파싱했다.

uppID values 
aeo031 boat, goat, hoat, moat 

그리고 필드 매핑이 얼마나 많은 하나 개의 필드에서 CSV 목록을 구문 분석 VBA를 액세스 할 수 있습니다

uPPID = aeo031 
value1 = boat 
value2 = goat 
value3 = hoat 
value4 = moat 

같은

같이 가고 싶은 것 : 샘플 데이터는 같다?

답변

0

아마도 대상 테이블에 레코드를 하나씩 삽입하는 다음 VBA 루프보다 더 빠르고 더 나은 솔루션이있을 수 있습니다. 그러나 예를 들어 그것은 일을합니다.

  • TableCSV

    은 소스 테이블
  • TableFields의 이름이 대상 테이블
  • 상수 maxValues의 이름입니다 구성 후 동적으로 INSERT INTO 문을 구성
  • 쿼리 가능한 필드 values의 수를 지정합니다 values 필드; 그것은 모든 열을 제공하기 위해 그것을 완료하고 주위 인용 부호 '...'을 추가합니다. (모든 열 값을 지정하지 않고 삽입 할 수 있다면 단순화 할 수 있습니다.)

.

Sub splitTable() 
    Const maxValues As Long = 4 ' <-- Set to number of value fields in destination table 
    Dim query As String, values As String, rs 
    Set rs = CurrentDb.OpenRecordset("TableCSV") 

    Do Until rs.EOF 
    values = rs!values ' next we add commas to provide all fields 
    values = values & String(maxValues - UBound(Split(values, ",")) - 1, ",") 
    values = "'" & Replace(values, ",", "','") & "'" ' 'a', 'b', '', '' etc 
    query = "INSERT INTO TableFields VALUES (" & rs!uPPID & "," & values & ")" 
    Debug.Print query 

    CurrentDb.Execute query 
    rs.moveNext 
    Loop 
End Sub