vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
VBA schneller als Visual Basic 2005 
Autor: hubert76
Datum: 06.03.08 15:14

Hallo an alle,

ich habe in Visual Basic 2005 und in VBA(Microsoft Access) ein Script geschrieben welches auf eine Access Datenbank zugreift Daten lest verändert und in eine andere Tabelle schreibt. Beide Varianten funktionieren einwandfrei jedoch ist das Script in VBA in 8 Minuten fertig und in Visual Basic 2005 dauert es 40 Minuten. Wie könnte ich das Script in Visual Basic 2005 optimieren das ich annähernd an die VBA Zeit komme?
Ich habe auch schon ADO probiert es macht keinen Unterschied.
Bin für jeden Tipp dankbar. Als Anhang findet Ihr das Visual Basic 2005 Script.

Gruß

Hubert
Dim myconnection As DAO.Database
        Dim objDBEngine As New DAO.DBEngine
        Dim rst As DAO.Recordset
        Dim rst2 As DAO.Recordset
        Dim var_text(500)
        Dim var_artnr
        Dim var_arbg
        Dim zaehler
        Dim var_arbez, var_bezeichnung2, var_me, var_typ, var_class, _
          var_znrmat, var_ref, var_family
        Dim var_wbz, var_kanban, var_arbp, var_arbpbez, var_arbgbez, _
        var_arbptxt, var_auko, var_lohn
        Dim var_ruest, var_trspttge, var_queuetage, var_startdat, var_notes
        Dim aktsatz
        Dim MaxWert
        Dim ind
        Me.Status.Text = "Prgramm wird gestartet!"
        Me.Refresh()
        'Verbindung zur Datenbank öffnen
        rst = myconnection.OpenRecordset("SELECT * FROM RoutingGTN")
        ' Öffnen des Recordsets2 im update Modus
        ' Löschen aller Datensätze
        myconnection.Execute("DELETE * FROM SFC100")
        ' Öffnen zum Schreiben
        rst2 = myconnection.OpenRecordset("SELECT * FROM SFC100")
        ' ermitteln Anzahl der Datensaetze
        Me.Status.Text = "Ermittle max. Datensatzanzahl!"
        Me.Refresh()
        rst.MoveLast()
        MaxWert = rst.RecordCount
        aktsatz = 0
        Me.von.Text = MaxWert
        Me.Refresh()
        rst.MoveFirst()
        ' durchlesen bis zum letzten Datensatz
        zaehler = 0
        Me.Status.Text = "Lese Daten"
        Me.Refresh()
        Do While Not rst.EOF
            If zaehler = 0 Then
                var_artnr = rst.Fields("ArtNr").Value
                var_arbg = rst.Fields("Arbg").Value
                ........
                var_notes = rst.Fields("Notes")
                zaehler = 1
                Me.ProgressBar5.Minimum = 0
                Me.ProgressBar5.Maximum = MaxWert
                Me.ProgressBar5.Value = aktsatz
                Me.satz.Text = aktsatz
                Me.Refresh()
                aktsatz = aktsatz + 1
                rst.MoveNext()
            Else
                If rst.Fields("Artnr").Value Is var_artnr And rst.Fields( _
                  "Arbg").Value Is var_arbg Then
                    var_text(zaehler) = rst.Fields("Notes").Value
                    zaehler = zaehler + 1
                    Me.ProgressBar5.Minimum = 0
                    Me.ProgressBar5.Maximum = MaxWert
                    Me.ProgressBar5.Value = aktsatz
                    Me.satz.Text = aktsatz
                    Me.Refresh()
                    aktsatz = aktsatz + 1
                    rst.MoveNext()
                Else
                    For ind = 1 To zaehler - 1
                        var_notes = var_notes & " " & RTrim(var_text(ind))
                    Next
                    zaehler = 0
                    ' Datensatz speichern
                    rst2.AddNew()
                    rst2("ArtNr").Value = var_artnr
                    rst2("Arbg").Value = var_arbg
                   ........
                    rst2("Notes").Value = var_notes
                    rst2.Update()
                End If
            End If
        Loop
        Me.Status.Text = "Fertig!!!"
        Me.Refresh()
        'Verbindung zur Datenbank auf jeden Fall wieder schließen
        myconnection.Close()
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
VBA schneller als Visual Basic 20051.324hubert7606.03.08 15:14
Re: VBA schneller als Visual Basic 2005808Klaus170407.03.08 08:41
Re: VBA schneller als Visual Basic 2005653hubert7607.03.08 09:01
Re: VBA schneller als Visual Basic 2005690Klaus170407.03.08 12:43
Re: VBA schneller als Visual Basic 2005604hubert7607.03.08 12:46
Re: VBA schneller als Visual Basic 2005588Klaus170410.03.08 11:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel