앞에서 설명한 도움의 손길 덕분에 레코드 세트의 문자열 사이에서 단어 빈도를 계산하는 기능적 접근 방법이 있습니다. 다음 코드는 원하는 결과를 생성합니다.VBA에 액세스 : Scripting.Dictionary - 테이블로 덤프 하시겠습니까?
마지막 단계는 사전 구조를 currentDB의 Access 테이블로 덤프하는 것입니다. 내가 아래에 주석으로 각 키를 통해 단계 수 있으며 SQL을 통해 테이블에 추가 -하지만 그것은 매우 천천히 승/24K 조건입니다.
은 >> 솔루션 승/업데이트] < <
Private Sub Command0_Click()
Dim counts As New Scripting.Dictionary
Dim word As Variant
Dim desc As String
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset '<< solution
Dim strSQL As String
Dim db As Database
Set db = CurrentDb
strSQL = "SELECT DISTINCT Items.Description FROM Items ;"
Set rs1 = db.OpenRecordset(strSQL, dbOpenDynaset)
Do While Not rs1.EOF
For Each word In Split(rs1!Description, " ")
If Not counts.Exists(word) Then
counts.Add word, 1
Else
counts.Item(word) = counts.Item(word) + 1
End If
Next
rs1.MoveNext
Loop
'>> .AddNew Solution inserted as suggested below <<
rs2 = db.OpenRecordset("Freq", dbOpenTable)
For Each word In counts.Keys
With rs2
.AddNew ' Add new record
.Fields!Term = word
.Fields!Freq = counts(word)
.Update
.Bookmark = .LastModified
End With
Next
rs2.Close
'>> End Solution <<
Set rs1 = Nothing
Set rs2 = Nothing
MsgBox "Done"
End Sub
질문 :
- 내가 키 하나씩 통해 스테핑 대, 대량의 테이블에 사전 덤프 수 있습니까?
이론적 설명 : 테이블 구조를 사용하여 다운 스트림 프레젠테이션 & 조작을 수행하는 것이 더 쉬워졌습니다.
감사합니다.
정말 반복하지 않고 할 수있는 방법이 없다
이 답변을 참조하십시오. .NET에서도 Dictionary와 가장 가까운 것은 키/값 쌍의 배열입니다. DAO 연결은 INSERT 루프로 좋은 성능을 제공해야합니다. – Comintern
사전에 먼저 쓰는 대신 테이블에 직접 추가하는 것이 어떻습니까? 그런 다음 데이터를 개수로 그룹화 할 수 있습니다. –