Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Pflichtfelder einer Tabelle via VBA herausfinden

Mitglied: severinbuob

severinbuob (Level 1) - Jetzt verbinden

23.08.2006, aktualisiert 15:39 Uhr, 6668 Aufrufe, 6 Kommentare

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
Mitglied: SlainteMhath
23.08.2006 um 10:27 Uhr
01.
sub PflichtfelderSetzen(frm as form)
02.

03.
	Dim idx As Index
04.
	dim tdf As TableDef
05.
	dim fld as field
06.
	
07.
	set tdf=currentdb.TableDefs(frm.RecordSource)
08.
	
09.
	For Each idx In tdf.Indexes
10.
		If idx.Primary Then
11.
			For Each fld In idx.fields
12.
				frm.controls(fld.name).BackColor=vbRed
13.
			next
14.
		end if
15.
	next 
16.
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:

01.
sub Form_Load
02.
    call PflichtfelderSetzen(me)
03.
end sub
HTH
Bitte warten ..
Mitglied: severinbuob
23.08.2006 um 11:57 Uhr
Danke für deine Hilfe.

Aber zu deinen Annahmen, muss ich leider folgendes korrigieren:

- Mit Pflichtfelder meine ich, Felder, welche angegeben werden müssen (SQL: NOT NULL)
- Zum grössten Teil hole ich mir die Daten über eine Abfrage
- und zum letzten Punkt: wirklich gar keine Felder tragen den selben Namen wie in der Tabelle das heisst die ersten 3 buchstaben sind anders z.B. txtName

Finde es klasse das so schnell eine Antwort kam, war schon fast ein bisschen verdutzt. Grosses Kompliment
Bitte warten ..
Mitglied: SlainteMhath
23.08.2006 um 12:38 Uhr
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)

01.
sub PflichtfelderSetzen(frm as form)
02.
    dim rs as recordset
03.
    dim fld as field
04.
    Dim ctl As Control
05.
    
06.
		set rs=frm.recordset    
07.
 
08.
 		for each fld in rs.fields
09.
        If not fld.AllowZeroLength Then
10.
            For Each ctl In frm.controls
11.
            		if ctl.ControlSource = fld.name then ctl.BackColor=vbRed
12.
            next
13.
        end if
14.
    next 
15.
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 parat

Grosses Kompliment
Danke
Bitte warten ..
Mitglied: severinbuob
23.08.2006 um 14:07 Uhr
Hat hervorragend geklappt, habe allerdings den befehlt ein wenig verändert:
01.
Public Function pflichtfelder(frm As Form)
02.

03.
    Dim rs As DAO.Recordset
04.
    Dim fld As DAO.Field
05.
    Dim ctl As Control
06.

07.
        Set rs = frm.Recordset
08.
 
09.
        For Each fld In rs.Fields
10.
            If fld.Required Then
11.
                For Each ctl In frm.Controls
12.
                        If ctl.ControlSource = fld.Name Then ctl.BackColor = vbRed
13.
                Next
14.
            End If
15.
        Next
16.
End Function
Nun habe ich das Problem, wenn ich etwas anderes als ein Textfeld auf meinem Formular habe (button oder label) kommt die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht." Was eigentlich heisst das man die Hintergrundfarbe bei einem Label nicht über ctl.BackColor ändern kann.

Gibt es da Befehle um herauszufinden, ob es sich um ein Textfeld handelt?

Gruss Severin
Bitte warten ..
Mitglied: SlainteMhath
23.08.2006 um 14:36 Uhr
Freud mich das es klappt.

Du kannst zusätzlich noch die "ControlType" Eigenschaft des Controls abfragen. Wenn ctl.ControlType=109 dann ist es ein Textfeld

Die wichtigsten ControlType's für Formulare sind:
01.
106	CheckBox
02.
109	Textbox	
03.
110	Listbox	
04.
111	ComboBox	
Bitte warten ..
Mitglied: severinbuob
23.08.2006 um 15:39 Uhr
So nun bin ich fertig! Habe die Funktion erfolgreich getestet.

01.
Public Function pflichtfelder(frm As Form)
02.

03.
    Dim rs As DAO.Recordset
04.
    Dim fld As DAO.Field
05.
    Dim ctl As Control
06.
    Dim ctl_type As Integer
07.

08.
        Set rs = frm.Recordset
09.
 
10.
        For Each fld In rs.Fields
11.
            If fld.Required Then
12.
                For Each ctl In frm.Controls
13.
                        ctl_type = ctl.ControlType
14.
                        If ctl_type = 109 Or ctl_type = 111 Then
15.
                            If ctl.ControlSource = fld.Name Then ctl.BackColor = 14136198
16.
                            ctl.ForeColor = 16777215
17.
                        End If
18.
                Next
19.
            End If
20.
        Next
21.
End Function
Danke nochmals für deine rasche Hilfe!!

Gruss Severin
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Optionsfeld als Pflichtfeld - Excel - VBA

gelöst Frage von Sylvia123VB for Applications9 Kommentare

Hallo zusammen, ich bin gerade dabei meinen ersten Makro zu schreiben und komme leider nicht weiter. Die Aufgabe ist, ...

Datenbanken

Syntaxfehler VBA

gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, ich bräuchte Hilfe beim folgenden VBA Code(für Button in Access): Könnte mir bitte jemand erklären was ich ...

Microsoft Office

VBA Automatisierung

gelöst Frage von clockingMicrosoft Office3 Kommentare

Hallo Community, freut mich euch beigetreten zu sein. Ich werde auf folgendes Problem in allen großen Sprachen im WWW ...

VB for Applications

VBA Programmierung

Frage von specialuserVB for Applications4 Kommentare

Hallo zusammen, der Wert aus Zelle L30 und N30 soll ins wb2 kopiert werden funktionier so weit auch ganz ...

Neue Wissensbeiträge
Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Information von ChriBo vor 1 TagFirewall1 Kommentar

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 2 TagenInternet1 Kommentar

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter den Seitenbetreibern ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 3 TagenGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 3 TagenGoogle Android3 Kommentare

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Heiß diskutierte Inhalte
Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung23 Kommentare

Folgendes Problem Ich habe einen dezidierten Server beim Hoster gemietet, installiert ist Ubuntu 18.04.2 LTS‬ und als Webinterface Plesk. ...

Backup
Wo installiert man Veeam bei SoHo?
Frage von EDVMan27Backup14 Kommentare

Hallo, nachdem ich die neue Veeam CE bei mir getestet habe, wollte ich es einmal bei einem Kunden testen. ...

Batch & Shell
Tasklist überprüfen
Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird? Also nicht so dass ...

Backup
Sicherung auf externe RDX Festplatten (oder auf USB 3.0) mit Veeam Agent for Microsoft
gelöst Frage von mike7050Backup9 Kommentare

Hallo, ich sichere immer auf RDX Wechselfestplatten mit der Accuguard Software. Gesichert wird eine Windows Server 2008 R2. Einmal ...