Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid-Ergebnisse "maskieren" (https://www.delphipraxis.net/133634-dbgrid-ergebnisse-maskieren.html)

Opa Knack 6. Mai 2009 00:37

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:
SELECT kundennr, (if bearbeiter = aktuellernutzer then ansprechpartner else ''), bearbeiter FROM Tabelle
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.

Gibt es eine Möglichkeit, dies zu bewerkstelligen?

Vielen Dank vorab für eure Hilfe.

Gruß
Opa

Chemiker 6. Mai 2009 00:57

Re: DBGrid-Ergebnisse "maskieren"
 
Hallo Opa Knack,

mit AS kann der Name des Feldes geändert werden.

z.B.:

SQL-Code:
SELECT knd AS Kunde FROM kundentabelle
Damit wird statt knd Kunde im DBGrid angezeigt.

Bis bald Chemiker

Opa Knack 7. Mai 2009 01:11

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

mkinzler 7. Mai 2009 06:20

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;

Chemiker 7. Mai 2009 06:43

Re: DBGrid-Ergebnisse "maskieren"
 
Hallo Opa Knack,

die andere Möglichkeit ist, mit dem Spalteneditor vom DBGrid den Titel zu ändern.

Bis bald Chemiker

Stevie 7. Mai 2009 07:03

Re: DBGrid-Ergebnisse "maskieren"
 
Mit der property DisplayLabel jedes deiner Fields in einem DataSet kannst du angeben, wie die Spaltenüberschrift im Grid lautet.

Opa Knack 7. Mai 2009 23:55

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 diesen Beitrag gefunden habe. In der Kombination aus euren Antworten und denen aus dem Beitrag hat's dann geklappt.

"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 20:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz