| |

VB & DatenbankenVBA 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() |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|