collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 58
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13797
  • stats Beiträge insgesamt: 63470
  • stats Themen insgesamt: 8600
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Pflichtfeld  (Gelesen 678 mal)

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 132
Pflichtfeld
« am: Mai 06, 2017, 17:08:44 »
Hallo zusammen.
Ich habe in einem HFo zwei Ufo, in dem einem UFo (Endlosformular) werden die Daten über das ander UFo eingetrage (( um immer die Eingabe oben und nicht am ende des Endlosformular zu erzeugen)). Auswahl Kombifeld1, Kombifeld2 und Textfeld werden über Column ausgewählt/ausgefüllt. Wenn Kombifeld1 oder Kombifeld2 ausgewählt wird habe ich im ((Code: Me.Anzahl.SetFocus )) um zum letzten Textfeld zu springen welches als Pflichtfeld funktionieren soll  <---- Alles okay, Cursor blinkt in dem Feld.
Jetzt mein Problem:
 Wenn ich die Eingabetaste oder Pfeile betätige fängt ein neuer Datensatz an oder mit der Maus auf irgendwas anderes klicke (klar) ist der gesetzte SetFocus futsch.
Wie bekomme ich das hin das Feld "Anzahl" zur Eingabe zu zwingen und nicht wieder einen neuen Datensatz aufruft ?
Mfg. Udo
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1850
Re: Pflichtfeld
« Antwort #1 am: Mai 06, 2017, 17:13:45 »
Hi,
im Formular gibt es das Ereignis "Vor Aktualisierung".
Dort kannst Du abfragen, ob es einen Eintrag in Deinem gewünschten Feld gibt.
Falls das nicht der Fall ist, setze Cancel = true, damit Du eine Angabe machen musst.

Ich hoffe, ich hatte Dein Anliegen korrekt verstanden.

Harald
Servus
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Pflichtfeld
« Antwort #2 am: Mai 06, 2017, 18:12:06 »
Hallo,
vermeide unbedingt ein Feldname "Anzahl", Anzahl ist eireserviertes Wort.
In einem Feld mit Z.B.
=Anzahl*EPreis mit nicht der Inhalt Anzahl verwendet, sondern die Anzahl der Datensätze. Auch wenn man [Anzahl] verwendet führt das zum gleichen Fehler.

Zudem stellt sich die Frage wozu hier Column notwendig ist. Ein Kombifeld sollte an das Schlüsselfeld gebunden werden, dann braucht es auch kein Column.
Gruß
Klaus
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 132
Re: Pflichtfeld
« Antwort #3 am: Mai 06, 2017, 18:43:12 »
Okay, Anzahl werde ich gleich nochmal umbenennen.
Warum die Column? Artikelnummer und Artikelbezeichnung kann man über die Kombifelder auswählen, wenn eine Auswahl getroffen ist füllt sich das andere Kombifeld mit dem dazugehörigem Wert (ArttikelNummer oder Bezeichnung)
Problem ist dabei das die Auswertung nach Auswahl mit dem Befehl Me.Refresh erfolgen muss, da ich noch nicht in dem Feld ((((Anzahl)))) eintragen konnte meckert er schon nach der MsgBox.

Private Sub Form_BeforeUpdate(Cancel As Integer)

    If IsNull(Anzahl) Then
           
    MsgBox " Bitte die Anzahl eingeben "
       
    End If

End Sub
----------------------------------------------------------------------------
Private Sub Kombinationsfeld41_AfterUpdate()

Artikel = Me!Kombinationsfeld41.Column(2)
    Hersteller = Me!Kombinationsfeld41.Column(3)
    Me.Refresh
   
   
    Me.Anzahl.SetFocus

End Sub
----------------------------------------------------------------------
Private Sub Kombinationsfeld42_AfterUpdate()

Bezeichnung = Me!Kombinationsfeld42.Column(0)
    Hersteller = Me!Kombinationsfeld42.Column(3)
    Me.Refresh
   
    Me.Anzahl.SetFocus

End Sub
Mfg. Udo
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Pflichtfeld
« Antwort #4 am: Mai 06, 2017, 19:22:02 »
Hallo,
Zitat
Warum die Column? Artikelnummer und Artikelbezeichnung kann man über die Kombifelder auswählen, wenn eine Auswahl getroffen ist füllt sich das andere Kombifeld mit dem dazugehörigem Wert (ArttikelNummer oder Bezeichnung)
Was ein Kombifeld anzeigt lässt sich viel einfacher über die Spaltenbreiten steuern, da braucht es kein Column, da braucht es keinen Code, keinen Buchstaben.

Das Feld "Anzahl" (bzw. der neue Name) kannst Du in der Tabelle zum Pflichtfeld machen über eine Gültigkeitsregel (Ist Nicht Null) und auch eine Meldung ausgeben.
"Das Feld Anzahl darf nicht leer sein".

Dann hast Du ohne einen Buchstaben zu programmieren alles was Du brauchst.

Der Code zum Prüfen ist auch unvollständig, da der Parameter Cancel nicht genutzt wird.
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Anzahl) Then
        MsgBox " Bitte die Anzahl eingeben "
        Cancel = True
    End If
End Sub
Die Datenherkünfte der Kombis dürften auch falsch sein. Die 1. Spalte (0) sollte  auf den Fremdschlüssel verweisen und das kann nicht (bzw. sollte nicht) die Bezeichnung sein.
Und beide Kombis müssen die gleiche Datenherkunft und Einstellungen haben bis auf die Spaltenbreiten.

Du solltest also erst mal den Durcheinander beseitigen.
Aber wie gesagt wahrscheinlich ist gar kein Code erforderlich.

Zitat
um immer die Eingabe oben und nicht am ende des Endlosformular zu erzeugen)).
Das lässt sich mit ungebunden Feldern im Formularkopf eines Endlosforms viel einfacher realisieren. Mit einem echten Button zum Speichern wo man dann auch alle Pflichtfelder prüft. Da wird dann aber VBA benötigt.
Dazu findest Du im Anhang ein Beispiel.

PS:
Bitte für Code die Codetags des Forums benutzen.
« Letzte Änderung: Mai 06, 2017, 19:41:49 von MzKlMu »
Gruß
Klaus
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 132
Re: Pflichtfeld
« Antwort #5 am: Mai 06, 2017, 19:35:32 »
Hallo Klaus.
Das mit der Gültigkeitsregel habe ich auch schon gemacht aber wenn ich aus dem UFo gehe (in einem anderen UFo in dem HFo oder das HFo) kommt die Gültigkeitsregel nicht zum greifen weil ich die Eingabe nicht bis zum ende durchgeführt habe (Quasi wartet die Gültigkeitsregel auf einen Wert den ich noch nicht eingegeben habe). Wenn ich in dem besagten UFo bleibe und auf ein anderes "Feld/Befehlsfläche" gehe dann schon. Ich müsste also einen Befehl haben die Eingabe bis zum ende durchzuführen, bevor ich ein anderes UFo  gehe oder das HFo "Anklicke"
Mfg. Udo
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6938
Re: Pflichtfeld
« Antwort #6 am: Mai 06, 2017, 19:42:35 »
Hallo,
bitte noch mal lesen, ich habe noch einiges ergänzt.
Und was ist mit den anderen Hinweisen ?
Hast Du das probiert mit dem Cancel ?
Gruß
Klaus
 

Offline Icemann1970

  • Access-Profi
  • **
  • Beiträge: 132
Re: Pflichtfeld
« Antwort #7 am: Mai 07, 2017, 01:48:41 »
Hallo Harald und Klaus.
Ja..... ich habe vergessen    Cancel = true   zu schreiben.
Jetzt Funktioniert es. Vielen Dank !!!
Danke auch für die DB im Anhang.
Ich Habe es etwas anders gemacht. Beide Kombifelder haben den gleichen Herkunftsort. In dem ersten kann ich die Artikelnummer aussuchen (beim einschreiben) bei dem anderen halt die Bezeichnung. Das Feld welches zuerst ausgewählt wird ergänzt automatisch das andere Feld, welches ich mit Refresh versucht hatte. Habe es jetzt mit SetFocus von den einzelnen Kombis auf den jeweils nächsten geschubst und es wird zugehörig aktualisiert.
Beispiel folgt.
Mfg. Udo