Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Optimierung DB-Methode

Optimierung DB-Methode
31.12.2008 12:29:46
Rudolf
Hi,
ich habe ein Code-Fragment geschrieben, mit der ich Daten aus einer Excel-Tabelle in eine Access-DB einlese. Funktioniert auch einwandfrei:

Private Sub CommandButton2_Click()
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
'Cells.Clear
'   Database information
DBFullName = ThisWorkbook.Path & "\PMO.mdb"
'   Open the connection
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0; "
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
'   Create RecordSet
Set Recordset = New ADODB.Recordset
Recordset.Open "Tasks", Connection, adOpenKeyset, adLockOptimistic
Dim i As Long
ActiveSheet.Select
For i = 4 To Cells.SpecialCells(xlLastCell).Row ' alle Zeilen
If Cells(i, 5) = "" Or Cells(i, 5) = "tbd" Then
Else
With Recordset
.AddNew
.Fields("ParentTask").Value = Cells(i, 1).Value
.Fields("TaskID").Value = Cells(i, 2).Value
.Fields("Task").Value = Cells(i, 3).Value
.Fields("Org").Value = Cells(i, 6).Value
.Fields("TeamMember").Value = Cells(i, 5).Value
.Fields("StartDate").Value = Cells(i, 8).Value
.Fields("DueDate").Value = Cells(i, 9).Value
'add data for the other fields here
.Update
End With
End If
Next i
Recordset.Close
Connection.Close
End Sub


Ich hätte dazu nun zwei Fragen:
1) Kann man diese Prozedur noch optimieren bzw. effizienter gestalten?
2) Ich würde gerne den Inhalt der Tabelle Tasks löschen bevor ich die Werte von der Excel-Tabelle in die DB schreibe. Kann man das einfach realisieren?
rudi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Optimierung DB-Methode
31.12.2008 12:38:00
Ramses
Hallo
Zur Optimierung folgenden Vorschlag
Das "ActiveSheet.Select" kannst du weglassen weil die aktive Tabelle ja sowieso selektiert ist
Die Zeile "If Cells(i, 5) = "" Or Cells(i, 5) = "tbd" Then" kannst du so umstellen
If Cells(i, 5) "" Or Cells(i, 5) "tbd" Then
dann kannst du dir nämlich das "Else" sparen und springst direkt in die Auswertung
Wie man eine Tabelle in ACCESS am schnellsten löscht, frägst du am besten in einem ACCESS Forum nach oder schaust mal in die ACCESS VBA-Online-Hilfe unter "Delete" oder "Clear"
Gruss Rainer
AW: Optimierung DB-Methode
31.12.2008 16:37:50
Rudolf
Alles klar, vielen Dank für den Tipp.
Ich denke bezüglich dem Löschen des Inhalts der Tabelle gibt es hoffentlich eine einfacher Variante.
rudi
Anzeige
AW: Optimierung DB-Methode
31.12.2008 17:16:40
Original
Hi,
DROP TABLE Namedertabelle
mfg Kurt
AW: Optimierung DB-Methode
01.01.2009 08:58:46
Luschi
Hallo Rudolf,
so kann man den Ingalt der Tabelle 'Tasks' vorher löschen:
Dim ok As Boolean
'...
Connection.Open ConnectionString:=Cnct
ok = MsgBox("Sollen alle Datensätze der Tabelle 'Tasks' gelöscht werden", _
vbYesNo + vbQuestion, "F r a g e?") = vbYes
If ok Then
Connection.Execute "Delete * From Tasks;"
End If
'...
Gruß von Luschi
aus klein-Paris
PS: noch ein Tipp!
Benenne Variablen nicht nach Objektbezeichnungen, -eigenschaften , Zellnamen, Ereignisroutinen
usw.; da kann man sich schnell Fehlreaktionen von Excel einfangen und sucht dann stundenlang
nach der Ursache - also statt Connection reicht auch der Variablenname Conn.
Anzeige
AW: Optimierung DB-Methode
01.01.2009 18:32:00
Rudolf
Hi Luschi,
super vielen Dank für die Hilfe, klappt super. Auch danke für den Tipp wegen der Benennung der Variablen.
rudi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige