DBGrid Feld/Datentyp einblenden?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
stinketier
Beiträge: 40
Registriert: Di 3. Mär 2015, 15:35

DBGrid Feld/Datentyp einblenden?

Beitrag von stinketier »

Hallo zusammen,

ich Frage mich seit Vielen Jahren ob es Möglich ist in einen DBGrid den FeldTyp mit anzuzeiten?
z.b.

Code: Alles auswählen

SELECT
 ID,
 Vorname,
 Nachname,
 Kontostand
From DBMitglieder
DBGrid.png
DBGrid.png (16.7 KiB) 1557 mal betrachtet

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: DBGrid Feld/Datentyp einblenden?

Beitrag von af0815 »

Sorry, wenn ich frage - wozu? Für mich ist das sinnlos. Wenn ich wissen will, was das für Feldtypen sind, so frage ich die DB.

Doppelklick auf die Query und die Felder erstellen lassen, ist das Maximum, wo ich das brauche. Da bekommst du sowieso einige Informationen. Dataset und Grid sollten das machen was sie am besten können. Daten anzeigen und ev. was ändern. Bei Lazarus ist übrigends ein Database Desktop dabei, den braucht man sich nur selbst zu kompilieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

stinketier
Beiträge: 40
Registriert: Di 3. Mär 2015, 15:35

Re: DBGrid Feld/Datentyp einblenden?

Beitrag von stinketier »

naja

Feld Typen anzeigen oder Feldkommentare anzeigen finde ich schon mega praktisch
und ja rechtsklick create Table etc ist einer der gründe

die frage ist ja auch nicht wozu
sondern eher wie geht das?

vielleicht merke ich ja in einen halben Jahr das ich das garnicht so nutze
die Erfahrung muss man halt machen :D

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: DBGrid Feld/Datentyp einblenden?

Beitrag von charlytango »

stinketier hat geschrieben:
Di 20. Apr 2021, 08:52
Feld Typen anzeigen oder Feldkommentare anzeigen finde ich schon mega praktisch
und ja rechtsklick create Table etc ist einer der gründe

die frage ist ja auch nicht wozu
sondern eher wie geht das?
Es ist wohl eher so dass du im Moment fragst "Wie lange ist ein Stück Seil?"

Um halbwegs qualifizierte Antworten zu geben Ist Umfeld und Einsatzzweck (also das Ziel) genau so wichtig wie welche Tabelle du anzeigen willst (also aus welcher Art von Datenbank) und mit welchen Zugriffskomponenten du arbeitest.

Du scheinst per SQL auf Daten zuzugreifen, aber mit welchen Zugriffskomponenten und auf welche SQL-Datenbank? Jede Kombination hat ihre eigenen Lösungsansätze.

vielleicht hilft das schon mal;

Code: Alles auswählen

   dataset.fieldByNAme('blub').FieldKind
   dataset.fieldByNAme('blub').Size
   dataset.fieldByNAme('blub').DataType

   dataset.fields[1].FieldKind
   dataset.fields[1].Size
   dataset.fields[1].DataType 
Hier https://www.heidisql.com/download.php ist das übrigens alles gelöst und ausprogrammiert. Du kannst dir auch den auch Source downloaden und ansehen.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: DBGrid Feld/Datentyp einblenden?

Beitrag von wp_xyz »

stinketier hat geschrieben:
So 18. Apr 2021, 15:00
ich Frage mich seit Vielen Jahren ob es Möglich ist in einen DBGrid den FeldTyp mit anzuzeiten?
Siehe Projekt im Anhang (nicht bis ins letzte Detail ausgearbeitet..., aber das Prinzip sollte erkennbar sein).
Dateianhänge
dbgrid_fieldnames_in_title.zip
(2.92 KiB) 78-mal heruntergeladen

stinketier
Beiträge: 40
Registriert: Di 3. Mär 2015, 15:35

Re: DBGrid Feld/Datentyp einblenden?

Beitrag von stinketier »

charlytango hat geschrieben:
Di 20. Apr 2021, 10:12
stinketier hat geschrieben:
Di 20. Apr 2021, 08:52
Feld Typen anzeigen oder Feldkommentare anzeigen finde ich schon mega praktisch
und ja rechtsklick create Table etc ist einer der gründe

die frage ist ja auch nicht wozu
sondern eher wie geht das?
Es ist wohl eher so dass du im Moment fragst "Wie lange ist ein Stück Seil?"

Um halbwegs qualifizierte Antworten zu geben Ist Umfeld und Einsatzzweck (also das Ziel) genau so wichtig wie welche Tabelle du anzeigen willst (also aus welcher Art von Datenbank) und mit welchen Zugriffskomponenten du arbeitest.

Du scheinst per SQL auf Daten zuzugreifen, aber mit welchen Zugriffskomponenten und auf welche SQL-Datenbank? Jede Kombination hat ihre eigenen Lösungsansätze.

vielleicht hilft das schon mal;

Code: Alles auswählen

   dataset.fieldByNAme('blub').FieldKind
   dataset.fieldByNAme('blub').Size
   dataset.fieldByNAme('blub').DataType

   dataset.fields[1].FieldKind
   dataset.fields[1].Size
   dataset.fields[1].DataType 
Hier https://www.heidisql.com/download.php ist das übrigens alles gelöst und ausprogrammiert. Du kannst dir auch den auch Source downloaden und ansehen.

das weiß ich ja noch nicht wo die reise wirklich hingeht :(
es soll ja Möglichs flexibel sein.

zugriff erfolgt bei mir eigentlich immer über Zeos.
Datenbanken sind eigentlich alle mögliche

stinketier
Beiträge: 40
Registriert: Di 3. Mär 2015, 15:35

Re: DBGrid Feld/Datentyp einblenden?

Beitrag von stinketier »

wp_xyz hat geschrieben:
Di 20. Apr 2021, 10:46
stinketier hat geschrieben:
So 18. Apr 2021, 15:00
ich Frage mich seit Vielen Jahren ob es Möglich ist in einen DBGrid den FeldTyp mit anzuzeiten?
Siehe Projekt im Anhang (nicht bis ins letzte Detail ausgearbeitet..., aber das Prinzip sollte erkennbar sein).
traumhaft
genau das ist doch das was ich eigentlich will

Code: Alles auswählen

  
  ts := DBGrid1.Canvas.TextStyle;
  ts.WordBreak  := true;
  ts.SingleLine := false;
  ts.Layout     := tlCenter;
  ts.Alignment  := Column.Title.Alignment;
  DBGrid1.Canvas.TextStyle := ts;
  s := GetEnumName(TypeInfo(TFieldType), Integer(Column.Field.DataType));
  Delete(s, 1, 2);
  if Column.Field.DataType in [ftString, ftWideString] then
    s := Format('%s (%d)', [s, Column.Field.Size]);
  R := Rect;
  InflateRect(R, -varCellPadding, -varCellPadding);
  DBGrid1.Canvas.TextRect(R, R.Left, R.Top, Column.FieldName + LineEnding + s); 
  

Antworten