Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Kein Eintrag im Textfeld WENN ....

Begonnen von Nicolo#22, Oktober 12, 2025, 09:40:05

⏪ vorheriges - nächstes ⏩

Knobbi38

Hallo Nicolo,

du hast mit der BeispielDB nun ein Grundgerüst, wo du das ein oder andere ausprobieren kannst, ohne deine eigentliche DB antasten zu müssen. Was das Ausblenden oder sperren der Eingabe betrifft, könntest du analog wie bei der Sub Enable... vorgehen und z.B. die ausgewählte ID übergeben. Im UF würde man dann diese ID mit einem Select Case auswerten und entsprechend die Einstellungen vornehmen. Das Prinzip sollte ja jetzt bekannt sein.

ZitatEs wird zum allerletzten DS mit der höchsten ID gesprungen und der wird in der ersten Zeile des UF angezeigt.
Um jetzt weitere DS anzufügen bedarf es weiterer Schritte.
Das alles entfällt aber mit der DoCmD Zeile Last.
Ich weiß nicht genau, was du da eigentlich vor hast. In #12 beschreibst du das etwas anders. Auch kann ich jetzt keinen Unterschied in der Wirkungsweise zwischen deinem Beispielcode und dem Code in der BeispielDB erkennen. Um dir dabei helfen zu können, fehlen mir anscheinend noch ein paar Informationen.

ZitatVBA als solches mag eine wunderbare Möglichkeit sein Dinge zu programmieren.
Aber ist ungeeignet für den normalen Datenbank User. Mein ich.
Access ist ein Tool zum erstellen von Datenbankanwendungen und das Unterstützt mit seinen eingebauten Assistenten und spezialisierten Steuerelementen dabei. Für den Rest und die "Feinarbeit" ist die Programmiersprache VBA vorgesehen und damit unabdingbar. Makros spielen dabei eine eher untergeordnete Nebenrolle aus "alten Zeiten". Wenn man in den durch die Assistenten vorgegeben Datenfluss eingreifen und an seine Bedürfnisse anpassen möchte, sind VBA Kenntnisse gefordert, da wird man nicht drumherum kommen. Es müssen ja nicht gleich professionelle Ansprüche daran gestellt werden, aber es ist dann schon ein ambitioniertes Hobby, für das man auch einige Zeit investieren muß. Die Lernkurve ist schon ein ganz andere als z.B. bei Excel und hat eigentlich mit einem "normalen" User nichts zu tun.

Knobbi38

Beaker s.a.

@Ulrich
ZitatDas Prinzip sollte ja jetzt bekannt sein.
Vermutlich nicht.

@Nicolo
ZitatNur.- in meinem UF sind noch weitere Textfelder in die Daten eingegeben werden müssen/sollen in der gleichen Zeile.
Ausserdem ist es so das bei Wahl der Kriterien 1 bis 7 andere benachbarte Textfelder als dieses Textfeld "Betrag"
abgeblendet werden sollten um eine Eingabe von Daten zu unterbinden.
Da kommen bei mir ernste Zweifel an der Korrektheit des Datenmodells auf. Poste doch
bitte mal ein Bild des Beziehungsfensters mit alle Tabellen und allen Feldern sichtbar.

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)

Nicolo#22

Hallo, danke für eure große Mühe mir zu helfen. Das vorab.
Ich hab inzwischen die erforderlichen VBA Codes analog zur sample.db angepasst und in meine DB eingefügt.
Die sample.Db bzw. die Codes dort machen allerdings etwas anderes das was ich beabsichtige.
Es werden in einer "Adressdatei" die Nachnamen abgeblendet, wenn Nr.8 in der Kombibox gewählt wird.
Ich hatte etwas anderes im Sinn. Ähnlich aber anders.
Ich versuche es mal zu beschreiben.
Das Frm hat die Teile HF und ein UF.
Im HF Detailbereich ist ganz oben das Kombifeld. Es hat 8 Einträge.
Im unteren Teil ist das UF. mit den Datensätzen bestehend aus Textfeldern und 2 Kombiboxen.
Wähle ich jetzt z.B. die Nr.8 (KontenID) dann werden im UF nur die Daten gelistet die dazu gehören.
Gleichzeitig wird der letzte vorh. DS angezeigt, darunter die Zeile für eine neue Eingabe.
Damit werden also neue DS immer den jeweiligen Konto zugeordnet.
Je nach Auswahl in der Kombibox sind das immer Daten die zum jeweilgen Konto gehören.
Das ist grob die Funktionsweise dieses Frm.
Ausgewertet werden die Daten natürlich in anderen speziellen FRM basierend auf passenen Qry.
Mein Ziel war es jetzt:
Wenn ich in der Kombibox die 8.Position wähle, dann sollte in den erscheinden UF Zeilen (Datensätze) nur
das Textfeld BETRAG abgeblendet werden, so das nicht da eingetragen werden kann.
Aber die bisherige Funktion das zum letzten DS gesprungen wird muss erhalten bleiben.
Der Code dazu steht in #7 weiter oben ebenfalls unter After Update. Das macht es pikant.
Ebenso sollen KEINE Textfelder abgeblendet werden wenn etwas anders als 8 gewählt wird (1-7)
Dazu ist dann ggfs. später noch Arbeit nötig, weil dann andere Textfelder abgeblendet werden sollen.
-
Nachdem ich ich die Codes von Knobbi38 entsprechend angepasst eingetragen habe kommt "Laufzeitfehler"
Die Codes vertragen sich nicht.

Datenmodell? Das ist schon alles für meine Bedürfnisse ok und funktioniert seit mehreren Jahren top.
Die Tabellen sind korrekt mit allen Verknüpfungen, auch mit referentieller Integrität.
-
Nur meine Idee mit dem Abblenden des Textfeldes ist jetzt neu.
Ich hoffe die Beschreibung ist nicht zu wirr. Hört sich vielleicht konfus an.
Funktioniert aber bisher tadellos nach Wunsch.
Betone, es handelt sich hier um eine rein private Datenbearbeitung, nix professionelles.


Knobbi38

Hallo Nicolo,

wie wäre es denn, wenn du eine abgespeckte, anonymisierte Beispiel DB hier hochlädst, mit genau diesen beiden Formularen HF und UF, so daß man die Funktionalität erkennen kann?

Das würde es etwas einfacher machen.

Gruß Knobbi38


 

Beaker s.a.

Hallo Nicolo,
ZitatAber die bisherige Funktion das zum letzten DS gesprungen wird muss erhalten bleiben.
Das hatten wir dir ja gezeigt, passt dir aber nicht. Da stellt sich doch
die Frage, welcher DS bei dir der letzte sein soll.
Bei Access ist der Letzte immer abhängig von der ausgewählten Menge und
der Sortierung. Das gilt auch für die anderen Move-Methoden. Um auf einen
bestimmten DS zu positionieren ist die FindFirst-Methode des RS m.E.
die sicherere.
ZitatDas ist schon alles für meine Bedürfnisse ok und funktioniert seit mehreren Jahren top.
Das liest man hier oft, - kann aber trotzdem falsch sein.

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)

Nicolo#22

hallo ekkehard, finde keine Option um hochzuladen in dem Menü, kann das sein?

MzKlMu

#21
Hallo,
Antwort anklicken, dann findest Du unten den Button
"Attachments and other options".
Bitte das Beispiel "Komprimieren/Reparieren" (Access Dienstprogramm) und dann die DB als Zip-File hochladen.
Auf anonyme Daten achten.
Gruß Klaus

Nicolo#22

Hallo Ekkehard & Knobbi
Hier die kleine DB. Habe alles entfernt was nicht benötigt wird zu testen.
Bitte macht euch aber keine übermässige Arbeit damit.
Danke

Knobbi38

Hallo Nicolo,

habe dir das jetzt mal eingebaut. Ob ich aber das HF an eine Datenquelle binden würde, eher nicht. Es reicht, wenn die benötigten Daten in die Kombobox geladen werden und dann bei der Auswahl angezeigt werden. Das Leeren der Kombobox selber nach einer Auswahl muß m.M. nach auch nicht sein, verwirrt nur.

Einen Kardinalfehler solltest du aber nicht machen:
das SubForm-Steuerelement sollte niemals den selben Bezeichner/Namen bekommen wie das darin gebundene Formular! Ich weiß, der Assistent macht das so, sollte aber trotzdem nachträglich immer manuell angepaßt werden.

Knobbi38

Nicolo#22

#24
Zitat von: Knobbi38 am Oktober 17, 2025, 12:36:04das SubForm-Steuerelement sollte niemals
Das wusste ich nicht, sonst hätte ich das nie so gemacht. Wieder was gelernt.
..
Die erste Ansicht lässt im Grunde nur eins zu. Bewunderung.
Die Codes sind ziemlich unterschiedlich zu vorher. Bis auf des gewünschte Abblenden
machen sie aber das gleiche oder?
Denke mir das dieses Formulieren der Codes einen Spielraum für den Programmierer beinhalten. Viele Wege.
Denn.- diese FindFirst Geschichte hab ich wie gesagt aus dem MS Form. Das hab ich
dort mal abgeschaut, von einem der Spezi.
Jetzt muss ich nur noch versuchen die perfekten Modi in meine DB zu bauen, ohne Fehler.
Ein guter Schritt ist gemacht in die künftige Verwendung.
Übr.: Wer sowas wie jetzt hier kann, der hat die Kenntnisse nach sehr intensivem Studium und viel Praxis erworben. Ich würde dazu Jahre brauchen. Aber dieses Niveau werde ich nie erreichen.
Vielen vielen Dank.
@Beaker s.a.  Das Datenmodell scheint i.O. zu sein.

Beaker s.a.

Hallo Nicolo,

Wollte es schon geschrieben haben, bin dann aber umhin gekommen.
Ja, das DM stimmt so.
ZitatDas wusste ich nicht, sonst hätte ich das nie so gemacht. Wieder was gelernt.
Ich mache es immer so, das ich einfach unterschiedlich Prefix verwende; -
uffFormname UnterFormularForm
ufcFormname UnterFormularControl

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)

Nicolo#22

Nachtrag
Habe einen Fehler drin, im UF weiß aber nicht wo.
Die Zeile
' Form events
Private Sub Form_Current()
  txtBetrag.Enabled = Not CBool(txtKontenID_F = 8)
End Sub
Meldet Fehler beim kompilieren Variable nicht definiert.
Blau hinterlegt ist >txtKontenID_F =8<

Wo muss ich ansetzen?

Knobbi38

Hallo,

wie aus dem Präfix "txt" zu entnehmen ist, ist das keine Variablenbezeichnung, sondern die Bezeichnung einer Textbox, die an das Feld "KontenID_F" gebunden ist. In diesem Fall ist die Textbox im Footer des Unterformulars platziert.

Der Hintergrund ist relativ einfach. I.d.R. verwende ich gebundene Textboxen, damit nicht direkt auf das Feld selber zugegriffen werden muß (hier für den Vergleich mit der Konstanten '8'). Solche Textboxen platziere ich dann gerne auch im Footer, um während der Entwicklungsphase Werte einfach kontrollieren zu können. Die besondere Bedeutung wird dabei durch die Darstellung rot auf gelb kenntlich gemacht und das Steuerelement für die Eingabe gesperrt. Wenn die Testphase beendet ist, wird entweder der Footer oder das Steuerelement einfach versteckt.

Wenn du das für ein anderes Formular übertragen möchtest, kannst du die Technik einfach mit übernehmen oder du greifst stattdessen direkt auf das 'Daten'-Feld zurück.

Btw.: innerhalb eines Reports solltest du immer alle Felder an ein Steuerelement binden; direkte Zugriffe auf ein Feld werden in einem Report manchmal von Access einfach "weg optimiert".

Knobbi38

PS:
Das der Code etwas anders aussieht, liegt schlichtweg daran, daß in deinem Beispiel dieser etwas vereinfacht werden konnte.





Nicolo#22

#28
aha, jetzt weiß ich aber nicht wo ich was beim übertragen übersehen habe. Ich meine WO muss ich nachschauen?
Was versteckt ist kann ich ja nicht mit übernehmen

EDIT
Habe es gefunden. Da muss man aber erstmal drauf kommen.

btw.
angenommen ich möchte das Prozedre jetzt noch vertiefen, zum Beisp. wenn ich nicht die Konstante 8 sondern
die 1 bis 7 wähle, dann sollen die TxtFelder ZE  ZE_KM  HeW abgeblendet sein.
Dann muss sicher der Code
' Form events
Private Sub Form_Current()
  txtBetrag.Enabled = Not CBool(txtKontenID_F = 8)
End Sub
erweitert werden um diese Varianten oder muss ich dafür sep. neue Frm bauen?
Wäre aber purer Luxus. Die jetzige Lösung reicht mir.

Knobbi38

Hallo Nicolo,

ich habe jetzt mal die Programmlogik etwas erweitert, so daß auch beliebige Kombinationen von Textboxen je nach ID gesperrt werden können oder nicht.

Um dies generischer umzusetzen und leicht erweiterbar zu machen, wird ein Array mit Referenzen auf die Textboxen verwendet. Damit der Zugriff auf eine bestimmte Textbox einfacher und gezielter möglich ist, wird zusätzlich eine Aufzählung als Index für das Array erstellt. In diesem Fall ist dies möglicherweise etwas übertrieben, aber es soll lediglich das Prinzip veranschaulicht werden. In größeren Projekten kann das hilfreich sein.

Gruß Knobbi38