September 18, 2020, 15:21:09

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Tabelle mit Farbcodes

Begonnen von Berndi1970, September 16, 2020, 08:50:53

⏪ vorheriges - nächstes ⏩

Berndi1970

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

DF6GL

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 Sub

Das ist aber bestimmt nicht, was Du willst. Erkläre das Problem/Vorhaben etwas genauer.

Berndi1970

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

DF6GL

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).




Berndi1970

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

HB9876

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
Mit jeder Antwort komme ich weiter und lerne.

Danke!!!

Berndi1970

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.

DF6GL

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.

Berndi1970

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.

DF6GL

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.


Berndi1970

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

Beaker s.a.

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 With
Wobei, damit es übersichtlicher/leichter lesbar ist, würde ich die
drei IF... in ein SELECT CASE umschreiben.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.