Neuigkeiten:

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

Mobiles Hauptmenü

Felder un/sichtbar machen

Begonnen von uwe01, Februar 05, 2012, 13:57:20

⏪ vorheriges - nächstes ⏩

uwe01

Hallo,

ich muss noch einmal das Thema Felder un/sichtbar aufnehmen. DF6GL und Optiplex hatten mir schon einmal zu diesen Thema geantwortet. Mit der Antwort von DF6GL bin ich nicht so richtig klar gekommen.
Nun habe Ich es selber versucht mit Select Case bei Änderung, und habe alles eingeklimpert und muss jetzt beim Starten feststellen das, das was Ich will nicht gemacht wird. Habe mal einen Auszug aus meiner DB angehangen, vielleicht kann mir einer ein Tipp geben warum meine Anforderung nicht erfüllt wird.  ???

LG

[Anhang gelöscht durch Administrator]
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

Stapi

Hallo Uwe01

Möchtes du in Abhängigkeit der Feldes "Type" Felder ein / ausblenden, wäre eine Möglichkeit es so zu machen.
Dim stLinkIndex as String

stLinkIndex =Me.Type

If stLinkIndex = Zugmaschine then

'Deine Felder ausblenden

ElseIf stLinkIndex = Motorwagen then

'Deine Felder ausblenden
End if

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

uwe01

Hallo Stefan,

danke dir für deine Antwort, aber ich kann mit "stLinkIndex" nicht wirklich etwas anfangen. Ich finde auch nichts in ein Buch darüber. Nun weiß Ich auch nicht wie es  da den auch im VBA weiter geht. Hast du da vielleicht mal ein Beispiel.

LG
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

bahasu

Hallo,

wenn Du Dir mal anschaust, was in "Typ" drinsteht und was Du in case vergleichst, wirst Du sehen, dass Du z.B. die  "Zugmaschiene" mit einer Zahl vergleichst.

Ist es gewollt, dass in Typ "Zugmaschiene" gespeichert wird und nicht die id vom dazupassenden Datensatz?

Entweder Du passt das an oder musst die case-Abfrage umformulieren.

Harald

PS:
Das Ausblenden des Stop-Schilds führte bei mir zum Programm-Abbruch. Nur mit dem taskmanager kam ich raus.
"Kennzeichen" ist als Feld in der Abfrage nicht vorhanden
Servus

DF6GL

Hallo,

ich empfehle , Folgendes dringend zu ändern:

-- in den Namen der Tabellenfelder KEINE SONDER-/LEERZEICHEN  zu verwenden ("-","/"," ")
-- im Code die Referenz auf das akt. Formular mit "Me" zu bezeichnen
-- im Code auch diegenigen Namen(sbezeichnungen) zu verwenden, die es auch tatsächlich gibt.
-- sicherheitshalber auf Umlaute zu verzichten
-- wie schon angesprochen, mit den ID-Werten  zu operieren (Typ in der Tabelle "Fahrzeuge/Wechselbrückenverwaltung"  als Fremdschlüsselfeld (Zahl, Long) ausführen.  (Auch hier, wie oben gesagt, auf Sonderzeichen verzichten!). Erfordert Anpassung der Einstellungen des Auswahl-Kombifeldes für "Typ"
-- im Beziehungsfenster eine Beziehung zwischen den beiden Tabellen herstellen, wenn möglich (und das sollte hier der Fall sein) mit ref. Integrität
-- keine veralteten DoCmd.DoMenuItem - Befehle mehr verwenden, auch wenn die der Assistent immer noch generiert.
-- Prüfen der einzelnen Felder auf Atomisierung (Ausdröselung und Auslagerung von zusammengesetzten Bezeichnungen in extra Tabellen (analog zu "Typ")
-- letztendlich sich überlegen, ob solche Timer-Ereignisse für das "Blinken" der Stop-Schaltfläche wirklich nötig sind....




uwe01

Hey,

Sorry hätte vielleicht das blinken des Stoppschildes rausnehmen sollen (habe eine neue DB eingestellt), das Feld Kennzeichen habe ich raus genommen da es ein Auszug aus einer bestehenden DB ist. Mir geht es ja eigentlich nur um das ein/ausblenden Problem.
Es ist richtig das das ich Case mit einer Zahl vergleiche, denn bei der Zahl handelt es sich um die ID des Typs. Also steht die 1 für Zugmaschine. Bin ich doch der Meinung dass ich es mit der Zahl vergleichen kann, oder bist du der Meinung ich solle es Fahrzeugtyp vergleichen.
Bin für jeden Vorschlag oder Idee dankbar.

LG Uwe01

Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

Stapi

Hallo Uwe01

stLinkIndex ist eine Variabel die den Inhalt deines Feld "Type" beinhaltet, nun wird über die If Funktion verglichen bei welcher IF Bedingung der Inhalt der Variabel mit der Zugmaschine gleich ist. Wenn das geschieht wird mit dem then Befehl deine Felder im Nachgang ein/aus geblendet.

@bahasu der von dir beschriebene Weg,  ist sicher der richtige Weg mit der ID zu Arbeiten nur dann muss @uwe01 in dem Kombifeld mit Colum() arbeiten.

@Df6gl seine Empfehlung sollte natürlich beachtet werden.

Gruß Stefan
Grüße aus dem schönen NRW
Stefan

database

#7
Hallo,

das Kombifeld ist falsch ausgeführt, es liefert KEINE Long Integer zurück daher funktioniert auch der Vergleich durch Case nicht!!
Du musst in die Datenherkunft die ID der Herkunftstabelle an die erste Stelle der Abfrage aufnehmen und die Spaltenanzahl auf 2 stellen.
Spaltenbreiten dann auf 0 und 3 cm einstellen, damit die gebundene Spalte (Long Integer) ausgeblendet wird und der Text angezeigt bleibt.

@Stapi
"....dann muss @uwe01 in dem Kombifeld mit Colum() arbeiten...."
im oben beschriebenen Fall nicht - auf die Weise wird die ID zurückgegeben, wenn das Kombifeld abgefragt wird, da die ID die gebundene Spalte darstellt.

Die Feldnamen / -bezeichnungen stimmen im Code nicht mit den Feldnamen/ - bezeichnungen im Formular überein.
Wenn du den Vorschlag von DF6GL bezüglich der Benamsung nicht nachkommst musst du ALLE Feldnamen mit Sonderzeichen etc. in eckige Klammern setzen! z.B. Me![Int-Nr].Visible=True

Das Ereignis 'Typ_Change' ist für deine Aufgabe nicht geeignet, nimm besser das Formularereignis 'Beim Anzeigen' (Form_Current)
So werden die Felder auch beim Durchblättern der Datensätze ein-/ausgeblendet.

HTH

uwe01

Hallo Database ,

Danke dir für die Hinweise habe das Kombifeld mit ID versehen. Seitdem erhalte Ich eine Fehlermeldung die da lautet: ,,Sie haben ein Wert eingegeben der für dieses Feld nicht zulässig ist" woran liegt den das jetzt schon wieder.
Habe auch Ereignis geändert, jetzt im Formularereignis ,,beim Anzeigen". Nun wenn ich im Combofeld etwas ändere bleibt das Formular unverändert, ändere Ich etwas in der Schnellsuche und gehe auf 600 Nummern dann wird ,,Tüv" ausgeblendet.
Dieses sollte aber beim Kombifeld Typ der fall sein.
Wie kann Ich jetzt das Formularereignis ,,beim Anzeigen" auf mein Kombifeld verweisen, damit bei Änderungen Felder ein/ausgeblendet werden.
Habe  noch mal die überarbeitet DB mit angehangen


    @ Df6gl deine Empfehlung werde ich versuchen zu beachtet .

    @ auch vielen Dank an Stapi und bahasu für eure Antworten.

LG Uwe01

[Anhang gelöscht durch Administrator]
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

DF6GL

Hallo,


anbei und nur bezgl. des Fehlers und der Textfeld-Steuerung

[Anhang gelöscht durch Administrator]

uwe01

Danke dir,

wenn ich das jetzt richtig deute dann machst du beim Anzeigen des Formulars ein Verweiß auf das Kombifeld Typ.
Und dann im Kombifeld nach Aktualisieren das Ereignis.
Klingt Logisch.



LG Uwe01
Gruß Uwe01
Win 10, Access 2002/2013
Bitte um Verständliche Antworten !

DF6GL

Hallo,


im Afterupdate-Ereignis des Kombis werden je nach ausgewähltem ID-Wert irgendwelche Textfelder sichtbar/unsichtbar gesteuert.

Damit das auch beim Anzeigen von anderen Datensätzen funktioniert, wird die Afterupdate-Prozedur auch im Form-Current-Ereignis aufgerufen.

Das Tabellenfeld Typ wurde von TEXT nach LONG umgestellt, weil es ja den ID-Wert aus dem Kombifeld aufnehmen muss.