ich baue gerade eine Anwendung, die Aktienkursdaten in Excel und Access bearbeitet/speichert.
Dabei stehe ich vor folgender Herausforderung:
Zu einem Wertpapier speichere ich in Access die Informationen
WKN // Tag // TagNummer // Woche // Öffnungskurs // Höchstkurs // Tiefstkurs // Schlusskurs // Datenquelle // Importdatum
Nun führe ich über PowerQuery monatlich Datenupdates vor und füge diese dann in Access hinzu.
Dazu prüfe ich dann jeweils ab, ob zu einem Datum schon ein Kurs vorliegt oder nicht.
Wenn ja, dann lösche ich den entsprechenden Datensatz und schreibe meinen neuen Datensatz in die Datenbank.
Wenn nein, dann wird der Datensatz "einfach so" in die Datenbank geschrieben.
Das Hinzufügen der Datensätze mache ich für ca. 1000 Wertpapiere ... und es dauert ewig. Wahrscheinlich, weil ich für jeden einzelnen Datensatz eine Anfrage an Access schicke.
Daher meine Frage: Kann ich die Daten zu einem Wertpapier auch in einem Rutsch per SQL in die Datenbank schieben?
Wenn ja, dann würde ich einfach in einem ersten Schritt alle Datensätze in der Datenbank ab dem Zeitpunkt löschen zu denen ich neue Daten habe ... und dann die neuen Daten in die Datenbank schreiben
Aktuell sieht mein Code wie folgt aus:
' Neue Daten in die Datenbank schreiben
For lngLoop3 = lngStartChange To UBound(varAlleTage)
If varAlleTage(lngLoop3, 10) = "Neu" Then
rstKURS.Open "SELECT * FROM Kurse WHERE WKN = '" & strWKN & "' AND Kursdatum = " & strDateSQL(CDate(varAlleTage(lngLoop3, 1))) & ";"
If rstKURS.RecordCount = 0 Then
rstKURS.Close
ElseIf rstKURS.RecordCount = 1 Then
rstKURS.Delete
rstKURS.Close
End If
rstKURS.Open "Kurse"
rstKURS.AddNew
rstKURS.Fields("WKN") = strWKN
rstKURS.Fields("Kursdatum") = CDate(varAlleTage(lngLoop3, 1))
rstKURS.Fields("TagNr") = CLng(varAlleTage(lngLoop3, 2))
rstKURS.Fields("Woche") = CLng(varAlleTage(lngLoop3, 3))
rstKURS.Fields("Open") = CDbl(varAlleTage(lngLoop3, 4))
rstKURS.Fields("Close") = CDbl(varAlleTage(lngLoop3, 7))
rstKURS.Fields("High") = CDbl(varAlleTage(lngLoop3, 6))
rstKURS.Fields("Low") = CDbl(varAlleTage(lngLoop3, 5))
rstKURS.Fields("Quelle") = CStr(varAlleTage(lngLoop3, 8))
rstKURS.Fields("Importdatum") = Date
rstKURS.Update
rstKURS.Close
End If
Next lngLoop3
Vielen Dank für Eure Ideen zur Verbesserung ... und einen schönen Sonntag
Peter