Hallo,<br>
ich möchte in einem DBGrid die Zeile eines Datensatzes mit rotem Hintergrund anzeigen, wenn mindestens einer der Detaildatensätze einen kritischen Wert aufweist. Grundsätzlich kann ich das ja über DrawColumnCell erreichen, aber scheinbar nur, wenn ich auf einen Wert in der mit dem Grid verbundenen Tabelle zugreifen kann.<br>
Die DataSets sind alles TQueries, die Mastertabelle ist read-only, daher kann ich kein berechnetes Feld verwenden (zumindest wird OnCalcFields nie ausgeführt). Auch die SQL-Abfrage lässt sich nicht so formulieren, dass der kritische Wert der Detailtabelle dort bereits erkennbar wäre (es sind vier Felder, deren Kombination erst den kritischen Zustand ausmacht und die nicht über eine Aggregatfunktion ermittelbar sind).<br>
Ich habe eine Funktion <b>kritisch()</b>, die je nach Zustand der Detaildaten einen Boolean zurückgibt. Ist dieser TRUE, soll die Zeile rot sein, sonst nicht. In dieser Funktion werden alle Detaildatensätz durchlaufen. Dies ist nicht zeitkritisch, da die Mastertabelle selten mehr als 100, die Detailtabelle maximal 4x soviele Sätze enthält.<p>
Geht das trotzdem irgendwie??
Gruß,<br>
Siegbert
ich möchte in einem DBGrid die Zeile eines Datensatzes mit rotem Hintergrund anzeigen, wenn mindestens einer der Detaildatensätze einen kritischen Wert aufweist. Grundsätzlich kann ich das ja über DrawColumnCell erreichen, aber scheinbar nur, wenn ich auf einen Wert in der mit dem Grid verbundenen Tabelle zugreifen kann.<br>
Die DataSets sind alles TQueries, die Mastertabelle ist read-only, daher kann ich kein berechnetes Feld verwenden (zumindest wird OnCalcFields nie ausgeführt). Auch die SQL-Abfrage lässt sich nicht so formulieren, dass der kritische Wert der Detailtabelle dort bereits erkennbar wäre (es sind vier Felder, deren Kombination erst den kritischen Zustand ausmacht und die nicht über eine Aggregatfunktion ermittelbar sind).<br>
Ich habe eine Funktion <b>kritisch()</b>, die je nach Zustand der Detaildaten einen Boolean zurückgibt. Ist dieser TRUE, soll die Zeile rot sein, sonst nicht. In dieser Funktion werden alle Detaildatensätz durchlaufen. Dies ist nicht zeitkritisch, da die Mastertabelle selten mehr als 100, die Detailtabelle maximal 4x soviele Sätze enthält.<p>
Geht das trotzdem irgendwie??
Gruß,<br>
Siegbert
Comment