![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: SciBit MyComponents
DBGrid-Ergebnisse "maskieren"
Hallo,
wenn man schon beim Titel überlegen muss, was man da hineinschreiben soll, wird's langsam Zeit, sich an diejenigen zu wenden, die sich damit auskennen... Mein Grundproblem: Ich habe ein DBGrid, in dem ich das Ergebnis einer SQL-Abfrage anzeige. Nun sollen einige Inhalte des Grids mit Werten "maskiert" werden, die nicht in der Datenbank stehen, wenn also in einer Spalte z. B. "knd" steht, soll statt dessen "Kunde" erscheinen. Diese Maskierung gilt nur für die GUI, damit der User nicht mit hässlichen Kürzeln konfrontiert wird, in der Datenbank sollen diese weiterhin Verwendung finden. Ein anderes Beispiel wäre, dass im DBGrid userspezifische Informationen angezeigt werden. Dies bedeutet z. B., dass in der Kundenübersicht die Ansprechpartner beim Kunden angezeigt werden, dies aber nur für die Kunden, die der User selbst betreut, für alle anderen soll diese Information nicht ersichtlich sein. Ich müsste also etwas in der Art wie (bitte den folgenden Code nicht zu ernst nehmen, es geht nur um die Logik dahinter)
Delphi-Quellcode:
realisieren, wobei die Variable "aktuellernutzer" eben mit dem im Datensatz verzeichneten 'bearbeiter" übereinstimmen müsste, damit der Ansprechpartner ausgegeben wird und im gegenteiligen Fall eben nur ein leeres Feld erscheinen würde.
SELECT kundennr, (if bearbeiter = aktuellernutzer then ansprechpartner else ''), bearbeiter FROM Tabelle
Gibt es eine Möglichkeit, dies zu bewerkstelligen? Vielen Dank vorab für eure Hilfe. Gruß Opa |
Re: DBGrid-Ergebnisse "maskieren"
Hallo Opa Knack,
mit AS kann der Name des Feldes geändert werden. z.B.:
SQL-Code:
Damit wird statt knd Kunde im DBGrid angezeigt.
SELECT knd AS Kunde FROM kundentabelle
Bis bald Chemiker |
Re: DBGrid-Ergebnisse "maskieren"
Hallo Chemiker,
Danke für den Tipp, damit ist dann schon mal meine erste Frage geklärt (ups, mir fällt jetzt erst auf, dass man pro Thread ja nur eine Frage posten soll). Ist Deine Herangehensweise die einzig mögliche oder gibt es noch weitere Möglichkeiten, den Text bei der Ausgabe zu ändern? Hintergrund der Frage ist, dass ich relativ viele Abkürzungen verwende, die dann die SQL-Abfrage extrem aufblähen würden... Bleibt also noch die Frage, wie ich den SELECT mit Bedingungen verknüpfen kann, so dass ich die Informationen je nach User datensatzweise filtern kann (siehe Beispiel oben). Danke und gute Nacht Opa |
Re: DBGrid-Ergebnisse "maskieren"
Mit CASE .. WHEN und Parametern sollte das möglich sein:
SQL-Code:
SELECT
kundennr as kunde, (case when bearbeiter = :aktuellernutzer then ansprechpartner else '') as ansprechpartner, bearbeiter FROM Tabelle; |
Re: DBGrid-Ergebnisse "maskieren"
Hallo Opa Knack,
die andere Möglichkeit ist, mit dem Spalteneditor vom DBGrid den Titel zu ändern. Bis bald Chemiker |
Re: DBGrid-Ergebnisse "maskieren"
Mit der property DisplayLabel jedes deiner Fields in einem DataSet kannst du angeben, wie die Spaltenüberschrift im Grid lautet.
|
Re: DBGrid-Ergebnisse "maskieren"
Hallo,
Danke an alle, auch wenn die Antworten dann nachher irgendwie abgedriftet sind. Ich habe es auch die vorgeschlagenen Wege versucht und, da ich das damit noch nicht richtig hinbekommen habe, mit dem inzwischen gewonnenen Wissen weitergesucht, bis ich ![]() "Abgedriftet" deshalb, weil ich nicht nach dem Weg gesucht habe, den Titel einer Spalte zu ändern :-) Danke und Gruß Opa |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz