Hallo Experten,
ich würde gerne eine Art Statusabfrage in einem Eingabeformular realisieren.
Das Ganze soll in einer Tabellenform erscheinen (2x4 Felder) und ich möchte jedem Feld durch anklicken einen Farbcode (rot, gelb oder grün) zuweisen.
Wie kann ich das machen?
Habe überhaupt keine Idee
Bin über jeden Vorschlag dankbar.
Gruß,
Berndi
Hallo,
etwas kurz und unklar beschrieben...
lt.:
Zitatjedem Feld durch anklicken einen Farbcode (rot, gelb oder grün) zuweisen.
Sub MeinTextfeld1_Click()
Me!MeinTextfeld1.BackColor =vbRed 'oder Me!MeinTextfeld1.BackColor =RGB(255,0,0)
End SubDas ist aber bestimmt nicht, was Du willst. Erkläre das Problem/Vorhaben etwas genauer.
Okay, danke für die Resonanz.
Hier mein Versuch es etwas anschaulicher zu erklären:
Ich benutze eine Access-Eingabemaske als Besprechungsprotokoll, die während eines täglichen Online-Teams-Meetings allen Teilnehmern eingeblendet wird. Dort gebe ich stichpunktartig die Inhalte der einzelnen Berichte in vorgefertigte Textfelder ein.
Die "Sprecher" geben nach ihrem Statusbericht eine Gesamteinschätzung des Tagesgeschehens ab.
Rot = schlecht
Gelb = ging so
Grün = hervorragend
Ich möchte nun die Eingabe dieser Einschätzungen grafisch im Eingabeprotokoll darstellen.
Das Ganze in Form von acht Punkten oder Feldern, die je nach dem eine der Farben annimmt.
Gruß,
Berndi
Hallo,
das wird so einfach nicht funktionieren. Ich befürchte, dass da noch Einiges an der Tabellenkonstruktion zu verbessern ist, wenn das Ganze Hand und Fuß haben soll ( und wenn ich voraussetze, dass die Daten zu einer Art Historie führen sollen)
Warum soll die "Schätzung" mit 2*4 Feldern dargestellt werden?
Was ist, wenn sich die Anzahl der Berichte mal ändert?
Zeige mal den Screenshot des Beziehungsfensters (Tabelle hinzufügen und alle Tabellenfelder sichtbar machen).
Ich habe noch gar nicht begonnen, kann dir also auch noch keinen Entwurf zeigen.
Bin jetzt mit meinen Überlegungen so weit, dass ich es der Einfachheit halber bei der Dateneingabe vielleicht "nur" mit "+", "o", "-" mache und die Aufarbeitung der Datensätze im Word dann entsprechend farblich formatiere.
In diesem Fall könnte ich es mit einem einfachen Auswahlfeld (8 Stück) realisieren...
ZitatIch benutze eine Access-Eingabemaske als Besprechungsprotokoll
ZitatIch habe noch gar nicht begonnen, kann dir also auch noch keinen Entwurf zeigen.
Das wiederspricht sich doch irgendwie, oder?
Wenn du eine Eingabemaske (Formular) hast, dann baue da doch eine Option (Dropdown als Bsp.) ein und es kann ausgewaehlt werden.
Dann im Report (oder wie zeigst du die Daten an) ueber eine Formatierung die Farbeinstellung (was auch im Formular klappen sollte).
Ansonsten verstehe ich dich evtl. falsch, aber das sollte dann so funktionieren
Ja, das bestehende Formular will ich um die Option mit den Farbfeldern erweitern.
Einen Report erstelle ich nicht.
Ich habe die Eingabemaske so "ansehnlich" gemacht, dass man keinen Report braucht.
Die spätere Archivierung der Protokolle im Papierform (muss sein) erfolgt mit Word.
Ich hatte ursprünglich die Idee, dass man das mit den Farben schon bei der Dateneingabe verwirklichen könnte, sehe aber ein, dass eine Farbe nicht unbedingt einen weiterverwertbaren Datensatz darstellt.
Da ist es mit "+", "o", "-" schon einfacher, denke ich.
Hallo,
verstehe ich das richtig, als dass Du gar keine Tabelle(n) hast und auch keine willst und das Formular als solches nur zum Eintippen von Texten hernimmst, das Du dann drucken willst?
Die eingetippten Texte sollen auch nicht gespeichert werden?
Wenn das so ist, ist Access wohl fehl am Platz. Dafür kannst Du gleich ein normales Word-Dokument mit Steuerelementen benutzen.
Wenn's doch ein einsames Access-Formular sein soll, dann kannst Du die Farben so einstellen, bzw. die Textfelder so bearbeiten, wie ich es dir vorher gezeigt habe.
Nein, nein...
Die eingegeben Daten sollen schon zur späteren Weiterverarbeitung in einer Datenbank liegen.
Das spätere Ausdrucken eines Protokolls ist dann nur eine Möglichkeit der Weiterverarbeitung.
Was die von dir beschrieben Methode angeht, so kann das angeklickte Feld ja nur eine Farbe oder keine haben.
Ich brauche allerdings eine von drei Farben oder keine.
Hallo,
nun, wenn ich das jetzt recht interpretiere, willst Du eine Art Besprechnungsprotokoll mit Bewertung der einzelnen Themen führen..
Bevor wir uns mit Farbgebung und sonstigen visuellen Schnickschnack befassen, legen wir die Grundkonzeption der minimal benötigten Tabelle fest:
tblBesprechungen:
BsprID (Autowert)
Bspr_Bez (Text)
Bspr_Datum (Datum/Uhrzeit)
Bspr_PersZahl (Long)
Bspr_Notiz (LangerText)
.
.
tblPersonen:
PersID (Autowert)
Pers_Vorname (Text)
Pers_Nachname (Text)
.
.
.
tblBesprechungsThemen:
BTID (Autowert)
BT_Topic (Text)
BT_BsprID (Long)
BT_PersID (Long
BT_BWID (Long)
BT_Beschreibung (Langer Text)
.
.
tblBewertungen:
BWID (Autowert)
BW_Bez (Text)
BW_FarbCode (Long)
.
.
Beziehungen
tblPersonen 1:n tblBesprechungsThemen n:1 tblBesprechungen
tblBewertungen 1:n tblBesprechungsThemen
Formulare für jede Tabelle
frmBesprechungen: Einzelform mit UFO frmBesprechungsthemen
frmBesprechungsthemen: Endlosform mit Kombifeldern für BT_PersID (Datensatzherkunft tblPersonen) und BT_BWID (Datenherkunft tblBewertungen)
Um die Bewertungen (an das entspr. Kombifeld oder ein anderes farblich einstellbares Steuerelement) farblich zuzuweisen wird der Farbcode entspr. der BWID ausgelesen und dem Steuerelement zugewiesen.
....also ich habe mir jetzt etwas hingebastelt, womit ich ganz gut hinkomme.
Ich habe acht Textfelder gemacht, in die man entweder ein "+", ein "o" oder ein "_" eintragt, und die dann eingefärbt werden.
Jetzt habe ich im VBA eine Unterroutine zum Einfärben geschrieben und möchte jetzt den Feldnamen an diese Unterroutine übergeben.
Leider klappt das nicht, wie es soll.
hier mein Code zur Veranschaulichung:
Private Sub Form_Current()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim Datum, ID
Dim SUN_S, SUN_Q, SUN_R, SUN_E, SOR_S, SOR_Q, SOR_R, SOR_E As Variant
Datum = Format(Form.Datum, "m") & "/" & Format(Form.Datum, "d") & "/" & Format(Form.Datum, "yyyy")
Set db = CurrentDb ' Datenbank definieren
strSQL = "SELECT [Datenbank Betriebsroutine].* FROM [Datenbank Betriebsroutine] WHERE ((([Datenbank Betriebsroutine].[Datum])=#" & Datum & "#));" ' SQL-String definieren
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) ' Recordset öffnen (schreibender Zugriff)
ID = rs!ID
SUN_S = rs!SUN_S
SUN_Q = rs!SUN_Q
SUN_R = rs!SUN_R
SUN_E = rs!SUN_E
SOR_S = rs!SOR_S
SOR_Q = rs!SOR_Q
SOR_R = rs!SOR_R
SOR_E = rs!SOR_E
rs.Close ' Recordset schließen
Call einfaerben("SUN_S", SUN_S)
Call einfaerben("SUN_Q", SUN_Q)
Call einfaerben("SUN_R", SUN_R)
Call einfaerben("SUN_E", SUN_E)
Call einfaerben("SOR_S", SOR_S)
Call einfaerben("SOR_Q", SOR_Q)
Call einfaerben("SOR_R", SOR_R)
Call einfaerben("SOR_E", SOR_E)
End Sub
Sub einfaerben(Feld, Wert)
On Error Resume Next
With Me!Feld
If Wert = "+" Or Wert = "o" Or Wert = "-" Then
.Visible = True
If Wert = "+" Then
.BackColor = vbGreen
.ForeColor = vbGreen
End If
If Wert = "o" Then
.BackColor = vbYellow
.ForeColor = vbYellow
End If
If Wert = "-" Then
.BackColor = vbRed
.ForeColor = vbRed
End If
Else
.BackColor = vbWhite
.Value = ""
End If
End With
End Sub
Leider klappt das nicht.
Wahrscheinlich muss ich die Variable "Feld" wohl noch irgendwie anders deklarieren, weiß aber nicht wie.
Hallo Bernd,
Sub einfaerben(Feld, Wert)Die Parameter sind hier als Variant deklariert. D.h., dass du hier
Call einfaerben("SUN_S", SUN_S)einen String übergibst. Ein Textfeld ist aber ein Steuerelement, -
also
Sub einfaerben(sFeld As String)
'"Wert" brauchst du hier nicht extra; - das entspricht Feld.Value
Dim ctl As Access.Control
Set ctl = Me(sFeld)
With ctl
If .Value = "+" Or .Value = "o" Or .Value = "-" Then
'usw.
End WithWobei, damit es übersichtlicher/leichter lesbar ist, würde ich die
drei IF... in ein SELECT CASE umschreiben.
gruss ekkehard
Danke