Tabellenfeld alles in Groß

Moderator: ModerationP

Tabellenfeld alles in Groß

Beitragvon Gast » 20. Nov 2020, 13:49

Hallo,
in einer Tabelle gibt es das Textfeld Geraet. Momentan ist alles in Groß/Klein gemischt (konstruiertes Bsp: Hammer, ZANGE, Schere Für PAPIER, SCHERE für Blech). Es soll alles in Großschreibung stehen. Wie macht man das? Im Formular könnte es durch einen Format-Schalter so erreicht werden. Aber ist es nicht besser, es in der Tabelle einheitlich zu haben? Danach setze ich dann den >-Schalter in der Tabelle.
Ene Aktualisierung, aber wie?
VG Sonja
Gast
 

Re: Tabellenfeld alles in Groß

Beitragvon KlausMz » 20. Nov 2020, 15:54

Hallo,
zuerst eine Aktualisierungsabfrage:
Code: Alles auswählen
UPDATE Tabellenname SET Geraet= Format([Geraet],">")

Dann im Ereignis "Nach Aktualisierung" des Feldes Gerät folgende Codezeile:
Code: Alles auswählen
Me.Geraet = Format(Me.[Geraet],">")
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 39832
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Tabellenfeld alles in Groß

Beitragvon Gast » 23. Nov 2020, 21:13

Hallo Klaus,
die Abfrage läuft, das andere auch. Vielen Dank.
Ich habe aber noch eine Nachfrage zur Klammerung.
Geraet einmal mit und einmal ohne Klammern. Geht dann VBA beim ungeklammerten Ausdruck vom Bezeichner aus oder vom Datenfeld, bei dem man ja auch die Klammern weglassen könnte, da keine Leerzeichen da sind.
Ich hatte einiges probiert, das rauszufinden. Aber ich fand nur, dass es egal ist, wie man es schreibt. Auch txtGeraet = ... funktioniert. Irgendwie gewinne ich den Eindruck, dass man das nicht so sehr beachten muss.
VG Sonja
Gast
 

Re: Tabellenfeld alles in Groß

Beitragvon knobbi38 » 23. Nov 2020, 23:45

Hallo Sonja,

Auch txtGeraet = ... funktioniert. Irgendwie gewinne ich den Eindruck, dass man das nicht so sehr beachten muss.

Vorsicht! So eine Vorgehensweise führt immer wieder zu unerklärlichen Seiteneffekten und Fehlermeldungen. Access versucht, diese Mehrdeutigkeit irgendwie aufzudröseln, was aber nicht immer richtig klappt. Deshalb gilt der Grundsatz, Steuerelementen, im Gegensatz zu Feldern, mit einem Präfix zu versehen. Damit wird es dann eindeutig und erhöht die Lesbarkeit des Quelltextes enorm.

Letztens noch ein schönes Beispiel gehabt:
es gab ein Feld und eine Textbox mit dem Namen Geraet und im Code stand die Zuweisung Me.Geraet.Locked = True
Das führte dann zur Fehlermeldung "Fehler 438 - Objekt unterstützt diese Eigenschaft oder Methode nicht!", weil Access anstatt der Textbox das Feld-Objekt angesprochen hat, welches in der Tat keine Eigenschaft .Locked besitzt.

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

Re: Tabellenfeld alles in Groß

Beitragvon Bitsqueezer » 24. Nov 2020, 10:24

Hallo Sonja,

die Klammerung hat nichts damit zu tun, ob auf das Feld oder den Controlnamen zugegriffen wird, die ist nur dazu da, um schlechte Objektnamen trotzdem verwenden zu können. "Geraet" ist ein problemloser Name, hier braucht es keine Klammern.

Ob auf den Control- oder Feldnamen zugegriffen wird, entscheidet bei Namensgleichheit VBA selbst. Dazu gibt es den Namespace, in dem alle Namen landen, meist in der Reihenfolge der Definition. Wird dann kein spezieller Kontext angegeben, wird der erste passende Name verwendet.

Daher ein Recordset etwa immer als "DAO.Recordset" oder "ADODB.Recordset" deklarieren, dann ist der Kontext definiert und VBA weiß genau, welches Objekt zu verwenden ist.

Was bei Formularen und Feld-/Controlnamen leider nicht so einfach ist, da beide über den "Me"-Kontext aufgerufen werden können. Genau könntest Du es mit "Me.Controls("Geraet")" definieren, aber dann kann der Compiler das Objekt nicht erkennen und Du erhältst erst zur Laufzeit Fehlermeldungen, wenn Du "Gereat" statt "Geraet" geschrieben hast.

Daher, wie Ulrich schon schrieb, Namen immer eindeutig halten. Ich persönlich verwende immer den Präfix "ctl" für alle Controls, die an ein Feld gebunden sind. Das macht es mit IntelliSense auch schön einfach, die Liste aller gebundenen Controls zu erhalten und sie von den Feldnamen abzugrenzen oder von allgemeinen Controls wie einer ungebundenen Textbox etc.

Was das Großschreibungsproblem angeht: Warum sollte man das machen? Die Zeiten, da alle Texte in datenverarbeitenden Maschinen nur mit Großschreibung arbeiten konnten, sind lange vorbei und es ist furchtbar, Texte mit durchgehender Großschreibung zu lesen. Wir haben heute die Möglichkeit, Texte problemlos in auch unterschiedlicher Groß-/Kleinschreibung als gleich zu identifizieren (was der Standard bei Textvergleichen in VBA und auch in den meisten Datenbanken ist) und daher zuzulassen. Will man eine einheitliche Schreibweise in Stammdaten gewährleisten, dann verwendet man entsprechende Lookup-Tabellen und läßt den Benutzer nur die Einträge daraus wählen, statt einen Freitext einzugeben.

Um Dein Beispiel aufzugreifen: "Hammer", "Zange", "Schere" wären die Stammdaten für eine Kombobox, während "Papier" und "Blech" zusätzliche Eigenschaften für das Produkt "Schere" wären, denn eine Schere könnte theoretisch für beides verwendet werden (auch wenn das jetzt ein schlechtes Beispiel ist, weil man in der Praxis wohl ein Produkt "Blechschere" und ein Produkt "Haushaltsschere" o.Ä. erstellen würde).

Diese Grunddaten, Stammdaten, werden einmal sauber definiert in der richtigen Schreibweise, der Benutzer wählt sie dann nur noch aus, dann gibt es keine Probleme mit der Schreibweise.

Gruß

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

Re: Tabellenfeld alles in Groß

Beitragvon Gast » 24. Nov 2020, 22:50

Hallo Christian,
Ich persönlich verwende immer den Präfix "ctl" für alle Controls, die an ein Feld gebunden sind.

Also nicht txt, cbo, opt, fra...? Die sind ja dann alle auch schön geordnet in der IntelliSense und die Auswahl fällt noch leichter.
Diese Grunddaten, Stammdaten, werden einmal sauber definiert in der richtigen Schreibweise

Bei mir ist es keine Lookup-Tabelle, sondern ein Feld einer Tabelle mit bis zu 6 Worten, das im Formular besonders auffallen soll.
Ansonsten danke für die Korrektur. Die Klammerung und das andere ist mir jetzt wieder klarer geworden.
VG Sonja
Gast
 

Re: Tabellenfeld alles in Groß

Beitragvon Bitsqueezer » 25. Nov 2020, 09:23

Hallo Sonja,

ja, man kann jedem Controltyp seinen eigenen Prefix vergeben, aber meine Erfahrung ist, daß es einfacher ist, sie alle mit "ctl" als Prefix zu bezeichnen, denn als DB-Entwickler weiß ich ja normalerweise, welche Control-Art ich welchem Feld gegeben habe, kenne den Datentyp der einzelnen Felder ebenso. Und wenn ich dann doch mal aus einer Kombobox eine Textbox machen muß oder umgekehrt, dann müßte ich erst den Controlnamen anpassen und dann jeden Code, der diesen Namen verwendet. Unnötige Mehrarbeit. In IntelliSense finde ich "cbo" dann auch an einer anderen Stelle als "txt", mit etlichen anderen Namen dazwischen, so daß es eine mühsame Scrollerei ist - oder ein Rumtesten mit dem Controltyp-Prefix, wenn ich nicht gerade auswendig weiß, welcher Typ es war.

Wie gesagt, mache ich so für alle Controls, die an ein Tabellenfeld gebunden sind, bei anderen, wie Commandbuttons etwa, mit Control-Prefixes.

Wenn ein Feld im Formular besonders auffallen soll, gibt es viele Formatierungsmöglichkeiten wie Farbe oder Schriftgröße, Rahmen mit Farben oder Rahmenart usw. Die Daten in reiner Großschrift finde ich dagegen unzumutbar. Meine Meinung halt.

Gruß

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

Re: Tabellenfeld alles in Groß

Beitragvon Gast » 27. Nov 2020, 13:08

Hallo Christian,
danke für die Rückmeldung.
Das mit der Großschreibung habe ich geändert wegen der anderen Optionen.
Das ctl-Prae werde ich mal bei einer anderen D.bank ausprobieren. Mal sehen, ob ich mich umgewöhnen kann.
VG Sonja
Gast
 


Zurück zu Access Forum (provisorisch)

Wer ist online?

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