Ich krieg die Schleife nicht hin

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Ich krieg die Schleife nicht hin
von: Peter W
Geschrieben am: 15.03.2005 13:59:43
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: bst
Geschrieben am: 15.03.2005 14:20:06
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

Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Frank Sohn
Geschrieben am: 15.03.2005 14:21:39
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Markus
Geschrieben am: 15.03.2005 14:25:03
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Peter W
Geschrieben am: 15.03.2005 15:01:38
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: bst
Geschrieben am: 15.03.2005 15:12:40
Neuer Versuch,
ändere: Cells(i, 1) <> "" in Sheets("DB2").Cells(i, 1)
HTH, Bernd
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: bst
Geschrieben am: 15.03.2005 15:13:26
Neuer Versuch,
ändere:
Cells(i, 1) <> ""
in
Sheets("DB2").Cells(i, 1) <> ""
HTH, Bernd
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Peter W
Geschrieben am: 15.03.2005 15:23:29
Servus,
Die Acces Tabelle bleibt nach wie vor leer :(
MfG
Peter
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Frank Sohn
Geschrieben am: 15.03.2005 15:44:04
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Peter W
Geschrieben am: 15.03.2005 15:56:55
Servus,
Sry wenn ich nerve (geh mir ja inzwischen schon selber aufn Wecker), aber überträgt keinerlei Daten.
MfG
Peter
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Frank Sohn
Geschrieben am: 15.03.2005 16:14:51
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Peter W
Geschrieben am: 15.03.2005 16:26:37
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Frank Sohn
Geschrieben am: 15.03.2005 16:41:59
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Frank Sohn
Geschrieben am: 15.03.2005 16:53:43
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
Bild

Betrifft: AW: Ich krieg die Schleife nicht hin
von: Peter W
Geschrieben am: 15.03.2005 17:01:34
Servus,
Ich danke dir von Herzen, hab mich wirklich ziemlich doof angestellt.
Danke
MfG
Peter
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Ich krieg die Schleife nicht hin"