Delphi-PRAXiS
Seite 7 von 9   « Erste     567 89      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank in VirtualTreeView anzeigen und auswerten (https://www.delphipraxis.net/130113-datenbank-virtualtreeview-anzeigen-und-auswerten.html)

Jens Hartmann 15. Mär 2009 20:38

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Push

hoika 17. Mär 2009 13:05

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Hallo,

wie sieht denn dein OnGetText jetzt aus ?
Hoffentlich nur so was wie


Delphi-Quellcode:
var
  Daten : TOMB256PLUS;
begin
  Daten := TOMB256PLUS(VST.GetNodeData(Node)^);
ohne das .Create


Zum zumüllen:
- Task-Manager benutzen
- MemCheck benutzen


Ausserdem habe ich gesehen, verwendest du RecordCount und Last, das ist schlecht,
wozu brauchst du das Count ?
Besser wäre es, es selber zu zählen.

RecordCount:
============
Select * from Tabelle und alle Datensätze übers Netz ziehen
und dabei laaaangsam zählen
-> durch Select Count(*) ersetzen

Last
====:
Ähnlich wie RecordCount


was benutzt du zum Zugriff auf Firebird ?
-> SQL-Monitor benutzen


Update
======
Jetzt habe ich mir mal die vorige eite angesehen.
Du bekommst über Generator/Trigger eine neue ID
und benutzt Select * -> Last, um an die Id ranzukommen.

Ist "Suboptimal".

Wenn du wirklich der einzige bist, der in die DB schreibt,
reicht ein Select Max(Id) As ID_Max From TableX

Das erneute Auslesne der Daten ist nicht nötig,
die hast du (abgesehen von der ID) ja gerade eingetragen.


Bist du nicht der einzige, holst du dir per select Gen_Id(Generator_Variable,1)
den nächstgößten ID-wert (der Generator wird hier auch gleichzeitg mit erhöht)
und trägst den Datensatz incl. der ID ein.


Heiko






Heiko

Jens Hartmann 18. Mär 2009 19:16

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Hallo Heiko,

Danke erstmal für die vielen Bemühungen. Habe alles so weit verstanden. In der Get Text ist natürlich kein Create mehr.

Allerdings, habe ich das mit der Selekt Funktion jetzt mal versucht, allerdings mit dem Fehler, das das Feld ID nicht bekannt ist.

SQL-Code:
Select Max(Id) From MB256PLUS
Die selbe Meldung, kommt bei deiner Variante

SQL-Code:
Select Max(Id) As ID_Max From TableX
Das Feld existiert aber und ist ein Generator.

Irgendeine Idee

Gruß

Jens

mkinzler 18. Mär 2009 19:26

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Das Feld heit ja auch nicht mehr id sondern max1 oder max_id

hoika 18. Mär 2009 20:11

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Hallo,

oder du liest das Feld aus über Fields[0].AsInteger

schöner ist halt das mit as einem netten Namen zu geben


Heiko

Jens Hartmann 18. Mär 2009 20:41

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Sorry, aber das versteh ich nicht.

Das Feld heißt in meiner Datenbank ID und nicht MAX_ID

Kann mir mal jemand das erklären. mit dem AS

mkinzler 18. Mär 2009 20:53

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
In deiner Tabelle heisst es vielleicht ID, in der Ergebnismenge aber nicht. Mit AS kann man den Namen in der Ergebnimenge setzen.

Jens Hartmann 18. Mär 2009 21:11

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Ja, das hatte ich mir durch das AS gedacht, aber was bedeutet das.

Wie wende ich dann sowas an.

SQL-Code:

Select Max(Id) As ID_Max From MB256PLUS
heißt das, das mein Feld ID jetzt eine zusätzliche Bezeichnung hat, nämlich ID_Max.

Aber wenn ich das eintrage, kommt die Meldung das das Feld ID nicht vorhanden ist. Ich habe die Select Funktion auch mal mit anderen Feldern versucht. Aber da kommt der selbe Fehler mit dem entsprechenden Feld.

Delphi-Quellcode:
    QRyMB256PLUS.Close;
    QryMB256PLUS.SQL.Text := 'Select * From MB256PLUS';
    QryMB256PLUS.Open;
Irgendwie klappt mir nur die gesamte Abfrage

mkinzler 18. Mär 2009 21:35

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Die Ergebnismenge hat auch nur ein Feld mit der Bezeichnung ID_Max

hoika 19. Mär 2009 08:26

Re: Datenbank in VirtualTreeView anzeigen und auswerten
 
Hallo,

Bsp.

Select Max(Id), Min(Id) From Tabelle

Wie sollen denn die beiden Felder heissen ?, 2mal ID geht nicht.
Das As gibt dem Teil einen neuen Namen

SQL-Code:
Select Max(Id) As Max_Id, Min(Id) As Heiko From Tabelle
ergibt

Max_Id Heiko
100 1

Mit FieldByName('Max_Id').AsInteger bzw. FieldByName('Heiko').AsInteger
kommst du an die beiden Werte ran.

Alternativ Fields[0].AsInteger und Fields[1].AsInteger


Das nennt sich übrigens Feld-Alias.

Lade dir doch mal IBExpert (Personal) runter,
gebe die betreffende Query, dann siehst du auch, was rauskommt.



Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 Uhr.
Seite 7 von 9   « Erste     567 89      

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