Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Schleife zur Datensatzerstellung
zurück: Bericht in PDF Gruppieren weiter: msoFileDialogOpen mit Filterfunktion Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
wetlook
Gast


Verfasst am:
06. Feb 2012, 14:05
Rufname:

Schleife zur Datensatzerstellung - Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Hallo liebes Forum,
ich hoffe hier Hilfe zu finden. Ich möchte über einen Button neue Datensätze erstellen lassen (ohne Begrenzung)... immer weiter erstellen...
Im Formular gibt es ein Dropdownfeld als Hauptauswahl. Dieses muss der User vor dem Klick auf den Button einmal auswählen, wobei der Inhalt dann immer in der Schleife als Grundlage übergeben werden muss (z.B. Column(1))
Dann soll über den Button die Schleife starten und immer neue Datensätze mit der vorgegebenen Definition erstellen (Codierte Werte)...
Ich hoffe der code hilft hier ein wenig zum Verständnis.
Hier also erstmal die Datensätze wie sie erstellt und gedruckt werden (funktioniert auch):

Code:

Me.code_Firma = Me.Kombinationsfeld2.Column(1)
Me.code_Abteil = Me.Kombinationsfeld2.Column(2)
Me.code_mid = Me.ID
Me.Bezeichnung = Me.Kombinationsfeld2.Column(5)
Me.Code = Me.code_PreFirma & "" & Me.code_PreAbteil & "" & Me.code_suf & "" & Me.code_mid
DoCmd.OpenReport "Ausgabe", , , "ID =" & Me!ID
DoCmd.Save


Nun soll das ganze aber in einer Schleife laufen und immer die zuerst gewählten Kombifeld-Einträge übernehmen...
Kann mir hier jemand mit dem Code etwas helfen?
MissPh!
Office-VBA-Programmiererin


Verfasst am:
06. Feb 2012, 14:34
Rufname:
Wohnort: NRW


AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Hallo,
Zitat:
neue Datensätze erstellen lassen (ohne Begrenzung)... immer weiter erstellen...
wie stellst du dir das vor, als Endlos-Schleife? Shock

Handelt es sich um ein gebundenes Formular?
Zitat:
Code:
DoCmd.Save
Was willst du hiermit speichern, das Formular? Und wenn ja, warum?
_________________
Gruß MissPh!
wetlook
Gast


Verfasst am:
06. Feb 2012, 14:41
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Hallo,
ja, die Schleife soll immer weiter Datensätze erstellen. Ich habe einen Abbruch-Button eingebaut der das ganze stoppt, sowie einen Timer, der immer 5 Sekunden wartet bevor der nächste ds erstellt wird.
Weiter unten der Code mit dem Warten...
Ja, es ist ein gebundenes Formular. tbl_Daten
Das Docmd.save sollte eigentl. den Datensatz speichern, bevor der
nächste erstellt wird!?
Hier der code mit Pause:
Code:

Do While i > 0
   DoEvents
   Sleep 5000            '5 Sekunden warten
Loop
DoCmd.OpenReport "Ausgabe", , , "ID =" & Me!ID

' Hier muss dann die Schleife kommen und anschließend dann
' wenn i<0 der nächste Datensatz erstellt werden...

Me.code_Firma = Me.Kombinationsfeld2.Column(1)
 Me.code_Abteil = Me.Kombinationsfeld2.Column(2)
 Me.code_mid = Me.ID
 Me.Bezeichnung = Me.Kombinationsfeld2.Column(5)
 Me.Code = Me.code_PreFirma & "" & Me.code_PreAbteil & "" & Me.code_suf & "" & Me.code_mid
 DoCmd.OpenReport "Ausgabe", , , "ID =" & Me!ID
MissPh!
Office-VBA-Programmiererin


Verfasst am:
06. Feb 2012, 14:47
Rufname:
Wohnort: NRW

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

So wie ich das sehe musst du den Code zur Datensatzerstellung in die obere Schleife packen.
Wo wird i initialisiert? Wo wird es auf 0 gesetzt? Welche Rolle spielt der Bericht bei dem Ganzen?
Du solltest nicht so sparsam sein mit den Informationen darüber was du schon an Code hast und
woran es bei der Umsetzung scheitert.

Befehl zum Speichern des Datensatzes:
Code:
DoCmd.RunCommand acCmdSaveRecord
Code zum Sprung auf den neuen Datensatz:
Code:
DoCmd.RunCommand acCmdRecordsGotoNew

_________________
Gruß MissPh!
wetlook
Gast


Verfasst am:
06. Feb 2012, 14:54
Rufname:


AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Hallo,
ok hast wohl recht... Das i= wird über ein externes System ausgegeben (as400).
Wenn dieser Wert auf 0 ist, soll die Aktion starten. Wenn i dann wieder größer 0 übergeben wird, soll solange die Schleife laufen bis i=0 und dann weiter...
Es wird also quasi vorgegeben über i wann Datensätze erstellt werden dürfen....
Mein Problem ist:
An welcher stelle baue ich das wie ein?
Das saveRecord habe ich angepasst, neuen Datensatz erstellen auch, aber
an welcher Stelle muss das zusammengefügt werden?
wetlook
Gast


Verfasst am:
06. Feb 2012, 14:55
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Der erstellte Code wird immer sofort über einen Bericht ausgedruckt... (Bondrucker)
MissPh!
Office-VBA-Programmiererin


Verfasst am:
06. Feb 2012, 15:01
Rufname:
Wohnort: NRW

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

OK, dann versuche es doch mal folgendermaßen:
Code:
Do While i > 0
    DoCmd.RunCommand acCmdRecordsGotoNew
    Me.code_Firma = Me.Kombinationsfeld2.Column(1)
    Me.code_Abteil = Me.Kombinationsfeld2.Column(2)
    Me.code_mid = Me.ID
    Me.Bezeichnung = Me.Kombinationsfeld2.Column(5)
    Me.Code = Me.code_PreFirma & "" & Me.code_PreAbteil & "" & Me.code_suf & "" & Me.code_mid
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OpenReport "Ausgabe", , , "ID =" & Me!ID
    DoEvents
    Sleep 5000            '5 Sekunden warten
Loop

_________________
Gruß MissPh!
wetlook
Gast


Verfasst am:
06. Feb 2012, 15:05
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Das funktioniert leider nicht, da die Schleife ja so lange laufen muss bis i kleiner 1 ist.
So würde er immer Datensätze erstellen, egal welchen Wert i hat!?

Weiterhin wird ja das Kombifeld beim neuen Datensatz nicht mit der Userauswahl übernommen, sondern springt immer auf "leer" zurück...
MissPh!
Office-VBA-Programmiererin


Verfasst am:
06. Feb 2012, 15:34
Rufname:
Wohnort: NRW

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Wie die Unterbrechung aussehen könnte ist mir sowieso rätselhaft, aber wenn i sich zwischenzeitlich ändern würde,
dann sollte das wohl im While festgestellt werden können.

Wenn das Kombifeld beim Sprung auf den neuen Datensatz gelöscht wird, so ist es wohl gebunden und das sollte es nicht sein.

_________________
Gruß MissPh!
wetlook
Gast


Verfasst am:
06. Feb 2012, 15:47
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

hm, ok, das Kombifeld ändere ich.. danke dafür schonmal...
müsste dann nicht der code eher so sein, dass der Datensatz erst nach dem
Loop angelegt wird? so würde der Code nur weiterlaufen wenn die Schleife
i kleiner 1 gibt, sonst würde es immer wieder in den loop laufen...was ja auch
gewünscht ist...
Code:

Do While i > 0
 DoEvents
    Sleep 5000            '5 Sekunden warten
Loop
' Hier dann erst den Datensatz erstellen lassen aber wie komme ich im
' code dann wieder nach oben zu Do While wenn der DS angelegt wurde?


Aber wie kann ich quasi dann nach dem Erstellen des neuen Datensatz wieder
zu Do While springen -->look laufen lassen -->ds anlegen wenn i kleiner 1 etc...

Ich stelle es mir so vor mit

[/code]
Do While Schleife

wenn ok DS erstellen
Datensatz speichern
goto Do While (geht so natürlich nicht..) aber wie?
Code:
Gast



Verfasst am:
06. Feb 2012, 15:53
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Hinweis: Datensätze liegen in Tabellen. Dort lassen sich Datensätze auch am einfachsten erzeugen, per RecordsetInsert oder Anfügeabfrage (mit letzterer könnte man auch alle benötigten Datensätze auf einmal erzeugen).

Die Formularaktionen weisen da auf eine gewisse Hilflosigkeit hin, bieten aber zusätzliche Möglichkeiten, Fehler und Probleme einzubauen.

Statt aber immer gleiche Datensätze zu erzeugen könnte man den einzelnen Datensatz auch mehrfach ausdrucken.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
06. Feb 2012, 15:57
Rufname:
Wohnort: NRW

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Ich denke, der Ansatz mit der Schleife ist falsch und kann so nicht funktionieren.

Stelle den Timer auf 5 Sekunden ein, schreibe den neuen Datensatz und den Bon dazu im Timer-Ereignis nachdem du geprüft hast, ob die "Schleife" noch weiterlaufen soll. Andernfalls setzt du den Timer auf 0.
Dabei wirst du aktiv auf den "Parameter" zugreifen müssen und nicht drauf warten können, dass er dir geliefert wird - oder du erklärst den Zusammenhang einfach mal genauer.

_________________
Gruß MissPh!
wetlook
Gast


Verfasst am:
06. Feb 2012, 16:14
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Hallo,
ok hier nochmal ein Erklärungsversuch...
Das Formular hat ein paar Felder in denen Werte berechnet werden und aus dem
Kombifeld kommen. Diese werden zu einem Code zusammengesetzt welcher auf ein Formular (aus Papier Smile ) ausgedruckt werden muss.
Ein externes System überwacht den Drucker. Wenn der Ausdruck fertig ist, gibt das externe System den Drucker frei (i=0). Wenn der Drucker freigegeben ist (Druckauftrag komplett) dann soll der nächste Datensatz erstellt und gedruckt werden. Da vorher die Anzahl der Datensätze nicht bekannt ist (es sind aber mehrere 100) soll der user einfach auf abbrechen klicken, wenn er keine Drucke mehr benötigt.

Warum ist eine Schleife falsch? Es soll in einer Schleife immer das gleiche getan werden, bis einer Stop schreit... Das ist doch Schleife, oder?

Ich bitte jemanden um Hilfe, der mir den oben geposteten Code einmal in eine funktionierende Form bringen kann wie beschrieben. Ich denke Sinn oder Unsinn eines Codes ist immer vom Programmierer und dem gewünschten Ergebnis abhängig, oder?
Gast



Verfasst am:
06. Feb 2012, 16:27
Rufname:

AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Zitat:
Ich denke Sinn oder Unsinn eines Codes ist immer vom Programmierer und dem gewünschten Ergebnis abhängig, oder?
Es gibt auch objektive Gründe, um über Sinn/Unsinn entscheiden zu können.

Immer den gleichen Datensatz zu duplizieren, würde man in einer ordentlichen Datenbank eher Unsinn nennen. Wie gesagt, kann man auch die Druckausgabe dieses einen Datensatzes wiederholen. Insofern würde sich eine Schleife auf die Druckausgabe reduzieren - im Gegensatz zum Thementitel.

Übrigens würde ich auch so Datensatzerzeugung und Druckausgabe an sich trennen. Um einen Datensatz zu erzeugen, muss man nicht zwingend etwas zusätzlich in eine Tabelle schreiben, sondern man kann auch Datensätze in einer Abfrage erzeugen.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
06. Feb 2012, 16:29
Rufname:
Wohnort: NRW


AW: Schleife zur Datensatzerstellung - AW: Schleife zur Datensatzerstellung

Nach oben
       Version: Office 2003

Zitat:
Warum ist eine Schleife falsch?
Das Problem liegt in der Kommunikation zwischen deinem Code und dem "externen System".
Wenn du das nicht nachvollziehbar darlegen kannst, ist hierzu auch keine weitere Hilfe möglich.

Die Access-interne Variable "i" kann nicht während des Schleifenlaufs von außen geändert werden, das geht einfach nicht, behaupte ich.
Du kannst also nur zu einem definierten Zeitpunkt bzw. innerhalb der Schleife aus Access heraus (also "aktiv") prüfen, ob es noch weitergehen soll.

_________________
Gruß MissPh!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Schleife in Abfrage erstellen - Geburtstagsabfrage 2 martinthebest 392 23. Jun 2012, 12:47
martinthebest Schleife in Abfrage erstellen - Geburtstagsabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Access Datenabfrage mit Schleife 6 Lenny Perdon 934 13. Feb 2012, 17:43
Lenny Perdon Access Datenabfrage mit Schleife
Keine neuen Beiträge Access Formulare: Schleife zum Kopieren 21 Yves2 1413 22. Feb 2007, 19:44
Yves02_1 Schleife zum Kopieren
Keine neuen Beiträge Access Programmierung / VBA: Access / VBA Programmierung einer Schleife 0 wwwnesta 1822 24. Jan 2007, 20:09
wwwnesta Access / VBA Programmierung einer Schleife
Keine neuen Beiträge Access Berichte: Kleines Problem beim Aufsummieren mittels Schleife 19 DieterB 1716 18. Dez 2006, 20:56
DieterB Kleines Problem beim Aufsummieren mittels Schleife
Keine neuen Beiträge Access Programmierung / VBA: Schleife + Uhrzeit 5 TimeOut 598 30. Nov 2006, 10:21
KlausMz Schleife + Uhrzeit
Keine neuen Beiträge Access Programmierung / VBA: Textfelder als controls überprüfen (schleife) 5 fdsa 1204 24. Okt 2006, 22:03
derArb Textfelder als controls überprüfen (schleife)
Keine neuen Beiträge Access Formulare: Schleife für DELETE-Anweisung 8 Stefan1982 691 30. Sep 2006, 00:19
Willi Wipp Schleife für DELETE-Anweisung
Keine neuen Beiträge Access Programmierung / VBA: Speichern von Worddoks aus Access mit hilfe einer schleife? 12 Marama 599 19. Sep 2006, 13:23
Gast Speichern von Worddoks aus Access mit hilfe einer schleife?
Keine neuen Beiträge Access Programmierung / VBA: Schleife - komm nicht weiter 1 Gast 607 20. Aug 2006, 13:09
alf_2006 Schleife - komm nicht weiter
Keine neuen Beiträge Access Programmierung / VBA: Export in Abhängigkeit eines Listenfeldes/Schleife? 3 xyz 607 01. Aug 2006, 10:03
Highlander Export in Abhängigkeit eines Listenfeldes/Schleife?
Keine neuen Beiträge Access Tabellen & Abfragen: Daten über eine Schleife im gefilterten Formular ändern 1 Alwin 707 21. März 2006, 09:28
mapet Daten über eine Schleife im gefilterten Formular ändern
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project