AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Virtual String Tree aus Oracle erstellen

Ein Thema von Apollo13 · begonnen am 6. Okt 2004 · letzter Beitrag vom 7. Okt 2004
Antwort Antwort
Apollo13

Registriert seit: 3. Sep 2004
Ort: Pirna
36 Beiträge
 
Delphi 5 Enterprise
 
#1

Virtual String Tree aus Oracle erstellen

  Alt 6. Okt 2004, 11:37
hi @ all,

ich will mit der Komponente VirtualStringTree eine Baumstruktur aus einer Tabelle erstellen. Das einfach zuerst, wie kann ich individuell childnodes erstellen !!MIT!! den daten die ich auch da haben will. ich bekomme zwar ein child hin, aber stehen da als name und eben als daten der letzte eintrag der tabelle, obwohl das child an anfang ist?!?!

kann mir jemand vielleicht einen tipp über das einfügen von childnodes aus einer oracle tabelle geben, oder viellecht ein code-schnippsel???

mfg Apollo13
Es muss etwas getan werden! Aber nicht jetzt...
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#2

Re: Virtual String Tree aus Oracle erstellen

  Alt 6. Okt 2004, 11:40
hi,

poste dochmal den code, den du bisher verwendest. Dann können wir dir sicher leichter helfen.

Gruß
Ken
Ein Objekt ist eine zur Ausführungszeit vorhandene für seine Instanzvariablen Speicherplatz allokierende Instanz, die sich gemäß dem Protokoll ihrer Klasse verhält.
  Mit Zitat antworten Zitat
Apollo13

Registriert seit: 3. Sep 2004
Ort: Pirna
36 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Virtual String Tree aus Oracle erstellen

  Alt 6. Okt 2004, 11:55
hier ist alles wichtig was ich in dem tree habe:

speedbutton löst die procedure aus...

Delphi-Quellcode:
procedure TForm1.LMDDockSpeedButton1Click(Sender: TObject);
begin
  LoadData;
end;

Delphi-Quellcode:
procedure tform1.LoadData;
begin
if not ADOQuery1.Active then
       ADOQuery1.Open;
ADOQuery1.filtered := false;
ADOQuery1.filter := '';
vtree.BeginUpdate;
vtree.Clear;
vtree.NodeDataSize := Sizeof(TMyRec);
ADOQuery1.First;
vtree.RootNodeCount := ADOQuery1.recordcount;
vtree.SortTree(0,sdAscending,true);
vtree.EndUpdate;
end;

Delphi-Quellcode:
procedure TForm1.VtreeInitNode(Sender: TBaseVirtualTree; ParentNode,
  Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
  Data: PMyRec;
  treedata: PMyRec;
  nodeweg: PVirtualNode;
  i: integer;
begin
  with Sender do
  begin
    Data := GetNodeData(Node);
    Initialize(Data^);
    Data.Caption := adoquery1.FieldByName('BEZEICHNUNG').AsString;
    Data.ID := adoquery1.FieldByName('ID').AsInteger;
    Data.GruppeID := adoquery1.FieldByName('GRUPPEID').AsInteger;
    if Data.GruppeID = 1 then [b]//<- Problem, alle mit GruppeID = 1 sollen in extra childnode stehen[/b]
    begin
      i:=i+1;
      nodeweg := vtree.AddChild(vtree.getfirstchild(vtree.rootnode));
      vtree.GetFirstChild(vtree.rootnode).ChildCount := i; [b]//<- erstellt auch entsprechend viele nodes, nur eben mitdem faslchen daten...???[/b]
    end;
    if not adoquery1.eof then
    adoquery1.Next;

  end;
end;
Delphi-Quellcode:
procedure TForm1.VtreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
  Data: PMyRec;
  i: integer;
begin
  Data := Sender.GetNodeData(Node);
  if Column = 0 then
    CellText := Data.Caption
  else if Column = 1 then
    CellText := inttostr(Data.ID)
  else if Column = 2 then
    CellText := inttostr(Data.GruppeID)
  else CellText := '';
  end;
so, das ist der code. hat irgendjemand einen tip(p) für mich, wie ich am einfachsten childnodes in den vst einfügen kann...?!?!?! kann auch eine andere art lösung sein als in diesem code hier...

help me....
Es muss etwas getan werden! Aber nicht jetzt...
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#4

Re: Virtual String Tree aus Oracle erstellen

  Alt 6. Okt 2004, 22:58
hi,

ich werde mich morgen mal damit auseinandersetzen.
Nur was noch am rande, wie sieht die tabelle aus und wie behandelst du knoten, die keinen vater haben?
Und wie sieht das statement aus, mit dem du die knoten aus der db holst?
Und dann sieht mir das mit dem initNode merkwürdig aus. Wie willst du denn jetzt wissen, unter welchen knoten der aktuelle datensatz gehört???


Gruß
Ken
Ein Objekt ist eine zur Ausführungszeit vorhandene für seine Instanzvariablen Speicherplatz allokierende Instanz, die sich gemäß dem Protokoll ihrer Klasse verhält.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Virtual String Tree aus Oracle erstellen

  Alt 7. Okt 2004, 09:30
guten morgen.

recordcount funktioniert in sql datenbanken normal nicht. (abhaendig vom cursortyp)

wenn du einen baum im vst haben willst schau dir doch mal bitte bei mike den db-tree auf der page an.
http://scripts.soft-gems.net/download.php?ID=31

"virtualdbtree"
  Mit Zitat antworten Zitat
Apollo13

Registriert seit: 3. Sep 2004
Ort: Pirna
36 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Virtual String Tree aus Oracle erstellen

  Alt 7. Okt 2004, 14:42
hi @ all,

danke erstmal für die antworten

Zitat:
recordcount funktioniert in sql datenbanken normal nicht.
... funktioniert doch! das nehm ich schon immer um die datensatz-anzahl zu bestimmen.

ich hab allerdings jetzt eine lösung für viele meiner probleme gefunden. die funktion getnext(node) durchsucht alle nodes im tree, egal auf welchem level. damit ist es nun sehr einfach einen bestimmten datensatz zu suchen und den node einzufügen!!!

PS: für alle die wie ich newbie in sachen vst sind, hier ein sehr gutes tutorial, hat mich sehr viel weiter gebracht

thy bis zum nächsten post...
Apollo13
Es muss etwas getan werden! Aber nicht jetzt...
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Virtual String Tree aus Oracle erstellen

  Alt 7. Okt 2004, 15:33
Zitat von Apollo13:
hi @ all,

danke erstmal für die antworten

Zitat:
recordcount funktioniert in sql datenbanken normal nicht.
... funktioniert doch! das nehm ich schon immer um die datensatz-anzahl zu bestimmen.
Recordcount gibt üblichweise (gibt ja viele TDataset-Abkömmlinge) die Anzahl der aktuell in das Dataset geladenen Datensätze wieder (unter Berücksichtigung eventueller Filter).
Dies kann, muß aber nicht mit der Anzahl der in der Datenbank vorhandenen Datensätze übereinstimmen, weil unter Umständen Datensätze erst geladen werden, wenn sie benötigt werden.

Grüsse
Woki
  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 17:55 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