Благодаря полезной руке, предоставленной ранее, у меня есть функциональный подход для вычисления частоты слов среди строк в наборе записей. Следующий код дает желаемый результат.Доступ к VBA: Scripting.Dictionary - Dump to Table?
Последний шаг будет заключаться в том, чтобы вывести структуру словаря в таблицу Access в currentDB. Я могу шагнуть через каждый ключ, как это прокомментировано ниже, и добавить к таблице через SQL - но это очень медленные условия w/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
Вопрос:
- Могу ли я сбросить словарь в таблицу в BULK, против шагая через клавиши одну за другой?
Обоснование: проще (для меня) выполнять представление ниже по потоку & манипуляции с использованием структуры таблицы.
Спасибо!
Там действительно не способ сделать это без зацикливания. Даже в .NET наиболее близким из словарей является массив пар ключ/значение. Соединения DAO должны обеспечивать хорошую производительность с помощью цикла INSERT. – Comintern
Почему бы не добавить это непосредственно в таблицу, вместо того, чтобы сначала писать в словарь. Затем вы можете просто сгруппировать данные со счетом. –