Thema Datum  Von Nutzer Rating
Antwort
Rot Geschwindigkeit VBA Access
10.01.2020 14:08:18 Jörg Eckersberg
NotSolved
10.01.2020 14:11:11 Gast39353
NotSolved
14.01.2020 08:29:51 Mase
NotSolved
21.01.2020 09:01:19 Jörg Eckersberg
NotSolved

Ansicht des Beitrags:
Von:
Jörg Eckersberg
Datum:
10.01.2020 14:08:18
Views:
702
Rating: Antwort:
  Ja
Thema:
Geschwindigkeit VBA Access

Hallo,

ich habe mit Access 2010 und VBA eine Auswertung einer Datenbank ertellt.

Mit Access wurden etwa 10 Datensätze pro Sekunde verarbeitet.

Mit dem Umstieg auf Access 2016 praucht ein Datensatz etwa 2 Sekunden.

Warum gibt es diesen Unterschied mit Fakator 20?

(Zur Optimierung könnte ich die Bildschirmausgabe unterdrücken. Anderseits will ich Bildschirmausgaben.)

Insgesamt sind rund 26.000 Datensätze zu bearbeiten.

Gibt es Anweisungen, die in Access 2016 nicht mehr verwendet werden sollen?

Ich gebe den Quellcode mal mit an:

Ich hole mir Personalstammdaten und anschließend zu dieser Person weitere Informationen. Die Verbindung ist die Peronalnummer, die als Parameter übergeben wird.

Option Compare Database
Option Explicit

Sub Personal_aus_Hal_bearbeiten()
    Dim db As DAO.Database
    Dim qdf_HAL As DAO.QueryDef
    Dim qdf_Abg As DAO.QueryDef
    Dim qdf_Zug As DAO.QueryDef
    Dim qdf_ATZ As DAO.QueryDef
    Dim rs_HAL As DAO.Recordset
    Dim rs_LSA As DAO.Recordset
    Dim rs_abg As DAO.Recordset
    Dim rs_zug As DAO.Recordset
    Dim rs_atz As DAO.Recordset
    Dim anzahl_Personal
    Dim zaehler
    Dim VergleichsPnr As DAO.Parameter
    Dim VergPnr As DAO.Parameter
    
    Set db = CurrentDb
    Set qdf_HAL = db.QueryDefs("Halle_Personal")
    Set rs_HAL = qdf_HAL.OpenRecordset
    Set rs_LSA = db.OpenRecordset("Personal_LSA", dbOpenDynaset)
    rs_HAL.MoveLast
    anzahl_Personal = rs_HAL.RecordCount

    zaehler = 0
    rs_HAL.MoveFirst
    Do While Not rs_HAL.EOF And Not rs_HAL.BOF
        rs_LSA.AddNew
        rs_LSA!pnr = rs_HAL!pnr
        rs_LSA!pnr_LSD = rs_HAL!pnr_LSD
        rs_LSA!name = rs_HAL!name
        rs_LSA!vorname = rs_HAL!vorname
        rs_LSA!titel = rs_HAL!titel
        rs_LSA!gebdat = rs_HAL!gebdat
        rs_LSA!geschl = rs_HAL!geschlecht
        rs_LSA!behind = rs_HAL!behind
        rs_LSA!Status = rs_HAL!Status
        rs_LSA!vws = rs_HAL!vws
        rs_LSA!rws = rs_HAL!rws
        rs_LSA!stammschule = rs_HAL!stammschule
        rs_LSA!stammschultyp = rs_HAL!stammschultyp
        rs_LSA!typstammschule = rs_HAL!typstammschule
        rs_LSA!kapitel = rs_HAL!kapitel
        rs_LSA!lkstammschule = rs_HAL!lkstammschule
        rs_LSA!rv = rs_HAL!rv
        rs_LSA!rv_gruppe = rs_HAL!rv_gruppe
        rs_LSA!vg = rs_HAL!vg
        rs_LSA!db = rs_HAL!db
        rs_LSA!adb = rs_HAL!adb
        rs_LSA!amt = rs_HAL!amt
        rs_LSA!Quelle = rs_HAL!Quelle
        rs_LSA!statusdatum = rs_HAL!statdat
        
        Set qdf_Abg = db.QueryDefs("Halle_Abgänge")
        Set VergleichsPnr = qdf_Abg.Parameters("Vgl_Pnr")
        VergleichsPnr.Value = rs_HAL!pnr
        Set rs_abg = qdf_Abg.OpenRecordset
        If Not rs_abg.EOF Or Not rs_abg.BOF Then
            rs_abg.MoveLast
            rs_LSA!anzahlAbgänge = rs_abg.RecordCount
            rs_abg.MoveFirst
            rs_LSA!abg = rs_abg!abg
            rs_LSA!abgdat = rs_abg!abgdat
            rs_LSA!ABGNr = rs_abg!vorart
            If rs_abg!vorart = "60" Then
                'Altersteilzeit
                rs_LSA!atz_frist_aus50 = rs_abg!atz_frist_50
                
                Set qdf_ATZ = db.QueryDefs("Halle_Teilzeit")
                Set VergPnr = qdf_ATZ.Parameters("Vgl_Pnr")
                VergPnr.Value = rs_HAL!pnr
                Set rs_atz = qdf_ATZ.OpenRecordset
                If Not rs_atz.EOF Or Not rs_atz.BOF Then
                    rs_atz.MoveFirst
                    rs_LSA!atz_art = rs_atz!bezeichnung
                    rs_LSA!ATZ_Beg_aus30 = rs_atz!Beginn
                    rs_LSA!ATZ_Frist_aus30 = rs_atz!frist
                    rs_LSA!ATZ_druck_aus30 = rs_atz!druck
                End If
            
            End If
        End If
               
        Set qdf_Zug = db.QueryDefs("Halle_Zugänge")
        Set VergleichsPnr = qdf_Zug.Parameters("Vgl_Pnr")
        VergleichsPnr.Value = rs_HAL!pnr
        Set rs_zug = qdf_Zug.OpenRecordset
        If Not rs_zug.EOF Or Not rs_zug.BOF Then
            rs_zug.MoveLast
            rs_LSA!anzahlZugänge = rs_zug.RecordCount
            rs_zug.MoveFirst
            rs_LSA!Zugangsgrund = rs_zug!ZugGrund
            rs_LSA!letzterZugang = rs_zug!Beginn
        End If
        
        Set qdf_Zug = db.QueryDefs("Halle_Zugänge_befristet")
        Set VergleichsPnr = qdf_Zug.Parameters("Vgl_Pnr")
        VergleichsPnr.Value = rs_HAL!pnr
        Set rs_zug = qdf_Zug.OpenRecordset
        If Not rs_zug.EOF Or Not rs_zug.BOF Then
            rs_zug.MoveLast
            rs_LSA!AnzahlBefristete = rs_zug.RecordCount
            rs_zug.MoveFirst
            'rs_LSA!Zugangsgrund = rs_zug!ZugGrund
            rs_LSA!letzteBefristung_Beginn = rs_zug!Beginn
            rs_LSA!letzteBefristung_Ende = rs_zug!frist
            rs_LSA!letzteBefristung_Grund = rs_zug!ZugGrund
        End If
        
        Set qdf_Zug = db.QueryDefs("Halle_Überführung_EP13")
        Set VergleichsPnr = qdf_Zug.Parameters("Vgl_Pnr")
        VergleichsPnr.Value = rs_HAL!pnr
        Set rs_zug = qdf_Zug.OpenRecordset
        If Not rs_zug.EOF Or Not rs_zug.BOF Then
            rs_zug.MoveFirst
            rs_LSA!UeberführungEp13 = rs_zug!UeberfuehrungEpl13
        End If
        
        zaehler = zaehler + 1
        If zaehler Mod 20 = 0 Then
            StatusBar ("Datensatz " & zaehler & " von " & anzahl_Personal & " aus Halle")
        End If
        rs_LSA.Update
        rs_HAL.MoveNext
    Loop
    
    Set VergleichsPnr = Nothing
    Set VergPnr = Nothing
    Set rs_abg = Nothing
    Set rs_zug = Nothing
    Set rs_HAL = Nothing
    Set rs_atz = Nothing
    Set qdf_Abg = Nothing
    Set qdf_Zug = Nothing
    Set qdf_ATZ = Nothing
    Set db = Nothing

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Geschwindigkeit VBA Access
10.01.2020 14:08:18 Jörg Eckersberg
NotSolved
10.01.2020 14:11:11 Gast39353
NotSolved
14.01.2020 08:29:51 Mase
NotSolved
21.01.2020 09:01:19 Jörg Eckersberg
NotSolved