Pflichtfelder einer Tabelle via VBA herausfinden
moin zusammen!
In meiner Accessdatenbank, welche ich mit Access XP erstellt habe, möchte ich nun mit VBA eine Funktion erstellen, die mir auf jedem Formular die Pflichtfelder rot hinterlegt. Also müsste die VBA funktion in die Ursprungstabelle zugreiffen und schauen ist dies ein pflichtfeld, wenn ja, rot anfärben wenn nein, nichts machen.
Vielen Dank für deine Unterstützung!
Gruss Severin
In meiner Accessdatenbank, welche ich mit Access XP erstellt habe, möchte ich nun mit VBA eine Funktion erstellen, die mir auf jedem Formular die Pflichtfelder rot hinterlegt. Also müsste die VBA funktion in die Ursprungstabelle zugreiffen und schauen ist dies ein pflichtfeld, wenn ja, rot anfärben wenn nein, nichts machen.
Vielen Dank für deine Unterstützung!
Gruss Severin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 38573
Url: https://administrator.de/contentid/38573
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
6 Kommentare
Neuester Kommentar
sub PflichtfelderSetzen(frm as form)
Dim idx As Index
dim tdf As TableDef
dim fld as field
set tdf=currentdb.TableDefs(frm.RecordSource)
For Each idx In tdf.Indexes
If idx.Primary Then
For Each fld In idx.fields
frm.controls(fld.name).BackColor=vbRed
next
end if
next
end sub
Zugrunde liegende Annahmen:
- Mit "Pflichtfelder" meinst Du den/die Primärschlüssel der Tabelle
- Das Formular benutzt direkt die Tabelle als Datenquelle und kein Query oder SELECT
- Die Felder im Formular haben die selben Namen wie die Felder in der Tabelle
Aufruf:
Im Load-Event des Formulars:
sub Form_Load
call PflichtfelderSetzen(me)
end sub
HTH
Ah, ok... Versuchs mal hiermit (Code aus dem Kopf hingeschrieben - also keine garantie für Syntax/Funktion... aber ich denke Du siehst in welche Richtung das geht)
sub PflichtfelderSetzen(frm as form)
dim rs as recordset
dim fld as field
Dim ctl As Control
set rs=frm.recordset
for each fld in rs.fields
If not fld.AllowZeroLength Then
For Each ctl In frm.controls
if ctl.ControlSource = fld.name then ctl.BackColor=vbRed
next
end if
next
end sub
Finde es klasse das so schnell eine Antwort
kam, war schon fast ein bisschen verdutzt.
Bin grad ueber einem aehnlichen Problem - deshalb hatt ich das grad so paratkam, war schon fast ein bisschen verdutzt.
Grosses Kompliment
Danke