da ich in VBA recht neu bin benötige ich etwas Hilfe.
Ich habe eine Access Db im Hintergrund und Arbeite mit DAO.Database & DAO.Recordset.
Im unterem Codeteil bin ich in einer Klasse die alle meine Dynamisch Generierten Comboboxen beinhalten und bei DropButtonClick ein Event abfeuern.
Hier selektiere ich ein paar Daten (6001) und möchte sie in die ComboBox einfügen. Leider verursacht der unten zu sehende Codeauszug eine Laufzeit von 40 sec, im Berreich von If .RecordCount <> 0 Then zu Loop.
Da ich eig mit C#, PHP, Java und co arbeite bin ich etwas anderes gewöhnt. Gibt es eine Möglichkeit dies zu optimieren oder ist VBA Excel einfach so langsam?
edit:
Wie es aussieht liegt mein Laufzeitproblem beim auslesen der Spaltenfelder oder beim Zuweisen
edit:
Ok das Problem liegt beim auslesen der Spaltenfelder ".Fields("Neutral_Value")" verursachen meine Laufzeit
edit:
Mein Versuch
arrayTemp(counter) = "(" & !Neutral_Value & ") - " & !Value_DE
statt
arrayTemp(counter) = "(" & .Fields("Neutral_Value") & ") - " & .Fields("Value_DE")
zu verwenden ergab keine Verbesserung ...
edit:
Datenbankverbindung & Abfrage
Code:
Set acc = New Access.Application Set databaseConnection = acc.DBEngine.OpenDatabase(databaseFile) sql = "SELECT Neutral_Value, Value_DE FROM Characteristics" & _ " WHERE Charname = '" & myCmd.Name & "'" & _ " ORDER BY Neutral_Value;" Set recordsetItem = databaseConnection.OpenRecordset(sql)
Code:
With recordsetItem If .RecordCount <> 0 Then Dim arrayTemp() As String Dim counter As Integer Dim tempString As String #Do While Not recordsetItem.EOF Do Until .EOF #ReDim Preserve arrayTemp(counter) #arrayTemp(counter) = "(" & recordsetItem.Fields("Neutral_Value") & ") - " & recordsetItem.Fields("Value_DE") tempString = tempString & "|||||||||||||" & "(" & .Fields("Neutral_Value") & ") - " & .Fields("Value_DE") counter = counter + 1 .MoveNext Loop #myCmd.List = arrayTemp() myCmd.List = Split(tempString, "|||||||||||||") End If End With
Mfg
Kroko