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, 6612 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, ...

Microsoft Office

Exscel Tabelle in Spalten Aufteilen.... VBA

Frage von thomas1972Microsoft Office2 Kommentare

Hallo, ich habe eine Excel Tabelle, welche ich als CSV Datei exportieren möchte. Soweit so gut, nur bekomme ich ...

Microsoft Office

EXCEL VBA Termindaten aus Tabelle Filtern

Frage von t3jxbusMicrosoft Office

Hallo, ich habe hier folgenden Codeblock gefunden für VBA im Excel: Das ganze funktioniert auch soweit super. Ich beschreibe ...

VB for Applications

Excel 2013 VBA Tabellen aufrufen

Frage von Just4fun1990VB for Applications5 Kommentare

Hallo Administrator.de User, ich habe leider folgendes Problem. Und zwar soll Excel bei einem inaktiven Fenster eine Tabelle aufrufen. ...

Neue Wissensbeiträge
Administrator.de Feedback
Unsere Datenbank wurde umgestellt
Information von Frank vor 54 MinutenAdministrator.de Feedback

Hallo User, ich habe in der Nacht unsere Datenbank umgestellt. D.h. neue Version (MySQL 8) und andere Örtlichkeit. Sollte ...

Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 2 TagenSonstige Systeme5 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 2 TagenDatenschutz3 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Windows 10

Macht Windows 10.1809 Probleme mit gemappten Netzlaufwerken (betrifft wohl insbes. AMD-Hardware und Trend Micro AV-Produkte)?

Tipp von VGem-e vor 2 TagenWindows 103 Kommentare

Moin Kollegen, grad dazu gefunden und Hatten wir dies nicht bei früheren W10-Upgrades ebenfalls? Da bleibt nur, das Upgrade ...

Heiß diskutierte Inhalte
Windows 10
Programm unter Windows 10 automatisch mit administrativen Rechten starten
Frage von GrafmulderWindows 1016 Kommentare

Hallo zusammen! Zur Situation: Ich benutze Windows 10 Pro für Workstations (Build 1803) mit zwei Konten. Einem Administratorkonto und ...

Windows Server
Cisco Annyconnect Secure Mobility Client - Windows2003 Server unable to connect
Frage von novregenWindows Server11 Kommentare

Von einem Windows 2003 Server soll eine Verbindung über Cisco Anyconnect Mobility Client zu einer Gegenstelle aufgebaut werden. Die ...

LAN, WAN, Wireless
Empfehlung Powerline Adapter
Frage von AgilolfingerLAN, WAN, Wireless9 Kommentare

Hallo Zusammen, ich brauche eine Empfehlung von euch. Ich möchte in einem privaten Haushalt eine Powerline Lösung einrichten. Allerdings ...

Microsoft
Schulungs-Microsoft-Konten zentral verwalten
Frage von thejarneMicrosoft9 Kommentare

Hallo zusammen, wir haben bei uns in der Firma 12 Computer-Arbeitsplätze für EDV-Schulungen, wo u.A. auch Computer-Basics-Kurse (wie verwende ...