Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ich krieg die Schleife nicht hin

Forumthread: Ich krieg die Schleife nicht hin

Ich krieg die Schleife nicht hin
15.03.2005 13:59:43
Peter
Servus,
Hab ne kurze für euch wahrscheinlich leichte Frage.
Bei nachfolgenden Code (danke an Tom) der so funktioniert wie ich es will, bis auf die Ausnahme das er immer nur die erste Zeile des Datensatzes in Acces überträgt und nicht alle (dies soll logischerweise in die nächste Zeille im Acces Tabellenblat geschehen).
Folglich habe ich versucht einen Loop zu schreiben (zum ersten mal) und welch wunder er funktioniert nicht. Weis jemand Rat, Danke vorab.
'Zur Verfügung gestellt von Tom auf www.herber.de

Private Sub CommandButton7_Click()
Dim ADOC As New ADODB.Connection
Dim DBS As New ADODB.Recordset
Dim Datei As String
Dim i As Long
Datei = "C:\Dokumente und Einstellungen\H. Muster\Desktop\Excel Anwendungen\Kunden.mdb"
ADOC.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Datei & ";"
DBS.Open "Tabelle1", ADOC, adOpenKeyset, _
adLockOptimistic
i = 2
DBS.AddNew
DBS!Kundennummer = Sheets("DB2").Cells(i, 1)
DBS!Firma = Sheets("DB2").Cells(i, 2)
DBS!Straße = Sheets("DB2").Cells(i, 3)
DBS!Hausnummer = Sheets("DB2").Cells(i, 4)
DBS!PLZ = Sheets("DB2").Cells(i, 5)
DBS!Ort = Sheets("DB2").Cells(i, 6)
DBS!Telefon_gesch = Sheets("DB2").Cells(i, 7)
' etwas verkürzt da noch ca. 20 Datenbankfelder kommen
DBS.Update
DBS.Close
' hier fängts an zu hacken bei .movenext meckert er
i = i + 1
.MoveNext
Loop
ADOC.Close
MsgBox ("Kundendatei wurde übertragen !!!")
Unload Me
End Sub

P.S.:
Da diese Frage aus einem anderen vor 5 Tagen resultierten Beitrag stammt und nicht beantwortet wurde, stelle ich die Frage neu.
Sollte dies gegen Forumsregeln verstossen bitte ich mir dies zu mitzuteilen und entschuldige mich vorab.
MfG
Peter
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 14:20:06
bst
Hallo Peter,
versuch's mal so (ungetestet!).
cu, Bernd
--
Option Explicit
'Zur Verfügung gestellt von Tom auf www.herber.de

Private Sub CommandButton7_Click()
Dim ADOC As New ADODB.Connection
Dim DBS As New ADODB.Recordset
Dim Datei As String
Dim i As Long
Datei = "C:\Dokumente und Einstellungen\H. Muster\Desktop\Excel Anwendungen\Kunden.mdb"
ADOC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Datei & ";"
DBS.Open "Tabelle1", ADOC, adOpenKeyset, _
adLockOptimistic
i = 2
Do While Cells(i, 1) <> ""
DBS.AddNew
DBS!Kundennummer = Sheets("DB2").Cells(i, 1)
DBS!Firma = Sheets("DB2").Cells(i, 2)
DBS!Straße = Sheets("DB2").Cells(i, 3)
DBS!Hausnummer = Sheets("DB2").Cells(i, 4)
DBS!PLZ = Sheets("DB2").Cells(i, 5)
DBS!Ort = Sheets("DB2").Cells(i, 6)
DBS!Telefon_gesch = Sheets("DB2").Cells(i, 7)
' etwas verkürzt da noch ca. 20 Datenbankfelder kommen
DBS.Update
' hier fängts an zu hacken bei .movenext meckert er
i = i + 1
Loop
DBS.Close
ADOC.Close
MsgBox ("Kundendatei wurde übertragen !!!")
End Sub

Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 14:21:39
Frank
Hallo,
DBS.MoveFirst
do While Not DBS.EOF
DBS!Kundennummer = Sheets("DB2").Cells(i, 1)
.
.
DBS!Telefon_gesch = Sheets("DB2").Cells(i, 7)
DBS.MoveNext
loop
'Hier kommt DBS.Close hin weil sonst nix mehr gelesen werden kann, da nu Recordset zu ist!!
DBS.Close
'dann komm der Rest deines Codes!
Gruss
Frank
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 14:25:03
Markus
Hallo Peter,
ist nur ein Versuch - aber vielleicht klappt es hiermit besser.

Private Sub CommandButton7_Click()
Dim ADOC As New ADODB.Connection
Dim DBS As New ADODB.Recordset
Dim Datei As String
Dim i As Long
Dim lar As Long
Datei = "C:\Dokumente und Einstellungen\H. Muster\Desktop\Excel Anwendungen\Kunden.mdb"
ADOC.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Datei & ";"
DBS.Open "Tabelle1", ADOC, adOpenKeyset, _
adLockOptimistic
lar = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lar
DBS.AddNew
DBS!Kundennummer = Sheets("DB2").Cells(i, 1)
DBS!Firma = Sheets("DB2").Cells(i, 2)
DBS!Straße = Sheets("DB2").Cells(i, 3)
DBS!Hausnummer = Sheets("DB2").Cells(i, 4)
DBS!PLZ = Sheets("DB2").Cells(i, 5)
DBS!Ort = Sheets("DB2").Cells(i, 6)
DBS!Telefon_gesch = Sheets("DB2").Cells(i, 7)
' etwas verkürzt da noch ca. 20 Datenbankfelder kommen
DBS.Update
DBS.Close
' hier fängts an zu hacken bei .movenext meckert er
Next i
ADOC.Close
MsgBox ("Kundendatei wurde übertragen !!!")
Unload Me
End Sub

Gruß
Markus
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 15:01:38
Peter
Servus,
Bei der ersten und der letzten Lösung überträgt er überhaupt keine Daten.
Bei der 2ten Lösung den ersten Datensatz ca.20 mal.
Danke erstmal, vieleicht hat noch jemand eine Lösung?
MfG
Peter
AW: Ich krieg die Schleife nicht hin
15.03.2005 15:12:40
bst
Neuer Versuch,
ändere: Cells(i, 1) "" in Sheets("DB2").Cells(i, 1)
HTH, Bernd
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 15:13:26
bst
Neuer Versuch,
ändere:
Cells(i, 1) ""
in
Sheets("DB2").Cells(i, 1) ""
HTH, Bernd
AW: Ich krieg die Schleife nicht hin
15.03.2005 15:23:29
Peter
Servus,
Die Acces Tabelle bleibt nach wie vor leer :(
MfG
Peter
AW: Ich krieg die Schleife nicht hin
15.03.2005 15:44:04
Frank
Hallo,
ja ich hab vergessen das DBS.Add natürlich in die Schleife muss!!!!!!!!!
Hier mal eine neue Version zum Testen!!

Private Sub CommandButton7_Click()
Dim ADOC As New ADODB.Connection
Dim DBS As New ADODB.Recordset
Dim Datei As String
Dim i As Long
Datei = "C:\Dokumente und Einstellungen\H. Muster\Desktop\Excel Anwendungen\Kunden.mdb"
ADOC.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Datei & ";"
DBS.Open "Tabelle1", ADOC, adOpenKeyset, _
adLockOptimistic
i = 1
Do While Cells(i, 1) <> ""
DBS.AddNew
DBS!Kundennummer = Cells(i, 1)
DBS!Firma = Cells(i, 2)
DBS!Straße = Cells(i, 3)
DBS!Hausnummer = Cells(i, 4)
DBS!PLZ = Cells(i, 5)
DBS!Ort = Cells(i, 6)
DBS!Telefon_gesch = Cells(i, 7)
' etwas verkürzt da noch ca. 20 Datenbankfelder kommen
DBS.Update
' hier fängts an zu hacken bei .movenext meckert er
i = i + 1
DBS.MoveNext
Loop
DBS.Close
ADOC.Close
MsgBox ("Kundendatei wurde übertragen !!!")
'Unload Me
End Sub

Da hier keine Sheet referenz bezieht sich jede Operation auf da Aktuelle Sheet.
(sonst eben wieder einfügen!!)
Gruss
Franky
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 15:56:55
Peter
Servus,
Sry wenn ich nerve (geh mir ja inzwischen schon selber aufn Wecker), aber überträgt keinerlei Daten.
MfG
Peter
AW: Ich krieg die Schleife nicht hin
15.03.2005 16:14:51
Frank
Hallo,
keine Sorge! Im Worksheet stehen aber schon Daten? die Verbindung zur Access-DB
macht auch keine Probleme? (Exklusiv...).
Die Felder der Tabelle sind vom richtigen Typ?
Läuft der Algorithmus durch?
Gruss
Franky
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 16:26:37
Peter
Servus,
Ja da es ohne die Schleife wunderbar funktioniert hat.
Wenn du willst kannst du dir ja mal die Bsp. Arbeitmappe inkl. mdb anschauen.
Danke
MfG
Peter
https://www.herber.de/bbs/user/19704.zip
AW: Ich krieg die Schleife nicht hin
15.03.2005 16:41:59
Frank
Tach,
vorrab:
ich weiss nicht aber in der DB stehen Daten (1..100 und ein paar zerquetschte)
Ich meine keine sichtbaren Werte, aber Excel schreibt was rein!
'Mal sehen wo es klemmt!!!
Gruss Franky
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 16:53:43
Frank
Hallo,
ich habe 'mal die Typen der Zellen angepasst, bei mir schreibt er nun was rein.
(Jetzt sind massenhaft leere Datensätze drin, die sollten gelöscht werden)
Hier liegt das überabeitete Sheet
https://www.herber.de/bbs/user/19706.zip
Gruss
Franky
Anzeige
AW: Ich krieg die Schleife nicht hin
15.03.2005 17:01:34
Peter
Servus,
Ich danke dir von Herzen, hab mich wirklich ziemlich doof angestellt.
Danke
MfG
Peter
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige