AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid-Ergebnisse "maskieren"
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid-Ergebnisse "maskieren"

Ein Thema von Opa Knack · begonnen am 6. Mai 2009 · letzter Beitrag vom 7. Mai 2009
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

DBGrid-Ergebnisse "maskieren"

  Alt 6. Mai 2009, 00:37
Datenbank: MySQL • Version: 5 • Zugriff über: SciBit MyComponents
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)

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
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: DBGrid-Ergebnisse "maskieren"

  Alt 6. Mai 2009, 00:57
Hallo Opa Knack,

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

z.B.:

SELECT knd AS Kunde FROM kundentabelle Damit wird statt knd Kunde im DBGrid angezeigt.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#3

Re: DBGrid-Ergebnisse "maskieren"

  Alt 7. Mai 2009, 01:11
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: DBGrid-Ergebnisse "maskieren"

  Alt 7. Mai 2009, 06:20
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: DBGrid-Ergebnisse "maskieren"

  Alt 7. Mai 2009, 06:43
Hallo Opa Knack,

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

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: DBGrid-Ergebnisse "maskieren"

  Alt 7. Mai 2009, 07:03
Mit der property DisplayLabel jedes deiner Fields in einem DataSet kannst du angeben, wie die Spaltenüberschrift im Grid lautet.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#7

Re: DBGrid-Ergebnisse "maskieren"

  Alt 7. Mai 2009, 23:55
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 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