Office: (Office 2010) Gültigkeit

Helfe beim Thema Gültigkeit in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; \@Ohrkester Das man über eine Ignore Liste verfügt weiß ich natürlich. Aber ich bin nicht nachtragend. Wenn mich bestimmte Leute nicht mögen so ist das... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Prof.Adv, 5. Dezember 2020.

  1. Gültigkeit


    \@Ohrkester
    Das man über eine Ignore Liste verfügt weiß ich natürlich. Aber ich bin nicht nachtragend. Wenn mich bestimmte Leute nicht mögen so ist das immer deren Sache.
    Im übrigen muß ich ja nicht zwangsläufig auf jeden Post antworten.
    Das ich jetzt nochmal antworte ist darin begründet, weil ich die netten Versuche von einigen anerkannten Experten mir zu helfen zu würdigen weiß.

    In meinem Eingangspost steht etwas falsches. Aber im Post 9 steht es richtig.
    Das Feld mit der Additionsformel steht natürlich im Kopf des UFO, nicht im HF.

    Das HF heißt FrmArtikelErfassung
    Das UFO heißt FrmArtikelerfassungUFO
    Was die Namensgebungen betrifft versuche ich mich stets weitestgehend an die Regeln zu halten. Mit dem Handling der Komponenten im Entwurf, div. Reiter etc. komme ich schon zurecht, dafür sitze ich oft zulange an bestimmten Abläufen. Das klappt schon. Wo ich immer Probleme habe ist, zu unterscheiden zwischen AUSDRUCK und oder CODE. Wenn Code dann weiß ich oft nicht wohin damit. Das lerne ich aber noch, sicher. Auch als Älterer.*Smilie

    O.T.
    Schlußendlich darf ich mich bedanken für die Hilfeangebote, was ich nicht als selbstverständlich ansehe.
    Da es in meinem Anliegen um etwas geht, was man als einfacher Anwender nicht unbedingt wissen kann, habe ich das Angebot von Elmar angenommen.
    Da bin ich sicher in guten Händen denke ich.
    Betonen möchte ich, das mein "Anliegen" den puren Luxus darstellt, weil : den aktuellen Bestand eines Artikels sehe ich ja wie beschrieben in dem Feld mit der Summe.
    Mich hat es nur interessiert, wie man als Beispiel einen Minusbestand abfängt BEVOR er gebucht werden kann. Am Rande, ich führe eine Haushalts DB, ähnlich einer Buchführung mit vielen Konten, die weit mehr zeigen kann als die Buchung von H-Milch. Die buche ich ja nicht wirklich.*cool.gif*
    Das funktioniert nur weil ich bestimmte Dinge bereits gelernt habe, auch hier aus dem Forum.
    Schönen Abend.
     
  2. \@Prov.Adv.,
    hier ein Tipp bezüglich Ausdruck
    https://support.microsoft.com/de-de/...b-8b6ec5aed41f
    Ich selbst vermeide bis auf wenige Ausnahmen die direkte Verwendung von Ausdrücken in den Steuerelementinhalten von Klassen (z.B. Formulare, Berichte) und löse das meistens über Ausdrücke in berechneten Feldern von Abfragen. Ehrlich gestanden habe ich den Ausdrucksgenerator noch nie in den vielen Jahren der Arbeit mit Access jemals verwendet.
    Jede Tabelle wird von mir prinzipiell in einer 1:1 Abfrage aufgelöst, welche
    als Datenherkunft einer Klasse (Formular oder Bericht oder...) dann zugewiesen wird.
    Da eine Tabelle nur Daten aufnehmen und wiedergeben kann, ist eine Abfrage
    auf so eine Tabelle viel flexibler und effektiver in den Bereichen FILTERN, SORTIEREN und über Ausdrücke Ergebnisse in berechneten Spalten auszuwerten.

    Ebensowenig vermeide ich übrigens auch den Einsatz von Makros (Ausnahme "Autoexec" Makro).

    Fühl Dich wohl bei Elmar...
     
    Ohrkester, 12. Dezember 2020
    #32
  3. \@Ohrkester
    Ausdrücke verwende ich in vielen meiner Abfragen. Selten als SQL. Sehr oft in Spalten um etwas zu berechnen.
    Das macht mir auch fast keine Probleme. Ohne diese Berechnungen sind Abfragen nur halb soviel wert, denke ich.
    Hier ist aber etwas ganz spezielles gefragt. Da ich ich im Ufo Kopf eine Formel (einen Ausdruck) habe der sich auf ein berechnetes Feld in der Abfrage bezieht. Das heißt, ich bilde die Summe einer [BestandMenge], welche sich ergibt auf den Zu.- oder Abbuchungen.
    Das funktioniert auch soweit super.
    Nun geht es darum eine "Überbuchung" zu blocken. Das mag blöde klingen, denn ich kann nicht 4 Milchtüten entnehmen wenn nur 3 im Kühlschrank sind. Logisch.
    Aber Tippfehler bei der Eingabe (Buchung) würde demnach zu fehlerhaften Bestand führen.
    Dieser wird dann mit einer Minus Zahl angezeigt, gemäß meiner o.g. Formel (Ausdruck)

    Das zur Erklärung, woran wir momentan tüfteln. Ich nehme an Elmar bekommt das hin.

    Schönes WE
     
  4. Gültigkeit

    \@Prof.Adv,
    Abfragen in Access sind nichts anderes als SQL. Access bietet aber als Erleichterung eine benutzerfreundliche Entwurfsansicht und übersetzt das im Entwurf Erstellte im Hintergrund in SQL-Statements.
    1. Betrachte doch mal eine Deiner Abfragen in der SQL-Entwurfsansicht.
    2. Erstelle mal eine leere Abfrage, gehe dort in die SQL-Entwurfsansicht
    und schreibe manuell Folgendes rein:
    Code:
    Statt Code:
    nimm den Namen einer Deiner vorhandenen Tabellen.
    Statt Code:
    und Code:
    nimm
    Tabellenfeldnamen von Deiner vorhandenen Tabelle.

    Angenommen dass Du eine Tabelle hast, welche den Namen 'tbl_Kunde' hat
    und die Tabellenfelder 'Vorname' und 'Nachname', dann würde es lauten:
    Code:
    Nun wechsle in die Datenblattansicht und betrachte das Ergebnis.
    Gehe in Entwurfsansicht und schau Dir das dort an.
    Sortiere darin eine Spalte, dann gehe in SQL-Entwurfsansicht und schau Dir
    die Veränderungen an.
    Spiel Dich nun mal etwas auch mit Kriterien bzw. Parametern oder füge in der Entwurfsansicht noch eine Spalte dazu und beobachte, dass Access das alles immer in SQL übersetzt (hier in Access-SQL...es gibt mehrere Dialekte anderer Datenbanken). Erstelle auch berechnete Spalten und schau Dir sie
    in der SQL-Entwurfsansicht an.
    Allerdings ist diese Entwurfsansicht von Access nur in der Lage, relativ einfache SQL-Statements abzubilden.
    Aber hilfreich ist es auf jeden Fall zu wissen, dass man SQL im Endeffekt benutzt, sobald man eine Abfrage erstellt hat.

    Noch zu ergänzender Hinweis: Per VBA kann man auch Abfragen virtuell erstellen und damit auch jede noch so komplexe Abfrage durch Umgehung der Accessabfragengrenzen realisieren.
    Es ist nicht falsch, in welchem Alter man sich auch immer befindet, letztendlich herausgefunden zu haben, dass SQL die eigentliche Datenbanksprache ist.
    Und hab keine Sorge. Ich gehöre sicherlich zu den älteren Semestern.
    Deine Überbuchung unter Kontrolle zu bringen wird Elmar bestimmt über ein simples DlookUp auf einen Bestand realisieren, bevor
    etwas zu buchen sein kann. In Deinem privaten Fall möglicherweise übertrieben, gibt es auch die Möglichkeit, eine Vorwarnstufe
    in der Artikellagerung je Artikel einzubauen, die zusätzlich auch eine maximale Bestellmöglichkeit einstellbar macht.
     
    Ohrkester, 13. Dezember 2020
    #34
  5. \@Ohrkester
    Danke dir für die Erläuterungen.
    Was ich mit SQL meinte, das ich diese Ansicht so gut wie NIE zu Gesicht bekomme. Ich wusste aber das Access dort selber werkelt.
    Da ich dieses VBA nicht richtig verstehe, ausser einfachen Dingen, sind mir diese Sprachen wie SQL zwar bekannt, ich hatte aber nie damit zu tun.
    Das erstellen von Abfragen im Entwurf klappt für meine Begriffe, meine Zwecke schon gut, obwohl es dabei klare Grenzen gibt.
    Was meinen Eingangspost betrifft, ich glaube das es für diese Überbuchungen Möglichkeiten gibt. Einfach scheint es nicht zu sein.
    Was wir bisher versucht haben läuft allerdings nicht rund. Weil, solange ich einen Artikel stufenweise um 1 reduziere bekomme ich einen Hinweis bei erreichen von 0. Buche ich aber z.Z. 4 wenn nur noch 3 im Bestand wären dann bucht Access einen Minusbestand.
    Das nur als Zwischenstand. Ich werde mal geduldig warten, das wird sicher noch gut.
    Grüsse
     
  6. Lösung: Du dafst nicht auf =0, sondern musst auf
     
  7. Hallo Maxel,
    wenn das so einfach wäre dann hätte Elmar das sicher in den Code integriert.*mrcool Ich habe das mal eben jetzt so abgeändert.*Smilie
    Allerdings zeigt das keine Wirkung. Überbuchen geht immer.
    Hier mal was ich geändert habe.....(Anhang)

    Was "tun" betrifft, ich warte weil Elmar mich darum gebeten hat. Er ist ja dran am "Feind"*Smilie

    Hab absichtlich ein Screen gemacht damit ich markieren konnte was ich geändert habe. Ich weiß nicht ob das mit PHP darzustellen geht.
     
  8. Gültigkeit

    Servus Prof.Adv,
    Wenn Du willst, dass nur noch Elmar sich darum kümmern soll, dann sag es,
    denn ansonsten verdirbst Du Dir es unglücklicherweise, dass in einem Forum
    parallel dazu mitgedacht wird, was möglicherweise auch hilfreich für Elmar sein könnte.
    Deine Codezeilen als Bild zu senden ist dahingehend unvorteilhaft, als dass man
    sich davon Inhalte erst abschreiben muss, anstatt sie einfach per Copy/Paste
    in eine Testumgebung übernehmen zu können.
    Man kann im VBA-Code auch Kommentare eingeben, indem man vor sie
    ein einfaches Hochkomma setzt.

    Code:
    So ersparst Du den Helferchen das mühsame Abtippen (möglicherweise fehlerhaft) der Codes aus Deinen Bildern.
     
    Ohrkester, 14. Dezember 2020
    #38
  9. Nun, ich möchte das Ganze nicht überstrapazieren. Wie soll ich sagen? Ich bin froh über jede Hilfe.
    Natürlich kann ich nicht auf dem Level von Elmar agieren, deshalb bitte Nachsicht.
    Ich hoffe Elmar stört es nicht wenn wir weiter gemeinsam versuchen das Ding an trockene Ufer zu bringen.
    Möchte aber auch nicht das Elmar seine Bemühungen einstellt, was ich allerdings nicht glaube, denn er arbeitet z.Z. an einem ähnlichen Projekt wie er meinte.
    Was meinst du mit deinen og. Code? Direktfenster? Verstehe das nicht genau.

    Hier der org. Code (ohne Kommentare)

    PHP:
             Private Sub Form_Current()
    Me.Bestand.Requery
    End Sub

    Private Sub Kombo_Vorgangsart_AfterUpdate()
    Dim SQL_ID As Long
    Dim str_Meldung 
    As String

    Dim int_Bestand 
    As Integer

    int_Bestand 
    Forms!FrmArtikelErfassung!ErfassungUfoBestand.Form!Bestand.Value


    If Me.Kombo_Vorgangsart.Column(1) = "Verbrauch" Then

    If int_Bestand 0 Then

    str_Meldung 
    "Im Vorrat ist nichts mehr zum verbrauchen vorhanden!" vbCrLf _
    "Erst mal einkaufen bitte."

    Beep
    MsgBox str_Meldung 
    ""vbOKOnly Or vbInformation"Ware ist alle!"

    Me.Kombo_Vorgangsart.Undo


    Me
    .Undo
    End 
    If
    Me.PARKEN.SetFocus

    End 
    If

    If 
    int_Bestand 0 Then

    Me
    .Menge.SetFocus

    Exit Sub
    End 
    If


    End Sub
     
  10. Servus Prof.Adv,

    Der Debug Printer hilft Dir bei der Fehlersuche. Insbesondere auch bei der
    Überprüfung, ob Daten und Auswertungen auch richtig für weitere Bearbeitungen nutzbar sind.
    Seine Ergebnisse werden nirgendwo gespeichert. Sie können aber
    über Strg-G in einem sich öffnenden Fenster (Direktfenster genannt) gezeigt werden.
    Einfach in der Access DB diese Tastenkombination nutzen.

    Ändere Deinen Code folgendermassen und überprüfe, welchen Wert das Direktfenster (Strg-G) anzeigt.

    Code:
     
    Ohrkester, 14. Dezember 2020
    #40
  11. Moin zusammen,
    Nein, ich habe keinerlei Einwände gegen was auch immer.
    Ohrkester hatte ich Prov.Adv bereits als netten Foristen empfohlen.
    In erster Linie möchte ich für Prov.Adv eine Datenbankdatei erstellen, an der er lernen kann, dass VBA und SQL keine Hexerei sind sondern an einem Beispiel mit vielen Kommentaren erlernbar sind.
    Immerhin hatte er in einigen seiner Beiträge geäußert, dass er VBA nicht beherrsche und daher auch manches nicht versteht, was ihm hier so an Vorschlägen zum Code erreicht.
    Auch bin ich nicht mehr der jüngste, arbeite allerdings schon sehr lange hobbymäßig mit Datenbanken. Mit ACCESS seit seinem Erscheinen. VBA kam erst später dazu nachdem mir ein Freund die Vorteile gegenüber dem Einsatz von Makros aufgezeigt hatte. Die von Prof.Adv genutzte DB ist eine kleine Lagerverwaltung mit einer Historie bezüglich der im Lager eingehenden und ausgehenden Artikel. Der aktuelle Bestand lässt sich jedoch auch anders berechnen, allerdings muss man dabei auf eine Historie verzichten. (Es werden keine Artikel mit "Eingang" oder "Verbrauch" in einer Bestandstabelle geführt)
    Für einen Bekannten erstelle ich gerade eine DB ohne Lagerhistorie, es werden nur die aktuellen Bestände anzahlmäßig aktualisiert. Lediglich das Datum (Datum_Ein und Datum_Aus) dazu wird festgehalten (letzte Änderung von Summe der Menge)
    Jeder Artikel hat nur einen Datensatz in der Bestandstabelle, die TblVorgangsart ist entbehrlich.
    @Prov.Adv: stelle doch bitte Deine abgespeckte DB mit den paar Artikeln mal hier ins Forum damit sich jeder ein Bild machen kann. Die Art und Weise der Bestandsführung (TblBestand) in Verbindung mit der TblVorgangsart habe ich so vorher noch nie gesehen, insbesondere nicht die "Masche" mit dem Feld FTwert.
     
  12. Moin zusammen.

    Im Screenshot in #37 wird auf Bestand int_Bestand then

    str_Meldung = "Im Vorrat ist nicht mehr so viel vorhanden!" & vbCrLf & "Erst mal einkaufen bitte."

    Beep

    MsgBox str_Meldung, vbOKOnly Or vbInformation, "Nicht genug Ware!"

    me.menge = int_bestand

    end if

    end sub[/quote]
     
    hcscherzer, 14. Dezember 2020
    #42
  13. Gültigkeit

    Guten morgen allerseits,
    @hans-Christian......vorweg
    Deinen zusätzlichen Code habe ich eingefügt, Fehler beim Kompilieren.- mehrdeutiger Name.
    Die DB mit dem Fehler ist im Anhang.
    Damit nicht aus der Geschichte ein Endlosvorgang wird habe ich wie von Elmar vorgeschlagen seine bereits modifizierte Mini DB
    hochgeladen. Damit nicht jeder von vorn beginnen muss.
    Diese DB ist anonymisiert, die Artikel sind erfunden.
    Die DB soll folgendes beherrschen:
    1. Es soll unbedingt eine Historie integriert sein (alle Buchungen, positiv oder negativ)
    2. Es muss immer möglich sein einzelne Buchungen zu löschen oder auch den ganzen Artikel
    3. Es muss möglich sein Lieferanten hinzuzufügen oder zu löschen
    4. Der akt Bestand soll im Kopf des Ufo immer sofort sichtbar sein
    5. Eine Überbuchung soll abgefangen werden, dabei ist zu beachten das nicht immer nur jeweils 1 Stck ausgebucht werden kann sondern auch mehr als 1.

    Die Punkte 1 bis 4 sind schon lauffähig (wenn die Codeänderung von HCScherzer entfernt ist)
    Es geht also nur um Punkt 5
    Z.B. ist es z.Z.so, das bei einem akt. Bestand von 3 bei Abbuchung von 4 ein Minusbestand entsteht.
    Das sicher abzufangen hat Elmar mit seinen Codeanpassungen versucht. Allerdings klappt das noch nicht.

    Wer möchte kann ja mal sein Glück versuchen. Wie Elmar schon sagte, ich möchte daraus lernen wie man Codes einsetzen kann.
    Mir ist bewusst das diese Dinge mein derzeitiges Wissen über ACC weit übersteigen. Aber.- man wächst an seinen Aufgaben,oder?

    Edit:
    Der angemeckerte Code stand vorher schon, bevor ich den von Christian eingefügt habe.
    Selbst wenn ich einen Artikel dazubuchen will, wenn einer vorher auf 0 stand und ich neue hinzufügen will, kommt die Meldung
    das ich keine Ware mehr habe, also stimmt da auch etwas nicht richtig.
     
  14. Logisch: wenn es schon eine vorhandene Funktion (=Ereignisprozedur) dieses Namens gibt, dann gibt es diesen Fehler, wenn Du meine Prozedur einfach hineinkopierst, ohne Dich gedanklich damit zu befassen, was Du gerade tust.
    Einfach mal Deine bislang existierende Funktion löschen.
    Ggf. die eine Befehlszeile in meine Prozedur verschieben?
    Aber ist das wirklich nötig?
    Was macht die denn? Da wird die Menge auf den Absolutwert gesetzt. Na ja, das liesse sich auch anders lösen (Gültigkeitsprüfung) ... wer gibt denn negative Wert ein?

    Wenn meine Codeänderung drin bleibt und die bisher vorhandene Prozedur menge_afterupdate rausfliegt, klappt das auch wunderbar mit Punkt 5.
    Damit der Datensatz auch gleich gespeichert wird, könntest Du noch eine Zeile einfügen:
    Code:
     
    hcscherzer, 15. Dezember 2020
    #44
  15. Code:
    Zwei Prozeduren mit gleichem Namen werden logischerweise bemängelt. Im Sinne von Eindeutigkeit müsste man sich für eine entscheiden, ggf. den Inhalt beider in einer zusammenfassen.

    Das könnte damit beginnen, dass man Code lesbar ablegt, also logisch formatiert/einrückt => End If steht sinnvoll in gleicher Einrücktiefe wie das zugehörige einleitende If usw.
    Sehen kann man den Unterschied im Beispiel von Hans-Christian und im Vergleich zu Deinem Code.

    Es dürfte einfach nachvollziehbar sein, dass ein leichtgemachtes Lesen ein Verstehen sehr befördert.

    Als Hilfsmittel für eine unterstützte Codeformatierung kann man aktuell Rubberduck verwenden, dass die nötigen Routinen vom nicht mehr verfügbaren SmartIndenter übernehmen konnte.
     
Thema:

Gültigkeit

Die Seite wird geladen...
  1. Gültigkeit - Similar Threads - Gültigkeit

  2. Sonderzeichen für Gültigen Dateinamen elemeniren

    in Microsoft Excel Hilfe
    Sonderzeichen für Gültigen Dateinamen elemeniren: Hallo miteinander, in Spalte C stehen bei mir Namen mit Projekt nummern, blöderweise können Projektnummern Sonderzeichen enthalten wirklich alles,es gibt keine Richtlinie dafür leider. ich...
  3. Laufzeitfehler '9' Index außerhalb des gültigen Bereichs

    in Microsoft Excel Hilfe
    Laufzeitfehler '9' Index außerhalb des gültigen Bereichs: Ich habe ein Makro aufgezeichnet und es läuft auch so wie es soll. Das Problem ist nur dass ich das Makro in einer Arbeitsmappe aufgezeichnet habe die sich XXX.csv nennt. Das darin befindliche...
  4. Index außerhalb des gültigen Bereichs

    in Microsoft Excel Hilfe
    Index außerhalb des gültigen Bereichs: Morgen, habe eine Masterdatei (VBE_Erz KTRM_58_59_12_13) und eine Importdatei (export1). Wenn ich die Masterdatei öffne und per Button die Importdatei importieren will, zeigt es mir immer den...
  5. Laufzeitfehler: Index außerhalb des gültigen Bereichs

    in Microsoft Excel Hilfe
    Laufzeitfehler: Index außerhalb des gültigen Bereichs: Hallo zusammen, Ich befülle einen array über einen Range: Dim oneRecord_arr() As Variant oneRecord_arr = Range("sheet1!A1:F1").Value 348328
  6. Makro gültig für alle Tabellenblätter

    in Microsoft Excel Hilfe
    Makro gültig für alle Tabellenblätter: Guten Morgen alle zusammen, *Smilie ich arbeite mit Excel Version 2003 und hab folgendes Problem: Ich hab eine Arbeitsmappe mit mehreren Tabellenblättern, in dem etliche Tabellenblätter gleich...
  7. Index außerhalb des gültigen Bereichs im Formular

    in Microsoft Access Hilfe
    Index außerhalb des gültigen Bereichs im Formular: Hallo an alle, ich komme leider nicht weiter hab jetzt in meiner DB die Fehlermeldung Index außerhalb des gültigen Bereichs. Diese Fehlermeldung bekomme ich wenn ich ein Formular erstellen möchte...
  8. Index außerhalb des gültigen Bereichs

    in Microsoft Access Hilfe
    Index außerhalb des gültigen Bereichs: Hi, ich möchte nachdem Export von Access zu Excel, die Zellen nach dem Wort "TestWort_" durchsuchen. Dieses Wort soll dan gelöscht werden und alles andere übrig bleiben. z.B.: "TestWort_12345" ->...
  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