Entwickler-Ecke

Datenbanken - DBGrid: zwei Felder in eine Spalte lesen


JohannPeter - Sa 26.04.14 14:53

Moderiert von user profile iconNarses: Abgetrennt von hier [http://www.entwickler-ecke.de/viewtopic.php?t=112529]

Hallo,
Darf ich zum TDBGrid eine Frage stellen?

Habe 2 Felder Postleitzal und Ort. Wie kann ich diese beiden Felder im DBGrid in eine Spalte lesen?

Bin neu in Delphi.

Vielen Dank für eure Hilfe. :)


WasWeißDennIch - Sa 26.04.14 18:01

Das hängt von der DB ab, auf jeden Fall bräuchtest Du wohl eine Query-Komponente, in deren SQL Du die beiden Felder miteinander verknüpfst. Bezüglich der genauen Syntax musst Du mal in die Doku schauen, aber ungefähr so sollte es aussehen:

SQL-Anweisung
1:
2:
3:
4:
SELECT 
  PLZ + ' ' + Ort
FROM
  Tabelle


JohannPeter - Sa 26.04.14 19:20

Hallo,

Danke für die Hilfe. Ich mußte statt dem "+" ein "&" eingeben. Sonst gab es nur eine Fehlermeldung.
Den Rest muß ich noch in der Doku nachlesen.

Danke für die rasche Antwort.


Delete - So 27.04.14 16:47

Du kannst deinem Dataset (oder Query) aber auch ein berechnetes Feld hinzufügen:

1. Rechtsklick auf Dataset: Feld-Editor auswählen.
2. Rechtsklick in Feld-Editor: Alle Felder hinzufügen.
3. Rechtsklick in Feld-Editor: Neues Feld, Editor erscheint.
4. Ausfüllen: einen Bezeichner eintippen, den Typ (gewöhnlich String) und die Länge, in der RadioGroup Berechnet wählen und OK drücken.
5. Das Neue Feld im Feld-Editor auswählen und im OI auf Ereignisse umschalten.
6. Doppelklick in OnGetText, worauf ein leerer Procedure-Rumpf erstellt wird.
7. Implementieren der Befehle, um den Wert des neuen Feldes zu erzeugen. Beispiel:

Ich habe eine Spalte Volume und eine Spalte DateisystemName, die ich in einer Zelle anzeigen will, getrennt durch ein Leerzeichen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TDatMod.ADOTable1VolSysGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
  Text := ADOTable1.FieldByName('VolumeName').AsString + ' ' +
          ADOTable1.FieldByName('DateisystemName').AsString;
  DisplayText := True;
end;


JohannPeter - So 27.04.14 18:16

Hallo,

Vielen Dank.
Funktioniert Spitze.
Schönen Sontagabend.

LG


Delete - So 27.04.14 18:27

user profile iconWasWeißDennIch hat folgendes geschrieben Zum zitierten Posting springen:


SQL-Anweisung
1:
2:
3:
4:
SELECT 
  PLZ + ' ' + Ort
FROM
  Tabelle

Der gesuchte Befehl nennt sich Concat und wird meist durch zwei senkrechte Striche repräsentiert:


SQL-Anweisung
1:
PLZ || ' ' || Ort                    

Ich hab mir angewöhnt, bei Tabellen, die ich ständig benötige und deren berechnete Felder ich via SQL selektieren kann, ein View (in MSSQL auch Sicht genannt) zu erstellen. Das ist etwas schneller als die Berechnung in der Client-Anwendung, die ich oben gezeigt habe.