Thema Datum  Von Nutzer Rating
Antwort
Rot Performance-Unterschied Access 2007/2010 ?
07.09.2012 10:56:14 Sebastian
NotSolved

Ansicht des Beitrags:
Von:
Sebastian
Datum:
07.09.2012 10:56:14
Views:
1420
Rating: Antwort:
  Ja
Thema:
Performance-Unterschied Access 2007/2010 ?

Hallo Leute.

 

Gibt es einen deutlichen Performance-Unterschied von Access 2007 zu Access 2010? Denn ich habe auf meinem Rechner (Access 2010, I7-Prozessor, 4 GB Arbeitsspeicher) einen Quellcode per VBA erstellt, der in 1 - 2 min durchläuft. Auf meinem Rechner  im Büro(Access 2007, Pentium Dual.Core, 2 GB Arbeitsspeicher) dauert der gleiche Code jedoch 15 min.

Liegt der Unterschied an der Hardware oder an meinem Quellcode??

 

Viele Grüße,

Sebastian

 

Public Sub Array_Preisliste()

Dim Max_Ziffer As Integer
Max_Ziffer = 20

' "Tabelle" jetzt als Variable für die zu öffnende Tabelle
Dim Tabelle As String
Tabelle = "Digits_Komplett"

Dim db As DAO.Database
Dim rst_out As DAO.Recordset

Set db = CurrentDb
Set rst_out = db.OpenRecordset(Tabelle)

' erster Datensatz zuerst
rst_out.MoveFirst


' Variable "Anzahl" als Double
Dim Anzahl As Variant


' "Anzahl" gibt nun die Anzahl der Zeilen aus der "Tabelle" aus
Anzahl = DCount("Digits", Tabelle)


' Deklaration
Dim Preisliste(), Zwei(), Drei()
Dim Drei_D()  As Double
Dim Ziffern_Var()

Dim Speicher()

ReDim Drei_D(1 To Max_Ziffer, 1 To 5, 1 To Anzahl)


ReDim Preisliste(1 To 4, 1 To Anzahl), Zwei(1 To 4, 1 To Anzahl), Drei(1 To 4, 1 To Anzahl)    ' da "Anzahl" variabel -> ReDim !!
ReDim Speicher(1 To 4, 1 To 5, 1 To Anzahl)
ReDim Ziffern_Var(Max_Ziffer)

Dim a As Double
Dim d, e, i, z As Double
Dim m, s, Länge, AnzahlZiffern, Digit As Integer
Dim Ziffer As Double
AnzahlZiffern = 0     
d = 1
e = 1
z = 1


' Speicherung in Preisliste() -> hier stehen alle daten untereinander
For i = 1 To Anzahl Step 1
    Preisliste(1, i) = rst_out![Digits]
    Preisliste(2, i) = rst_out![Tabelle_Verizon_Price]
    Preisliste(3, i) = rst_out![Tabelle_Versatel_Price]
    Preisliste(4, i) = rst_out![Tabelle_Telefonica_Price]
    
    ' "Ziffer" = der x-stellige momentane Digits  z.B.: Digits = 287 -> Ziffer = 3
    Ziffer = Len(Preisliste(1, i))
        ' ist das Array an der Stelle 3 (siehe oben) = 0
        If Ziffern_Var(Ziffer) = 0 Then
            ' -> dann ab jetzt = 1
            Ziffern_Var(Ziffer) = 1
        
        Else
        ' ansonsten erhöhe um 1
        Ziffern_Var(Ziffer) = Ziffern_Var(Ziffer) + 1
        'Debug.Print Ziffern_Var(5)
    
        End If
    
        If Anzahl_Ziffern < Ziffer Then
            Anzahl_Ziffern = Ziffer
        End If
        
    
    
    
    ' Abfrage, wieviele Ziffern vorhanden sind -> Unterteilung in 3-D-Array "Drei_D"
    
    Digit = Len(Preisliste(1, i))
    
        If Drei_D(Digit, 5, 1) = 0 Then
            Drei_D(Digit, 5, 1) = 1
            
        Else
            Drei_D(Digit, 5, 1) = Drei_D(Digit, 5, 1) + 1
        End If
        
        
        For j = 1 To 4
        
            If IsNull(Preisliste(j, i)) Then
                Preisliste(j, i) = 0
            End If
            
            Drei_D(Digit, j, Drei_D(Digit, 5, 1)) = Preisliste(j, i)
        Next j
        
    rst_out.MoveNext
Next i
      
For a = 1 To Anzahl_Ziffern 
        
    CurrentDb().Execute "DELETE FROM Tabelle" & a, dbFailOnError
        
    Call Write_Tabelle("Tabelle" & a, Drei_D(), a)
     
Next a
             
End Sub



'***** Function zum Schreiben in die jeweiligen Tabellen
Public Function Write_Tabelle(Tabellen_Name As String, Speicher As Variant, q As Double)
    
    ' "Ende" ist jeweils die Anzahl der jeweiligen Ziffern z.B.: Anzahl 2-stellige Ziffern: 2 -> "Ende" gleich 2
    Ende = Speicher(q, 5, 1)

    For i = 1 To Ende Step 1
     
        ' neuen Datensatz schreiben
        With CurrentDb().OpenRecordset(Tabellen_Name, dbOpenDynaset, dbAppendOnly)
            .AddNew
            !Digits = Speicher(q, 1, i)
            !Tabelle_Verizon_Price = Speicher(q, 2, i)
            !Tabelle_Versatel_Price = Speicher(q, 3, i)
            !Tabelle_Telefonica_Price = Speicher(q, 4, i)
            .Update
        End With
    Next i


End Function

 


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 Performance-Unterschied Access 2007/2010 ?
07.09.2012 10:56:14 Sebastian
NotSolved