Registersteuerelement Seiten leeren

Moderator: ModerationP

Re: Registersteuerelement Seiten leeren

Beitragvon knobbi38 » 23. Okt 2021, 12:07

Wie, den Wert des Steuerelements im Direktfenster anzeigen zu lassen?
Code: Alles auswählen
? txtStadtID.Value


Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3586
Registriert: 02. Jul 2015, 14:23

Re: Registersteuerelement Seiten leeren

Beitragvon Gast » 23. Okt 2021, 14:47

Hallo Ulrich, ich meinte, dass du über die LinkFields des UFO Controls zu machen.
Warum stehen die
im Plural? Man gibt doch nur an Feld an?
VG Petra
Gast
 

Re: Registersteuerelement Seiten leeren

Beitragvon knobbi38 » 23. Okt 2021, 16:54

Hallo Petra,

ich kann dir leider nicht mehr ganz folgen, aber die LinkFields stehen im Plural, weil dort auch mehrere Felder/Steuerelemente angegeben werden könnten.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3586
Registriert: 02. Jul 2015, 14:23

Re: Registersteuerelement Seiten leeren

Beitragvon Bitsqueezer » 23. Okt 2021, 20:14

Hallo Petra,

Petko hat geschrieben:a) Ich benannte das Linkfeld txtStadtID, bei dir ctl_StadtID. Ctl statt txt als Präfix – hat das einen tieferen Sinn?


Das ist meine Namenskonvention, ich benenne alle Controls mit dem Prefix "ctl_", i.d.R. die datengebundenen. Nur Buttons beginnen mit "cmd". Das macht es in der Programmierung viel einfacher, das richtige Control zu finden. Denn wenn ich aus einer Textbox irgendwann eine Kombobox mache, müßte ich aus "txt" erst "cmb" machen usw.

Petko hat geschrieben:b) Das Linkfeld mit Wenn(IsError(… abzusichern, hatte ich gar nicht bedacht. Ich hatte nur =[sfmStaedte].[Formular].[StadtID], was auch geht, aber wohl nicht so gut ist. Gefühlsmäßig denke ich, dass Access zu einem Umweg gezwungen wird, wenn man das Control angibt statt den Feldnamen direkt.
Man könnte ja auch durch VBA das Linkfeld bestücken.
Ist es generell besser, möglichst alles ohne VBA hinzubekommen wie hier?
Ich kann mir jetzt auch nicht vorstellen, was da zu einem Fehler führen könnte, der Wenn(IsError(… nötig macht.


Ich weiß nicht mehr, was der Grund war, aber das Feld hatte einen Fehler produziert, je nach Auswahl der Stadt. So ist man auf jeden Fall sicher.
Ja, Du kannst auch in Form_Current des UFOs das Linkfeld setzen, das geht dann schneller.
Ja, wenn Access etwas schon selbst kann, verzichtet man i.d.R. besser auf VBA. Wie gesagt, hier kann man per VBA die Performance verbessern, deswegen würde ich das hier der Formel vorziehen.

Petko hat geschrieben:c) du belässt den Datensatzmarkierer (DSM) im Ufo; ich ließ ihn weg, um mehr das Aussehen einer Liste zu haben. Dann schlug ich mich damit herum, das gewählte Feld markiert zu bekommen, damit es auch zu sehen ist, wenn man in das 2. Ufo wechselt. Nicht geschafft. Ich versuchte die bedingte Formatierung. Ist eine Markierung des gewählten Datensatzes ohne Zuhilfenahme des DSM überhaupt hinzubekommen?

Der Datensatzmarkierer ist halt eine einfache und schnelle Lösung, wenn auch nicht optimal (da man damit auch mehrere Zeilen markieren kann, was aber für eine Filterung theoretisch auch verwendet werden könnte).

Ja klar kann man das hinbekommen. Per Form_Current im UFO:

Code: Alles auswählen
Private Sub Form_Current()
'    If Not Me.NewRecord Then                   ' ist bei dem UFO nicht notwendig, da Snapshot, also unveränderlich, aber für andere Formulare sollte man das berücksichtigen
        Me.ctl_CurrentID = Me.ctl_StadtID
'    End If
End Sub

Wobei "ctl_CurrentID" dann die aktuelle StadtID ist, selbst aber ungebunden ist (damit in jedem Datensatz gleich). Per CF kannst Du den Wert dann mit der StadtID vergleichen und wenn gleich, z.B. die Hintergrundfarbe der Textbox Stadt verändern.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8492
Registriert: 21. Jun 2007, 12:17

Re: Registersteuerelement Seiten leeren

Beitragvon Gast » 24. Okt 2021, 21:14

Hallo,
danke
@Ulrich
muss ich später nochmal genauer durchdenken. Momentan Zeit ein bißchen knapp.

@Christian
Per CF kannst Du den Wert dann mit der StadtID vergleichen

in "Bedingte Formatierung" die Regel "Feld hat Wert" genutzt.
Für txtStadt (im Städte-Ufo) bei "Wert = " einiges getestet ohne Erfolg.
Wenn das Ufo frmUfo heißt. Was muss dann da stehen?
"frmUfo.Formular.txtStadtID_f" hilft nicht, die Ausfüllfarbe zu zeigen.
Dto. bei "StadtID_f" (hätte ich erwartet, da ja von Feldwert die Rede ist und nicht von dem Control des Feldwerts)
Formualr weglassen hilft nicht.
Also wie adressiert man das richtig?
Danke und lb Gruß
Petra
Gast
 

Re: Registersteuerelement Seiten leeren

Beitragvon Bitsqueezer » 24. Okt 2021, 21:22

Hallo Petra,

Du setzt das ungebundene Textfeld in den Header des Städte-UFOs und setzt es auf versteckt. Im Beispiel der Name "ctl_CurrentID", ungebunden.
Form_Current (der Code oben) setzt den Wert auf die aktuelle StadtID.

Im CF setzt Du auf "Ausdruck" und stellst dann den Vergleich zwischen ctl_CurrentID und ctl_StadtID her, der nur für eine Zeile (die aktuelle) True ergibt, die wird dann gefärbt.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8492
Registriert: 21. Jun 2007, 12:17

Re: Registersteuerelement Seiten leeren

Beitragvon petko » 25. Okt 2021, 09:04

Hallo Christian,
danke, ich habe mich in folgendes verrannt und kriege es nicht hin.
Ich habe noch einmal eine andere Adressierung der Stadt im Städte-Ufo versucht und wundere mich, dass sie nicht funktioniert.
Um die richtige Adressierung zu finden, ging ich so vor.
In einem Button des Detail-Ufos liest diese Zeile den FK aus:
Code: Alles auswählen
lngID = Nz(Forms![frmHaupt]![sfmHauptUfoEinzelheiten].Form![txtstadtID_f])

Diese Zeile meldet die richtige Stadt dazu:
Code: Alles auswählen
Debug.Print DLookup("Stadt", "tblStaedte", "stadtID=" & Str(lngID))

Die Adressierung ist also wohl richtig.
Diese Adressierung wird nun für das Textfeld txtStadt im Städte-Ufo als Regel für CF verwendet:
Code: Alles auswählen
DomWert("Stadt";"tblStaedte";"stadtID=" & Formulare![frmHaupt]![sfmHauptUfoEinzelheiten].Formular![stadtID_f])

Obwohl doch der Wert von txtStadt mit obigem DomWert übereinstimmt, färbt sich das Textfeld nicht.
Was ist mein Denkfehler?
VG Petra
petko
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17
Registriert: 20. Okt 2021, 15:02

Re: Registersteuerelement Seiten leeren

Beitragvon Bitsqueezer » 25. Okt 2021, 09:31

Hallo Petra,

ich finde es gut, daß Du Dich immer erst selbst an dem Problem versuchst, bevor Du fragst, so lernt man am meisten. Allerdings war die Lösung hier ja schon benannt und da hast Du Dich wohl wirklich etwas verrannt...;)

Du hast ein Ufo mit der Liste der Städte, um das ging es, weil Du ja hier den Datensatzzeiger gegen eine farbliche Markierung ersetzen wolltest.

Daher weiß ich nicht, was Du mit dem FK aus dem Einzelheiten-Unterformular willst - das ist die gefilterte Liste, die soll doch so bleiben, wie sie ist.

Es gibt daher auch nichts groß zu addressieren.
Nochmal: Alles folgende bezieht sich ausschließlich auf das "Städte"-Unterformular, also das linke unter der Kombobox.

Hier setzt Du im Header oder im Footer des Formulares ein neues Textfeld und setzt es auf versteckt, Label kannst Du löschen.
Wenn das Control den Namen "ctl_CurrentID" hat, kannst Du im Detailbereich des gleichen UFOs das Feld "Stadt" mit einem CF belegen, bei dem Du die Formel auf "Ausdruck ist" setzt und dort schreibst:
Code: Alles auswählen
[StadtID]=[ctl_CurrentID]

Und da das Textfeld ungebunden ist, muß es noch den Wert des aktuellen Datensatzes bekommen, das macht der "Form_Current"-Code oben, ebenfalls im gleichen Unterformular.

Mehr ist es nicht...:)

Du mußt natürlich auch darauf schauen, daß die "Stadt"-Textbox keinen durchsichtigen Hintergrund hat und daß Dein CF auch wirklich eine Hintergrundfarbe ändert.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8492
Registriert: 21. Jun 2007, 12:17

Re: Registersteuerelement Seiten leeren

Beitragvon petko » 25. Okt 2021, 10:36

Hallo Christian,
geschafft, äh, ich meine nicht mich, sondern die CF :D
Ein herzliches Dankeschön für deine Hilfe und dein Verständnis! Das sieht jetzt gut aus.
"Ausdruck" statt "Wert" muss ich mir merken.
Das soll sich jetzt erstmal setzen bei mir und mach das später noch mal.
VG Petra
petko
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17
Registriert: 20. Okt 2021, 15:02

Re: Registersteuerelement Seiten leeren

Beitragvon Bitsqueezer » 25. Okt 2021, 19:46

Hallo Petra,

schön, daß Du geschafft bist...ähm...es geschafft hast... :D

Dann setz Dich mal, bis es sitzt... :lol:

In ESO würde ich jetzt sagen "/congrats", aber das Emote gibt's hier noch nicht.. :wink:

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8492
Registriert: 21. Jun 2007, 12:17

Re: Registersteuerelement Seiten leeren

Beitragvon petko » 26. Okt 2021, 11:52

Hallo Christian,
ging wieder.
Aber es ist viel zu beachten.
Kann man eigentlich das fertige Ufo als Muster abspeichern, um es für andere Projekte zu haben? Vielleicht die Anwendungsparts? Die sind bei mir total ungenutzt. Oder gibt es andere OPtionen?
VG Petra
petko
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 17
Registriert: 20. Okt 2021, 15:02

Re: Registersteuerelement Seiten leeren

Beitragvon Bitsqueezer » 26. Okt 2021, 12:34

Hallo Petra,

klar
  • Du kannst einfach eine Demo-Datenbank machen, wo Du alle Dinge, die Du wiederverwenden möchtest, ablegst. Die kannst Du per Drag&Drop in ein anderes Access-Fenster mit geöffneter Datenbank rüberschieben (= kopieren).
  • Du kannst eine Datenbank als Addin speichern und dann per Referenz einbinden, dann kannst Du alle Objekte der eingebundenen Datenbank direkt nutzen, quasi wie eine "Access-DLL". Nur bei Formularen/Reports muß man etwas tricksen, um sie zu öffnen. Die Methode eignet sich vor allem für wiederverwendbare Codemodule.
  • Anwendungsparts ist auch eine Methode, muß man sich nur etwas mit auseinandersetzen. Ich habe die nur einmal vor einigen Jahren genutzt, um es auszuprobieren, müßte mich da erst wieder einlesen, aber ja, geht. (Allerdings nicht als UFO, Anwendungsparts sind eigenständige Objekte, wie etwa komplette Formulare usw.)

Alle Methoden haben ihre Vor- und Nachteile. Die "offenste" und einfachste Lösung ist die erste. Nur erhält man hier natürlich immer nur eine Kopie, die dann nach Weiterentwicklung entweder in der Demo oder in der Anwendung nicht wechselseitig auf dem neuesten Stand ist.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8492
Registriert: 21. Jun 2007, 12:17

Vorherige

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 18 Gäste

cron