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. "Eigene"excel-Funktion innerhalb einer Sub verwenden

    in Microsoft Excel Hilfe
    "Eigene"excel-Funktion innerhalb einer Sub verwenden: Hallo, ich möchte innerhalb einer Sub eine Berechnung mittels einer selbst erstellten Funktion durchführen. Wie kann ich die Funktion aufrufen? Grüße Reinhard Beispiel zum Verständnis Function...
  3. Funktion Filter variabel verwenden

    in Microsoft Excel Hilfe
    Funktion Filter variabel verwenden: Hallo zusammen, leider bin ich noch mit den FILTER Funktionen zu unerfahren, als dass ich es ohne Eure Hilfe hin bekomme. Ich tüftel schon seit drei Tagen herum.:confused: Ich möchte in R2 einen...
  4. Zwei verschiedene Absatzformate für Nummerierungen verwenden

    in Microsoft Word Hilfe
    Zwei verschiedene Absatzformate für Nummerierungen verwenden: Huhu, ich würde gerne zwei Absatzformate für Nummerierungen definieren, die sich im Layout unterscheiden, aber trotzdem (auch zwischen Wechsel des Formats) weiterzählen. Ich bin leider...
  5. WENN mit ODER und UND verwenden

    in Microsoft Excel Hilfe
    WENN mit ODER und UND verwenden: Hallo zusammen, ich habe hier eine für mich kniffelige Aufgabe: Ich möchte eine WENN-Funktion mit einer ODER und einer UND-Funktion verwenden. Ich habe drei Bedingungsfelder: J33 J34 K36 J33...
  6. Datum vom Datenschnitt verwenden

    in Microsoft Excel Hilfe
    Datum vom Datenschnitt verwenden: Hallo. Ich komme bei einem Problem nicht weiter. Ich habe eine Excel-Tabelle auf welcher ich einen Datenschnitt anwende. Die Daten davon werden mir dann in einem Diagramm dargestellt. Das...
  7. Die ersten und letzten "n" Zeichen einer Zelle entfernen ohne die Verwendung einer Hilfsspalte

    in Microsoft Excel Hilfe
    Die ersten und letzten "n" Zeichen einer Zelle entfernen ohne die Verwendung einer Hilfsspalte: Hallo zusammen, ich bin neu hier und wollte mich zu aller erst bedanken, dass es dieses tolle Forum gibt. Nun zu meiner Frage: Ich habe mir über "Daten"=>"Daten Abrufen" meine Ordnerstruktur in...
  8. Welche Formel verwenden

    in Microsoft Excel Hilfe
    Welche Formel verwenden: Hallo zusammen, ich soll für die Arbeit eine Tabelle erstellen, in der hervorgeht wie viele Fahrzeuge in den nächsten 10 Tagen benötigt werden. Er soll anhand des Datums und Wochentag automatisch...
  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