Mai 16, 2021, 22:54:48

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Datensätze in Endlosformular nach Abhängigkeiten hervorheben/ unterstreichen

Begonnen von Matthias_001, April 03, 2021, 08:32:15

⏪ vorheriges - nächstes ⏩

Matthias_001

Einen Guten Morgen für Euch,

ich mag Euch um Rat fragen:

In einem Endlosformular zeige ich Datensätze an die über eine Abfrage gefiltert und nach verschiedenen Kriterien sortiert sind.
In diesen Datensätzen gibt jeweils ein Feld Kalenderwoche.
Ich möchte zur besseren Übersicht nun am Ende jeder Kalenderwoche, also den letzten Datensatz der Kalenderwoche unterstreichen/ mit einer zusätzlichen Linie kenntlich machen....
Im Grund muss also erkannt werden, dass der nachfolgende Datensatz eine anderen Eintrag in Kalenderwoche hat...
Habe nun die ganze Nacht recherchiert, probiert,... und nichts passendes gefunden.

Ich freue mich auf Euren Input, herzlichen Dank.

DF6GL

Hallo,

in einem Endlosform dürfte das nicht machbar sein..


In einem Bericht könnte nach dem Datum (Kalenderwoche) gruppiert und im Gruppenfuß eine Trennlinie eingefügt werden.

Matthias_001

Hallo,

... hatte irgendwie gehofft das es doch geht.
Trotzdem Vielen Dank.

Maxel

Mit der Bedingten Formatierung könnte man die Datensätze wechselweise wochenabhängig einfärben.
Gruß
Maxel

Matthias_001

Bedingte Formatierung - wechselseitig einfärben:
Wie bekomme ich das bewerkstelligt?!

DF6GL
Gibt es keinen Ansatz die Datensätze über Berechnungen schon in der Abfrage zu "indizieren" oder sie über einen Zwischenschritt in der sortierten Form in eine temporäre Tabelle zu schreiben?!
... und dann eben über bedingte Formatierung, in Abhängigkeit des "indizierten Feldes" Linie über Farbe oder so sichtbar/ unsichtbar machen?!
Das sind so Themen über die ich bis dato gegrübelt habe

andyfau

Ungefähr so....
Sie dürfen in diesem Board keine Dateianhänge sehen.

Voraussetzung, die Tabelle ist richtig sortiert und man schafft es ein Gruppierungsfeld (hier zB. KW) zu füllen
oder leer zu lassen, wenn der Strich nicht rot sein soll. Besser wäre es noch ein extra Gruppierungsfeld in die Tabelle einzufügen. Denn die KW soll ja wohl in allen Sätzen angezeigt werden und das Gruppierungsfeld kann man dann ausblenden.

andyfau


Matthias_001

Hallo AndyFau,

so richtig komme ich bei Deinem Vorschlag nicht mit.

Also, um eine korrekte Sortierung zu haben müssten die Daten doch in eine temporäre Tabelle geschrieben werden ?!
Wie schaffe ich es dann mittels Gruppierung nur den Datensatz mit dem jeweils letzten (oder auch ersten) gleichen Kalendereintrag zu markieren/ indizieren... ein zusätzliche Spalte macht sicher Sinn.

ebs17

Zitateine Abfrage gefiltert und nach verschiedenen Kriterien sortiert
Man könnte die Abfrage um eine  laufende Nummerierung pro Kalenderwoche ergänzen. Aus dieser laufenden Nummer könnte man die jeweils höchste auswerten und für eine bedingte Formatierung heranziehen.
Die jeweils erste (=> 1) wäre selbstredend einfacher, aber mit Vorgabe des Designs und einem "irgendwie" steht ja Einfachheit nicht im Vordergrund.
Mit freundlichem Glück Auf!

Eberhard

Matthias_001


andyfau


Hallo

Wenn das Formular nur als Anzeigeformular genutzt wird und die Tabelle korrekt sortiert ist, kann über eine Zwischentabelle gearbeitet werden, die an der richtigen Stelle jeweils das Gruppenwechselkennzeichen beinhaltet. (Aber bei "nur Anzeige" tut es ein Report auch, wo man bequem gruppieren kann.)
Sollen im Formular auch Änderungen an den Datensätzen vorgenommen werden, muss aus der Zwischentabelle zurück synchronisiert werden.
Bleibt die Frage, ob der Nutzen, einen Strich bei Gruppenwechsel zur besseren Übersicht in ein Formular einzubauen, den Aufwand rechtfertigt.
Gehen tut's jedenfalls.

Hier noch ein Ansatz über VBA die Tabelle in der jeweils ersten Gruppenzeile mit eine Kennzeichen zu versorgen,
um es dann über "bedingte Formatierung" später im Formular abzufragen.

Public Sub fuellGrpMerkmal()
 
 Dim db As Database
 Dim t7 As Recordset
 Dim t7a As Recordset
 Dim KWMerker As String
 
 Set db = CurrentDb
 Set t7 = db.OpenRecordset("Tabelle7")
    'Tabelle7 muss richtig sortiert sein,
    'ansonsten entsprechende Abfrage als Eingabe-Recordset verwenden.
   
 Set t7a = db.OpenRecordset("Tabelle7a")
    'Tabelle7a kann dann als Datenquelle für ein Anzeige!-Formular verwendet werden.
    'Sollen jedoch über das Formular Daten geändert werden, muss dies natürlich in der Ursprungstabelle
     'geschehen.

 t7.MoveFirst
 If t7.RecordCount = 0 Then
    MsgBox ("Eingabetabelle ist leer.")
    Exit Sub
 End If
 If t7a.RecordCount > 0 Then
    MsgBox ("Ausgabetabelle ist nicht leer. Löschabfrage vorschalten")
    Exit Sub
 End If

 Do While Not t7.EOF
      t7a.AddNew
      t7a!Satzname = t7!Satzname
      t7a!Satzinhalt = t7!Satzinhalt
      t7a!KW = t7!KW
      If KWMerker <> t7!KW Then
         t7a!KennzeichenGruppe = "xxx"
      Else
         t7a!KennzeichenGruppe = Null
      End If
      t7a.Update
      KWMerker = t7!KW
     
      t7.MoveNext
 Loop

End Sub

crystal

Hallo,
folgende Überlegung:
1. die Tabelle ist nach KW sortiert (evtl. über eine vorgeschaltete Abfrage), also etwa "Select ... from qryVorsortierung ..."
2. in der Abfrage könnte man nun ein Feld einbauen, dass den Wechsel der KW markiert, z. B. "Marker: SetzeMarker(KW)"
3. und das ginge doch mit einer globalen Funktion, die sich die Vergleichs-KW als STATIC merkt, etwa so:
public function SetzeMarker(intKW as integer) as string
static intKWCheck as integer

   if intKWCheck <> intKW or intKW = 0 then
      intKWCheck = intKW
      SetzeMarker = "xxx"
   else
      SetzeMarker = ""
   endif

end function

4. Das Feld "Marker" kann dann im UFo für die bedingte Formatierung benutzt werden.
5. Problem könnte nur sein, dass die statische Variable eben erhalten bleibt. Also müsste es die Möglichkeit geben, sie explizit auf einen Wert zu initialisieren, z. B. mit "strDummy = SetzeMarker(0)" im Load-Event des Haupt-Formulars, in dem sich das UFo befindet.
6. Könnte sein, dass die KW als String übergeben werden muss; dann muss die Funktion entspr. angepasst werden...

Bitte probieren!

Gruß,
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

Matthias_001

... ich sage für den Moment: Danke! für die Ideen und die Zuarbeit.

Ich muss das alles mal für mich "sortieren", dachte anfänglich nicht, dass es so komplex sein kann.
Ist es aber wohl - also stellt sich tatsächliche die Frage nach dem Aufwand/ Nutzen...

Gerne schreibe ich dann wenn ich weiter bin.