Office: (Office 2016) Verwendung von EOF

Helfe beim Thema Verwendung von EOF in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Moin, ich möchte meine If Anweisung nur solange ausführen, bis meine Datensätze am Ende angekommen sind. Ich gebe in einem Formular eine Menge in ein... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von User, 13. Dezember 2020.

  1. Verwendung von EOF


    Moin, ich möchte meine If Anweisung nur solange ausführen, bis meine Datensätze am Ende angekommen sind.
    Ich gebe in einem Formular eine Menge in ein Textfeld ein, drücke auf Bestätigen, die Menge wird in eine tbl eingetragen und das Formular springt einen DS weiter, wo das gleiche passiert, nach dem klick auf bestätigen des letzten DS, soll sich das Formular schließen und sich ein anderes öffnen.

    Wenn ich do while mache, stürzt Access ab, wie ich das mit if einbaue weiß ich nicht.
    Bitte um Hilfe

    Code:
    :)
     
  2. Entweder Schleife oder Verzweigung.
    In der Schleife bildet die Ausführung- oder Abbruchbedingung das Kriterium, welches in der Verzeigung hinter IF steht.

    Im Beispielcode wird das nicht ganz deutlich, was Du da machst.
    Du öffnest das Recordset mit einem Kriterium.
    Gibt es denn tatsächlich mehrere Datensätze in tblMat mit der selben MatArtNr?

    Klassischerweise macht man das so:
    Code:
    .Edit und .AddNew direkt nacheinander innerhalb eines geöffneten RecordSet habe ich auch noch nicht gesehen ... das müsstest Du mal erläutern, was Du damit bezweckst.
    .Edit ändert den aktuellen Datensatz und lässt den Satzzeiger dort
    .AddNew hängt einen neuen Satz an und setzt den Satzzeiger dorthin.

    Also: entweder UPDATE oder INSERT, beides gleichzeitig geht nicht.
     
    hcscherzer, 14. Dezember 2020
    #2
  3. Bei Edit, verändere ich den Standardwert von "0" auf die Zahl die in das Textfeld eingetragen wurde, bei AddNew habe ich ein leeres Datumsfeld und möchte dort das aktuelle Datum + Zeit eintragen lassen.

    Deswegen trägt er das Datumsfeld nicht ein, dachte das liegt an meinem Tabellenfeld, also mach ich einfach einen Standardwert in das Datumsfeld und dann sollte das mit Edit gehen.


    Ich habe ein Formular mit einem Textfeld, in dieses Feld wird der Wert einer Ist Entnahme geschrieben und mit einem Klick auf Bestätigen in die Tabelle geschrieben.
    Allerdings möchte ich, wenn der letzte DS erreicht ist, das aktuelle Formular schließen und ein anderes öffnen, deswegen wollte ich mit EOF arbeiten, aber keine Ahnung wie, bei den Hilfen von Microsoft steht do while EOF(1) und die 1 steht für Datei 1, aber woher weiß ich, welche Datei 1 ist?!
     
  4. Verwendung von EOF

    Wenn Du vom "Standardwert" sprichst: das ist etwas anderes.
    Das ist der Wert, den ein Feld in einem neuen Datensatz erhält.
    Das ist auch nicht die Property .Value sondern .DefaultValue
    .Value ist - wie der name schon sagt, der Wert, also der Wert des aktuellen Datensatzes und kann - in den allermeisten Fällen - auch einfach wegfallen.

    Die Zuweisung vom aktuellen Datum für einen neuen Datensatz kann im Code auch wegfallen, wenn Du im Entwurf der Tabellenstruktur das Now() als Standardwert festlegst.
    Das Ändern des Werts des Datumsfeldes bei jeder Änderung vorhandener Daten könnte man hinterfragen. Es wäre auch möglich, alle Änderungen in einer historisierten 1:n Tabelle zu erfassen, aber das ist vielleicht ein anderes Thema.

    Zu der Behandlung von .EOF habe ich doch ein Beispiel angegeben.
    Wenn da steht rst.EOF dann ist das doch klar und deutlich: es bezieht sich auf das angegebene - meist ein paar Zeilen darüber - geöffnete Recordset.

    Und nach dem Loop am Ende der Schleife folgt dann:
    Code:
     
    hcscherzer, 15. Dezember 2020
    #4
  5. Du hast mich falsch verstanden, das Tabellenfeld hat einen Standardwert und nur wenn das der Fall ist, funktioniert das .Edit, ansonsten muss ich .AddNew machen.

    Hab ich dann immer nur Now dort wenn ein anderes Feld in der tbl geändert wird? Weil das Datum darf sich nur ändern, wenn das Feld geändert wurde.
    Wenn ich Do While Not EOF mache und am Ende Loop, sagt mir Access
    "Das Argument ist nicht optional" und markiert mir EOF, ich muss eine (1) dahinter machen, aber was bedeutet diese 1 denn es funktioniert nicht damit.
     
  6. Hallo,
    Code:
    Das ist ja auch falsch.
    Vor das EOF muss noch der Bezug zum entsprechenden Recordset.
    In #2 und #4 steht doch wie EOF anzuwenden ist, jedenfalls steht da nicht von einer Zahl in Klammer.

    Außerdem, frage ich mich gerade, warum man da nicht ein gebundenes Formular verwendet, da kann man sich das VBA Gedöns komplett sparen.
     
    gpswanderer, 15. Dezember 2020
    #6
  7. Hallo,
    Das ist das "falsche" EOF.

    Es gibt EOF im Zusammenhang mit Recordset und im Zusammenhang mit Dateioperationen.

    Das Beispiel für EOF mit Recordset hat dir Hans-Christian gezeigt.

    So wie du (hier) EOF nutzenb willst ist das falsch. Dies steht im Zusammenhang mit Dateioperationen.
     
    Steffen0815, 15. Dezember 2020
    #7
  8. Verwendung von EOF

    Kann ich nicht wissen, da Microsoft diese Seite mit EOF(1) öffnet, wenn ich EOF markiere und F1 drücke. https://docs.microsoft.com/de-de/off...p/eof-function

    Ich mache dann das do while not rst.eof nach ganz oben vor dem If und Loop nach dem letzten End If?
    Ich frage deshalb vor dem Ausprobieren, weil vorhin beim experimentieren mit do while und loop ist mein Access mehrmals abgestürzt und hat den PC aufgehangen.

    Edit: Wenn ich das so mache, ist es eine Endlosschleife die meine MSGBOX unendlich oft ausführt
     
  9. Ich verstehe das nicht.
     
  10. Hallo,
    mal so ganz auf die Schnelle würde ich sagen, da fehlt ein "end if".
    Es wäre besser, keine Bilder zu verwenden, sondern direkt Text in Code-Tags!

    Gruß Ulrich
     
  11. Code:
    So habe ich eine Endlosschleife von der msgbox "Bitte als Zahl eingeben".

    Und so:
    Code:
    Kann ich nicht mal Kompilieren
     
  12. Hallo,

    natürlich läßt sich das nicht kompilieren und schau dir mal die Fehlermeldung genauer an!

    Vielleicht solltest du doch mal einen VBA Formatter verwenden. Ich habe das mal für dich gemacht:
    Code:
    Dann achte mal auf dein Loop Statement und wo es im Code steht. Vielleicht fällt dir ja dann etwas auf?

    Gruß Ulrich

    Nachtrag:
    Das "On Error Resume Next" solltest du sofort auskommentieren! *entsetzt
     
  13. Verwendung von EOF

    Das mach ich damit er bei Fehler 2105 nicht beendet und die msgbox ausgeben kann.

    Das Loop Statement ist nach dem If und vor dem End If das dieses If schließt, aber wie ich schon sagte, wenn ich das nach dem End If mache, wird die msgbox in einer Dauerschleife ausgegeben.

    Edit:
    Ich habe mir das Programm Rubberduck runtergeladen, das kann mir meinen Code formatten
     
  14. Hallo,

    strukturierte Programmierung sollte kein Fremdwort sein!
    Überlege doch mal selber, was passiert, wenn die Bedingung "IsNumeric(Me.txtIstEntnahme.Value)" nicht zutrifft - genau, die Schleife wird nie mit "loop" beendet und das merkert der Kompiler zu Recht an.

    Bevor du nicht die Programmstruktur richtig hast, brauchst du dich auch nicht weiter um den Fehler kümmern. "On Error Resume Next" ist eher kontraproduktiv und keine "echte" Fehlerbehandlung.

    Erstelle erstmal einen korrekten PAP (Programmablaufplan) und setze den dann um; das wird dir sicherlich helfen.
    Entsprechende SW gibt es hier:
    http://friedrich-folkmann.de/papdesi...auptseite.html

    Gruß Ulrich
     
  15. Was für ein Aufwand dieser PAP *boah
    Wenn du mir nicht helfen willst, dann muss ich das Problem irgendwie selber lösen.
    Für sowas habe ich keine Zeit. Sorry.
     
Thema:

Verwendung von EOF

Die Seite wird geladen...
  1. Verwendung von EOF - Similar Threads - Verwendung EOF

  2. sVerweis Blattübergreifend verwenden

    in Microsoft Excel Hilfe
    sVerweis Blattübergreifend verwenden: Hallo Leute, ich habe eine Formel die wie folgt ausschaut: =SVERWEIS(Hersteller_Aus&Modell_Aus;WAHL({1.2};AMX!B2:B500&AMX!C2:C500;AMX!D2:D500);2;0) D.h.: Er sucht den Wert, welcher in der Zelle...
  3. Kann ich ein 2tes Konto verwenden

    in Microsoft Teams Hilfe
    Kann ich ein 2tes Konto verwenden: Hallo Ich habe die Lehrerlizenz und kann die Plattform Teams privat nicht nutzen, da keine Gastfunktion aktiviert ist. Kann ich mit einem 2.en Anmeldekonto Teams trotzdem privat nützen? Danke...
  4. Teams stürzt ab bei verwendung einer DSLR-Camera mit Canon Webcamutility

    in Microsoft Teams Hilfe
    Teams stürzt ab bei verwendung einer DSLR-Camera mit Canon Webcamutility: Hallo zusammen, ich habe mir die Canon Webcam Utility heruntergeladen, um meine Spiegelreflexkamera als Webcam zu verwenden. Das hat auch alles wunderbar funktioniert. Ich konnte die Kamera unter...
  5. Apple Sidecar für die Spiegelung des iPads mit dem Mac in Microsoft Teams verwenden?

    in Microsoft Teams Hilfe
    Apple Sidecar für die Spiegelung des iPads mit dem Mac in Microsoft Teams verwenden?: Als Dozent verwende ich die APP "ApowerMirror" auf dem Mac und verbinde den iPad über W-Lan mit dem Mac. Kann ich auch Apple Sidecar für das Teilen meines Bildschirms in Microsoft Teams...
  6. Verwenden von Tags in einem Chat nicht mehr möglich

    in Microsoft Teams Hilfe
    Verwenden von Tags in einem Chat nicht mehr möglich: Hallo. Wie gewohnt habe ich Mitglieder (Schüler) meines und anderer Teams mit Tags versehen nach dem Muster „Klassenbezeichnung-Gruppe A / Klassenbezeichnung-Gruppe B. Ziel: Per Chat möchte ich...
  7. Verteilergruppen in Kanälen verwenden?

    in Microsoft Teams Hilfe
    Verteilergruppen in Kanälen verwenden?: Hallo, ich möchte in verschiedenen Teams Kanäle erstellen und dort Verteilergruppen anstelle von einzelnen Usern Hinzufügen. Das geht leider nicht. Wieso? Gibt es ein Workaround, so das ich nicht...
  8. Verschiedene Blue Screen Fehler treten ausschließlich beim Verwenden von Teams, Zoom oder ...

    in Microsoft Teams Hilfe
    Verschiedene Blue Screen Fehler treten ausschließlich beim Verwenden von Teams, Zoom oder ...: Immer wenn ich Teams, Zoom oder Skype verwende treten nach kurzer Zeit verschiedene Blue Screen Fehler wie PAGE_FAULT_IN_NOPAGED_AREA SYSTEM_THREAD_EXCEPTION_NOT_HANDLED MEMORY_MANAGEMENT oder...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden