Neuigkeiten:

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

Mobiles Hauptmenü

Bezug auf letzten Datensatz im UFO

Begonnen von Rainer 1984, Januar 03, 2013, 20:08:48

⏪ vorheriges - nächstes ⏩

Rainer 1984

Hallo,

zunächst wünsche ich Euch allen ein gutes neues Jahr!  :)

Nun zu meinem Problem: Habe in meinem HFO (Kundenstamm) ein UFO (Kundenkategorien). Die Auswahl im UFO (Geschäftskunde oder Privatkunde) ändert diverses im HFO, z.B. Bezeichnungsfeldbeschriftungen, Textfeldfarbe, Aktivität, usw. Das funktioniert völlig problemlos.

Jetzt ist mir aufgefallen, dass sich beim Hinzufügen eines weiteren Datensatzes im UFO gar nichts im HFO ändert. Es wird trotzdem der 1. Datensatz des UFO´s als Basis im HFO genommen.

Hier einer der Codes als Beispiel:
    If Me("frm_Kundenkategorie")!KundKat = "1" Then
       Me!Firma.Visible = False   'Unsichtbar
       Else
       Me!Firma.Visible = True    'Sichtbar
    End If

Hier wird z.B. die Sichtbarkeit des Textfeldes "Firma" je nach Kundenkategorieauswahl im UFO verändert.
Ursprünglich war der Kunde ein Privatkunde (1. Datensatz). Jetzt ist er Geschäftskunde (2. Datensatz). Jetzt sollte eigentlich das Textfeld "Firma" im HFO sichtbar sein, ist es aber nicht.

Versuchsweise habe ich den 1. Datensatz des UFO`s VERÄNDERT (also von Privatkunde in Geschäftskunde), da ist das Textfeld "Firma" dann erschienen.
So wie es aussieht, wird als Bezug der 1. Datensatz des UFO´s als Basis genommen, nicht der letzte.
Wie kann ich das ändern, dass immer der letzte Datensatz als Basis genommen wird?

Vielen Dank für eine Hilfe.

Viele Grüße

Rainer

DF6GL

#1
Hallo,


versteh das nicht ganz.

Es sollen sich im HFO Einstellungen ändern, wenn Du einen neuen Ds im UFO eingibst??


"Ursprünglich war der Kunde ein Privatkunde (1. Datensatz). Jetzt ist er Geschäftskunde (2. Datensatz). Jetzt sollte eigentlich das Textfeld "Firma" im HFO sichtbar sein, ist es aber nicht"


Zeigt das  UFO die Historie der Änderungen der Kunden-Eigenschaften?


Wo steht der Code und in welcher Ereignisprozedur?

Zudem ist der Vergleich = "1" vermutlich datenrtyp-mäßig  (Text)  falsch gewählt.




Die Referenz "Me("frm_Kundenkategorie")!KundKat "   bezieht sich auf den Datensatz, der im UFO aktuell den Fokus besitzt.


Wenn immer der "letzte" (jüngste) DS genommen werden soll, empfiehlt sich das Auslesen des KundKat-Wertes mittels Dlookup und Angabe enstpr. Kriterien aus der enstpr. Tabelle...


Wenn sich das HFO entspr. dem KundKat-Wert des AKTUELLEN DS im UFO ändern soll, dann wäre die Platzierung des Code im UFO angebracht.


Sub Form_Current()   'Evtl. Form_Click und/oder Form_Afterupdate()
    If Me!KundKat = 1 Then
       Me.Parent!Firma.Visible = False   'Unsichtbar
       Else
       Me.Parent!Firma.Visible = True    'sichtbar
    End If
End Sub

Rainer 1984

Hallo Franz,

ZitatEs sollen sich im HFO Einstellungen ändern, wenn Du einen neuen Ds im UFO eingibst??
Ja, ich will den 1. Ds ja nicht überschreiben, sondern einen neuen 2. Ds hinzufügen (wegen Historie).

ZitatZeigt das UFO die Historie der Änderungen der Kunden-Eigenschaften?
Wie meinst Du das? HFO und UFO sind ja miteinander verknüpft.

ZitatWo steht der Code und in welcher Ereignisprozedur?
Der Code steht im Kundenstamm (frm_Kundenstamm) und der Beginn sieht so aus:
Private Sub KundKat_AfterUpdate()

ZitatZudem ist der Vergleich = "1" vermutlich datenrtyp-mäßig  (Text)  falsch gewählt.
Welche Alternative gibt es noch?

Habe Deinen Vorschlag befolgt und den Code im UFO platziert - habe auch dieses "Parent" zwischengesetzt. Funktioniert jetzt tadellos.
Übrigens - welche Bedeutung hat dieses "Parent"?

Vielen Dank und viele Grüße

Rainer


Beaker s.a.

Hallo Rainer,
Zitatwelche Bedeutung hat dieses "Parent"?
Ein Blick in die OH fördert Folgendes zu Tage:
ZitatParent-Eigenschaft
Siehe auch          Beispiel          Betrifft          Zusatzinfo

Gibt den Namen eines Formulars, eines Objekts oder einer Auflistung zurück, das bzw. die ein bestimmtes Steuerelement, Objekt oder eine bestimmte Auflistung enthält.

Syntax

object.Parent

Die Syntax für die Parent-Eigenschaft besteht aus folgenden Teilen:

Teil Beschreibung
object Erforderlich. Ein gültiges Objekt.


Hinweise

Die Parent-Eigenschaft ist schreibgeschützt.

Verwenden Sie die Parent-Eigenschaft, um auf die Eigenschaften, Methoden oder Steuerelemente eines übergeordneten Objekts zugreifen zu können.

Diese Eigenschaft ist bei Anwendungen nützlich, in denen Objekte als Argumente übergeben werden. Sie können z. B. eine Steuerelementvariable an eine allgemeine Prozedur in einem Modul übergeben und Parent verwenden, um auf das übergeordnete Formular zugreifen zu können.
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Rainer 1984

Hallo Ekkehard,

vielen Dank für Deine Infos!

Viele Grüße und ein schönes Wochenende wünscht

Rainer

Rainer 1984

Hallo,

musste den Beitrag leider wieder aktivieren.  :-\

Der Tip von Franz mit "Parent" ist super, habe, wie bereits in Antwort #2 erwähnt, die Codes im UFO Kundenkategorien unter Form_AfterUpdate platziert.

Seit ich jedoch den Code AUCH unter "Form_Current ausführe, bekomme ich die Fehlermeldung 2455 angezeigt: Sie haben einen Ausdruck eingegeben, der einen ungültigen Verweis auf die Form/Report-Eigenschaft enthält.
Und zwar bezieht sich diese Fehlermeldung nicht auf die Verweise, die direkt auf das Hauptformular Kundenstamm "hoch" verweisen (also mit Parent), sondern in die anderen UFo´s des Formulars, z.B. das UFO Bankverbindungen. Also sozusagen vom UFO zum FO hoch und zum anderen UFO wieder runter.

Hier das Beispiel, das geht (wie von Franz vorgeschlagen):Sub Form_Afterupdate()
    If Me!KundKat = 1 Then
       Me.Parent!Firma.Visible = False   'Unsichtbar
       Else
       Me.Parent!Firma.Visible = True    'sichtbar
    End If
End Sub

Hier habe ich vom UFO Kundenkategorien auf das Hauptformular Kundenstamm verwiesen.

Und der nächste Code geht nicht:
Sub Form_Current()
    If Me!KundKat = 1 Then
       Me.Parent!Bankverbindungen!KontoNr.Visible = False   'Unsichtbar
       Else
       Me.Parent!Bankverbindungen!KontoNr.Visible = True    'sichtbar
    End If
End Sub

Hier habe ich zuerst auch mit Parent auf das Hauptformular Kundenstamm verwiesen und dann wieder auf das Unterformular Bankverbindungen und das Textfeld KontoNr. Der Verweis muss irgendwie falsch sein, ich kriege es aber nicht hin.

Wie gesagt, nur zusätzlich unter Form-Current tritt diese Fehlermeldung auf. Unter Form_AfterUpdate funktioniert der Code aber.

Viele Grüße

Rainer


DF6GL

Hallo,

heißt das UFO-Steuerelement (!) im Hauptform auch tatsächlich "Bankverbindungen"?

"nur zusätzlich unter Form-Current tritt diese Fehlermeldung auf. Unter Form_AfterUpdate funktioniert der Code aber"

was heißt das?  Liegt der Unterschied nun im Ereignis als solchem oder im Verweis auf "Bankverbindungen"?

Rainer 1984

Hallo Franz,

sorry, das "frm_" hatte ich wohl versehentlich weggelassen. 
Das Unterformular heißt frm_Bankverbindungen.

Deaktiviere ich Form_Current, wird der gesamte Code problemlos ausgeführt und das Feld KontoNr wird entsprechend ein- oder ausgeblendet.
Aktiviere ich zusätzlich Form_Current, kommt der Laufzeitfehler 2455.

Viele Grüße

Rainer