Autor Beitrag
freshness
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP Pof, Vista
Delphi 2006
BeitragVerfasst: So 22.02.04 21:09 
Hallo,
Folgende Situation:
Eine Query greift auf die Daten einer Tabelle zu und zeigt diese in einem DBGrid an.

Wie kann ich z.Bsp.: Das Feld Vorname und das separate Feld Nachname im DBGrid in einer Spalte anzeigen,
bzw. zwei Felder unterschiedlichen Typs String und Zahl kombiniert werden ?

mfg

alex
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: So 22.02.04 22:55 
Ich hatte fast genau diesen Fall. Ein Datensatz sollte auf 2 Zeilen verteilt werden. Und das geht jetzt auch, aber nicht mit einem DBgrid, ich verwende ein normales Stringgrid. Da kann ich tun und lassen, was ich will. Ist halt mehr Arbeit. Das DBgrid ist zu schwach auf der Brust. Fremdkomponenten könnten besser sein, aber der Einarbeitungsaufwand ist auch nicht zu unterschätzen. Dann merkt man vielleicht erst (zu) spät, wo die Grenzen sind.

Für Deine Zwecke könnte eventuell aber ein DBCtrlGrid ausreichen :!: Irgendwie war das für mich immer noch nicht genug. Weiß jetzt nicht mehr, wo da der Haken war. Aber das würde ich mir mal anschauen.

_________________
Gruß
Hansa
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 23.02.04 00:43 
hallo alex!

rein aus dem bauch heraus und ohne 'gewehr' würd ich dir ein 'berechnetes feld' vorschlagen.
nachdem es bei tables funktioniert, sollte es auch bei einer query keine probleme damit geben.
ich werds bei gelegenheit ausprobieren.

mfg, stefan
freshness Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP Pof, Vista
Delphi 2006
BeitragVerfasst: Mo 23.02.04 01:38 
Titel: SQL
Hallo,

hab auch schon einiges beim SQL String der Query abfrage ausprobiert:

ausblenden Quelltext
1:
SELECT ZählerID, Datum, Status, Vorname + ', ' + Nachname AS AName FROM Namensliste WHERE irgendwas  = :irgendwas ORDER BY Jahr					

Es funktioniert bei mir aber nur mit String Felder. Ich müsste jedoch
1) ein Datumsfeld mit einem Stringfeld
und

2) das Jahr aus dem Datum mit der laufenden ZählerID (2004/001, 2004/002 etc.)
als je ein Feld im DBGrid anzeigen.

Gruß
Alex
____________________
Geht nicht, gibt´s nicht !
freshness Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43

Win XP Pof, Vista
Delphi 2006
BeitragVerfasst: Mo 23.02.04 01:51 
Titel: Habs hingekriegt!
Hallo,

eindeutig die schönsten Lösungen sind die, die man selbst findet. :lol:
Oder man aus Dummheit nicht gleich draufgekommen ist. :autsch:
Der SQL String lautet nun:
ausblenden Quelltext
1:
SELECT Vorname,..., year(Jahr) & '-' & ZählerID AS PID FROM Tabelle WHERE irgedwas = :irgendwas					


Im DBGrid wird im Feld PID nun das angezeigt was ich haben wollte.


Gruß
Alex
____________________
Geht nicht, gibt´s nicht !
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 23.02.04 02:03 
Zitat:
Geht nicht, gibt´s nicht
:lol:

ok.. ich bin das problem von dieser seite angegangen
- query auf die IDE
- SQL-string im OI = 'SELECT * FROM tabellenname'
- doppelklick auf die query
- alle felder hinzufügen
- die nichtbenötigten felder wieder herausgelöscht
- neues feld erstellen
- als 'berechnet' bzw calculated definieren
im OnCalcEvent der query folgendes eintragen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
  with DataSet do
    FieldByName('Addr3').asString:= FieldByName('Addr1').asString + ' ' +
    FieldByName('Addr2').asString
end;


und schon bekommst du im DBGrid im feld 'Addr3' das ergebnis angezeigt

ausblenden Delphi-Quelltext
1:
SELECT ZählerID, Datum, Status, Vorname + ', ' + Nachname AS AName FROM Namensliste WHERE irgendwas  = :irgendwas ORDER BY Jahr					


vorschläge:
Zitat:

1) ein Datumsfeld mit einem Stringfeld


ausblenden Delphi-Quelltext
1:
TextToShow:= StrToDate(Datum) + stringfeld					


Zitat:

2) das Jahr aus dem Datum mit der laufenden ZählerID (2004/001, 2004/002 etc.)
als je ein Feld im DBGrid anzeigen.


mit DecodeDate das Jahr extrahieren und mit
ausblenden Delphi-Quelltext
1:
TextToShow:= IntToStr(Jahr) + '/' + IntToStr(ZaehlerID)					

zusammenstoppeln...

man liest sich? :wink:

mfg, stefan
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 23.02.04 02:20 
Zitat:
eindeutig die schönsten Lösungen sind die, die man selbst findet

ja, damit hast eindeutig recht. aber damits noch lustiger ist, lässt man vorher auch andere ihren kopf über dieses problem zerbrechen :twisted:
jedenfalls danke, dass du deine lösung gepostet hast - somit hab ich auch wieder was dazugelernt :p

mfg, stefan