Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Textfelder vergleichen mit Fehlermeldung

Begonnen von Dietmar, November 26, 2014, 12:05:38

⏪ vorheriges - nächstes ⏩

Dietmar

Hallo zusammen,
ich habe ein Hauptformular mit dem Textfeld MatDicke und eins MatFarbe die mir die entsprechenden Daten des Fertigproduktes anzeigen.
Im Unterformular habe ich ebenfalls ein Textfeld MatDicke und eins MatFarbe das mir die entsprechenden Daten des Rohproduktes anzeigen.

Nun möchte ich im Unterformular ein Textfeld einrichten das mir eine Fehlermeldung anzeigt falsches Rohmaterial, wenn die Daten nicht übereinstimmen.
Wie kann ich das machen?
Gruß
Dietmar

MaggieMay

Hallo Dietmar,

du kannst bspw. in der Ereignisprozedur zum Unterformularereignis "Beim Anzeigen" folgenden Code einfügen:If Me.MatFarbe <> Me.Parent.MatFarbe Or Me.MatDicke <> Me.Parent.MatDicke Then
    Me.txtFehler = "Fehler!"
Else
    Me.txtFehler = ""
End If

Zusätzlich kannst du die Prüfung in den Ereignissen "Nach Aktualisierung" der beteiligten Textfelder vornehmen.
Freundliche Grüße
MaggieMay

Dietmar

Hi,
es funktioniert leider nicht, der Fehler liegt denke ich bei mir.
Ich habe gesagt, dass ich ein Hauptformular habe und ein Unterformular.
Es ist aber so, das ich ein Hauptformular habe und zwei Unterformulare
die Daten müssen aus dem 1.Unterformular mit dem Namen Auftragsdaten mit dem zweiten Unterformular Auftragsbearbeitung verglichen werden.
Sorry!
Gruß
Dietmar

MaggieMay

Dann könnte es folgendermaßen klappen:
If Me.MatFarbe <> Me.Parent.Auftragsbearbeitung.Form.MatFarbe Or Me.MatDicke <> Me.Parent.Auftragsbearbeitung.Form.MatDicke Then
vorausgesetzt, "Auftragsbearbeitung" ist (auch) der Name des Unterformularsteuerelements.
Freundliche Grüße
MaggieMay

Dietmar

Hi,

habe jetzt alle mir möglichen Versuche probiert aber es funktioniert einfach nicht.
In der  FehlerTextbox wird nichts angezeigt!

Private Sub Form_Current()
If Me.MatFarbe <> Me.Parent.frmAuftragsbearbeitung.Form.MatFarbe Or Me.MatDicke <> Me.Parent.frmAuftragsbearbeitung.Form.MatDicke Then
    Me.txtFehler = "Fehler!"
Else
    Me.txtFehler = ""
End If
End Sub


Makros sind aktiviert, Textfeld heißt txtFehler
Gruß
Dietmar

DF6GL

Hallo,

wenn der Code sich  im Unterform "frmAuftragsbearbeitung" befindet (vermutlich, weil "txtFehler" dort vorhanden ist, dann sollte das so syntaktisch lauten:

If Me!MatFarbe <> Me.Parent!MatFarbe Or Me!MatDicke <> Me!Parent.MatDicke Then

Dietmar

Hi,
danke für deine Antwort. Du hast recht das Textfeld txtFehler befindet sich im Unterformulat frmAuftragsbearbeitung.
Wenn ich den Code so ändere wie du es beschrieben hast, bekomme ich genau in der Zeile beim Starten des Formulars einen Debuggen.
Gruß
Dietmar

DF6GL

Hallo,

und welche Fehlermeldung?

zeig mal den Code, den Du jetzt geschrieben hast.

MaggieMay

Hallo,
Zitat von: Dietmar am November 26, 2014, 17:40:20Es ist aber so, das ich ein Hauptformular habe und zwei Unterformulare
daraus hatte ich geschlossen, dass die beiden Ufos nebeneinander liegen, was aber nicht der Fall ist.

Der folgende Code sollte aus dem 2. Ufo heraus funktionieren, sofern die Feldnamen stimmen:If Me.MatFarbe <> Me.Parent.Form.MatFarbe Or Me.MatDicke <> Me.Parent.Form.MatDicke Then

Hinweis:
Ufos werden vor dem HF geladen, also wird auch UF2 vor UF1 geladen, wodurch beim Öffnen des HF der Zugriff von UF2 auf UF1 vermutlich fehlschlägt. Der Fehler müsste dann abgefangen bzw. ignoriert werden.
Freundliche Grüße
MaggieMay

Dietmar

Hallo ,
vielen Dank für deine Mühe. So langsam kommen wir der Sache näher.
Habe auf Empfehlung ein neues Formular gebastelt. Also so wie ich es zu Anfang beschrieben habe. HFO und UFO.
In meinem Unterformular werden mehrere Datensätze angezeigt, wenn eine Unstimmigkeit vorhanden ist, wird das auf alle Datensätze übertragen bei einer richtigen Eingabe ebenfalls, sonst funktioniert das.
Gruß
Dietmar

MaggieMay

In einem Endlosformular kannst du die Prüfung nicht per VBA vornehmen, da musst du das über den Steuerelementinhalt des Textfeldes lösen, bspw. so:

=Wenn(MatFarbe <> Parent.Form.MatFarbe Oder MatDicke <> Parent.Form.MatDicke;"Fehlermeldung";"")
Freundliche Grüße
MaggieMay

Dietmar

Hallo MaggieMay,
jetzt funktioniert es wie gewünscht herzlichen Dank!
Gruß
Dietmar