Announcement

Collapse
No announcement yet.

Gesammeltes Update-Statement SQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Gesammeltes Update-Statement SQL

    Hallo,


    ich habe 400000 Datensätze die geändert werden müssen. Die SQL-Abfrage sieht etwa so aus:


    DoCmd.SetWarnings False


    Do Until rst.EOF ' Schleife über die Datensätze des Recordsets
    material = rst.Fields("Material")
    line = rst.Fields("HWPLDesc")

    DoCmd.RunSQL "UPDATE tblSAPBW SET [HWPLDesc]='" & line & "' WHERE Material='" & material & "';"


    rst.MoveNext 'nächsten Datensatz ansteuern
    Loop



    Insgesamt sind das denke ich mehr als 400 Updates die gemacht werden. Ich habe schon raus bekommen wie das System nicht immer bei jedem Update frägt ob er diese Datensätze updaten soll (DoCmd.SetWarnings False).
    Leider ist das alles eben immer noch sehr ineffizient -> das System(MS Access) ist dann insgesamt etwa 4h auf "not responding".

    Gibt es eine Möglichkeit alle Updates erstmal zu sammeln und dann alles auf einmal zu machen? Denkt ihr das ist dann effizienter....? Oder gibt es eine andere Lösung?
    Code-Beispiele wären wirklich toll...

    Vielen Dank schon mal!

  • #2
    ich bin kein VB Spezi und auch keiner in Access, aber das sollte möglich sein.
    Dein Such-Stichwort wäre "korreliertes Update"
    Dabei geschieht folgendes
    Die Quelle für Dein Record Set bzw, das nötige SQL dazu wird in das Update Statement eingebunden und liefert so dem einzige(!) Update Statement das "Futter".
    Du kannst Dir dazu beliebige Beispiele anschauen, die aber sehr wahrscheinlich auf Access SQL Notation adaptiert werden müssen.
    Mglw. kannst Du das auch interaktiv mit dem Abfrage Tool von access erstellen und das resultierende SQL aus der SQL Ansicht gleich kopieren.

    Dein Code feuert dann nur noch das eine Update Statement für die gesamte Datenmenge, dürfte erheblich schneller gehen.
    Gruß, defo

    Comment


    • #3
      Kommt das Recordset rst denn aus der selben DB?

      Comment

      Working...
      X