Elite Veteran
Beiträge: 869
Ort: Wien | absalom - 07.04.12 18:51
ich suche eine Möglichkeit, den Alias Namen einer Tabellenspalte mit SQL / VBA zu ändern.
Ich meine wirklich den Alias einer Tabellenspalte ohne nachgeschaltete Abfrage.
Das weitere klingt eher, als meintest du keinen Alias, sondern die Eigenschaft "Beschriftung" eines Tabellenfeldes. Also die Überschrift in der Datenblattansicht einer Tabelle usw. Falls dem so ist, dann geht das nicht per SQL, weil es sich um eine Access-Eigenschaft handelt. Man kann sie aber per DAO-Programmierung einstellen bzw. erstellen, falls die Eigenschaft noch nicht existiert:
Public Sub procSetProp(strPrpVal As String)
On Error GoTo ErrProp
Dim db As DAO.Database
Dim tdf As TableDef
Dim prp As Property
Dim fld As Field
Set db = CurrentDb
Set tdf = db.TableDefs("DeineTabelle")
Set fld = tdf.Fields("DeinFeld")
fld.Properties("Caption") = strPrpVal
ExitProp:
db.Close: Set db = Nothing
Exit Sub
ErrProp:
If Err.Number = 3270 Then
Set prp = fld.CreateProperty("Caption", dbText, strPrpVal)
fld.Properties.Append prp
Resume ExitProp
End If
End Sub
Diese Prozedur kannst du z.B. in ein Standardmodul kopieren, also jene, die man im Datenbankfenster bzw. Navigationsbereich sieht. Dann kannst du sie von überall her aufrufen, z.B. so: procSetProp "1.2.2012"
Darauf gekommen bin ich aufgrund folgender Aufgabenstellung:
Eine Gruppe von Leuten machen ein oder mehrere Meetings, wobei nicht alle Leute bei allen Meetings dabei sind. Folgende Anzeige- und Tabellenstruktur möchte ich verwenden:
..........................1.2.2012......5.4.2012
Maier........................ja...............ja
Müller.....................nein..............ja
Schmidt....................ja..............nein
Für jedes weitere Meeting möchte ich die Tabelle um eine Spalte erweitern, wobei der (angezeigte) Name ein Datum ist (Ein Datum lässt sich aufgrund der konventionen) nicht als Name verwenden.
In meinem Formular könnte ich dann die Tabelle ohne Umwege anzeigen (nur die Breite müsste wohl angepasst werden) und bearbeiten.
Wenn das nicht fkt. müsste wohl eine extra Tabelle her, wo das echte Datum gespeichert wird. Ich schätze, dass ich an weiteren Stellen Mehraufwand hätte, den ich aber jetzt noch nicht abschätzen kann.
Das o.a. war die rein programmiertechnische Erläuterung, wie es ginge. Datenbanktechnisch rate ich dir heftig von einem solchen Vorgehen ab. Das wäre ok in einer Excel-Tabelle, aber nicht in einer relationalen DB. Du solltest das in mehrere Tabellen gliedern und mithilfe von Formularen und evtl. einer Kreuztabellenabfrage optisch und eingabetechnisch so gestalten wie in deiner Beschreibung.
Also 1 Tabelle für die Personendaten, 1 Tabelle für die Meetingdaten, 1 Tabelle in der du einträgst, wer teilgenommen hat. Das ist am Anfang etwas mehr Aufwand, aber sauberes DB-Design und wird dir bei vielen Auswertungen, Datenänderungen, Darstellungen in Formularen und Berichten usw. Arbeit ersparen.
----- Servus
Karl
*********
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek - Jetzt anmelden für 19./20.10. in Nürnberg
Access DevCon Vienna: https://www.donkarl.com/devcon
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy... |