Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit SQL-Queries und Anzeige in Treeview (https://www.delphipraxis.net/17131-probleme-mit-sql-queries-und-anzeige-treeview.html)

heiopanst 28. Feb 2004 16:15


Probleme mit SQL-Queries und Anzeige in Treeview
 
Als erstes: ich habe 2 Units.
Die 1. Unit stellt die SQL-Abfragen in die Datenbank, die 2. soll die Afrage der Unit in einer TreeView anzeigen. Bei dem Code gehts um Query6:

Unit 1:

Delphi-Quellcode:
procedure TForm1.PathTreeView1DblClick(Sender: TObject);
var n:string;
begin
query1.First;
query1.MoveBy(Pathtreeview1.Selected.Index);
n:=query1.FieldValues ['Kunde_ID'];
form2:=TForm2.Create(self);
//form2.PathTreeView1.NewInstance;
form2.Query1.close;
form2.Query2.close;
form2.Query3.close;
form2.Query4.close;
form2.Query5.close;

form2.Query6.close;

Form2.Query1.SQL.Clear;
Form2.Query2.SQL.Clear;
Form2.Query3.SQL.Clear;
Form2.Query4.SQL.Clear;
Form2.Query5.SQL.Clear;

Form2.Query6.SQL.Clear;

Form2.Query1.SQL.add('select * from DB_Kunde where Kunde_ID='''+n+'''');
Form2.Query2.SQL.add('select * from DB_Journal_Kunde where Kunde_ID='''+n+'''');
Form2.Query3.SQL.add('select * from DB_Bank where Kunde_ID='''+n+'''');
Form2.Query4.SQL.add('select * from DB_Kind where Kunde_ID='''+n+'''');
Form2.Query5.SQL.add('select * from DB_Memo where Kunde_ID='''+n+'''');

//Form2.Query6.SQL.Text:='select * from DB_Absicherung_Vermoegen where Kunde_ID='+n;
Form2.Query6.SQL.add('select * from DB_Absicherung_Vermoegen where Kunde_ID='''+n+'''');

Form2.Query1.open;
form2.Query2.open;
form2.Query3.open;
form2.Query4.open;
form2.Query5.open;

form2.Query6.open;
//form2.Query6.ExecSQL;
//form2.Query6.active:=true;
//form2.DataSource6.DataSet.Active :=true;

form2.caption:=form2.Dbedit1.Text+ ' '+form2.dbedit2.Text ;
end;


So, hier jetzt Unit2

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
Var
Bmrk : TBookMark;
CurRecBuffer,RecBuffer : PChar;

n,Index:integer;
a,test,test2,m:String;

begin
test2:=query5.SQL.GetText;
test:=query6.SQL.GetText;
//Query6.active:=true;
//query6.Prepare
if query6.Active then
//datasource6.DataSet.
//datasource6.dataset.Open;
//DataSource6.DataSet.Active :=false;
//DataSource6.DataSet.Active :=true;

//if datasource6.dataset.Active then
begin
with datasource6.DataSet do
begin
  //open;
  CurRecBuffer := StrAlloc(RecordSize);
  RecBuffer := StrAlloc(RecordSize);
  GetCurrentRecord(CurRecBuffer);
  Bmrk := GetBookMark;
  DisableControls;
  First;n := 0;
  while not EOF do
  begin
   a:= 'Sach\' + FieldByName('Vers_Art').AsString;
   //PathTreeView1.Items.Add(FieldByName('Vers_Art').AsString);
   PathTreeview1.DestPath :=a;
   pathtreeview1.AddPath;
   PathTreeview1.Items.Item[n].ImageIndex := 1;
   PathTreeview1.Items.Item[n].SelectedIndex := 1;
   GetCurrentRecord(RecBuffer);
   if MemComp(RecBuffer,CurRecBuffer,RecordSize) then Index := n;
   Next;inc(n);
  end;
  GotoBookmark(Bmrk);
  FreeBookmark(Bmrk);
  EnableControls;
//  FChanging := true;
//  ItemIndex := Index;
//  FOldIndex := Index;
//  FChanging := false;
  StrDispose(RecBuffer);
  StrDispose(CurRecBuffer);
 end;
 Close;
 end;


Zum Abschluss:
query6.Active aus Unit2 wird nie Active, da in test:=query6.SQL.GetText; immer das SQL-Statement aus dem TQuery - Element in der Form2 steht. Active sollte es dann werden, wenn die Kunden_ID stimmt.

Normalerweise sollte doch
Form2.Query6.SQL.add('select * from DB_Absicherung_Vermoegen where Kunde_ID='''+n+'''');
das Statement ändern und durch open ausgeführt werden, egal, was in der Form2 im TQuery drinsteht, oder?

Egal.
Vielleicht hat ja von Euch noch jemand ne Idee, ich reiss mir momentan die Haare raus.

[edit=FuckRacism]Delphi-Syntax gesetzt. Mfg, FuckRacism[/edit]

kiar 28. Feb 2004 16:27

Re: Probleme mit SQL-Queries und Anzeige in Treeview
 
bevor du eine glatze hast, formatiere erstmal den code. so ist er schwer zu lesen

raik

heiopanst 28. Feb 2004 18:07

Re: Probleme mit SQL-Queries und Anzeige in Treeview
 
So besser?


Unit1

Delphi-Quellcode:
procedure TForm1.PathTreeView1DblClick(Sender: TObject);
var n:string;
begin
  query1.First;
  query1.MoveBy(Pathtreeview1.Selected.Index);
  n:=query1.FieldValues ['Kunde_ID'];
  form2:=TForm2.Create(self);
  //Queries schliessen
  form2.Query1.close;
  form2.Query2.close;
  form2.Query3.close;
  form2.Query4.close;
  form2.Query5.close;
  form2.Query6.close;
  //Queries löschen
  Form2.Query1.SQL.Clear;
  Form2.Query2.SQL.Clear;
  Form2.Query3.SQL.Clear;
  Form2.Query4.SQL.Clear;
  Form2.Query5.SQL.Clear;
  Form2.Query6.SQL.Clear;
  //Queries hinzufügen
  Form2.Query1.SQL.add('select * from DB_Kunde where Kunde_ID='''+n+'''');
  Form2.Query2.SQL.add('select * from DB_Journal_Kunde where Kunde_ID='''+n+'''');
  Form2.Query3.SQL.add('select * from DB_Bank where Kunde_ID='''+n+'''');
  Form2.Query4.SQL.add('select * from DB_Kind where Kunde_ID='''+n+'''');
  Form2.Query5.SQL.add('select * from DB_Memo where Kunde_ID='''+n+'''');

  Form2.Query6.SQL.add('select * from DB_Absicherung_Vermoegen where Kunde_ID='''+n+'''');

  //Queries ausführen
  Form2.Query1.open;
  form2.Query2.open;
  form2.Query3.open;
  form2.Query4.open;
  form2.Query5.open;
  form2.Query6.open;

  form2.caption:=form2.Dbedit1.Text+ ' '+form2.dbedit2.Text ;
end;

Unit2

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
Var
Bmrk : TBookMark;
CurRecBuffer,RecBuffer : PChar;

n,Index:integer;
a,test,test2,m:String;

begin
  //testvariablen
  test2:=query5.SQL.GetText;
  test:=query6.SQL.GetText;
  //Query6.active:=true;
  //query6.Prepare
  //falls DB offen
  if query6.Active then
    //datasource6.DataSet.
    //datasource6.dataset.Open;
    //DataSource6.DataSet.Active :=false;
    //DataSource6.DataSet.Active :=true;
         
    //if datasource6.dataset.Active then
   
    //Hier ist die Stelle, die nie erreicht wird
    begin
    with datasource6.DataSet do
      begin
      //open;
      CurRecBuffer := StrAlloc(RecordSize);
      RecBuffer := StrAlloc(RecordSize);
      GetCurrentRecord(CurRecBuffer);
      Bmrk := GetBookMark;
      DisableControls;
      First;n := 0;
      while not EOF do
        begin
        a:= 'Sach\' + FieldByName('Vers_Art').AsString;
        //PathTreeView1.Items.Add(FieldByName('Vers_Art').AsString);
        PathTreeview1.DestPath :=a;
        pathtreeview1.AddPath;
        PathTreeview1.Items.Item[n].ImageIndex := 1;
        PathTreeview1.Items.Item[n].SelectedIndex := 1;
        GetCurrentRecord(RecBuffer);
        if MemComp(RecBuffer,CurRecBuffer,RecordSize) then Index := n;
        Next;inc(n);
      end;
      GotoBookmark(Bmrk);
      FreeBookmark(Bmrk);
      EnableControls;
      //  FChanging := true;
      //  ItemIndex := Index;
      //  FOldIndex := Index;
      //  FChanging := false;
      StrDispose(RecBuffer);
      StrDispose(CurRecBuffer);
    end;
  Close;
  end;
Eigentlich will ich ja net viel, das Proggi soll mir nur zum roten begin springen und es ausführen, was es leider net tut, und ich weiss net,warum.

heiopanst 28. Feb 2004 18:09

Re: Probleme mit SQL-Queries und Anzeige in Treeview
 
begin

zu dem begin!!!!!

heiopanst 28. Feb 2004 18:10

Re: Probleme mit SQL-Queries und Anzeige in Treeview
 
zu dem in HTML-Tags!!!

(bin neu hier)

DelphiDeveloper 1. Mär 2004 15:36

Re: Probleme mit SQL-Queries und Anzeige in Treeview
 
kurz überflogen und folgendes ist mir aufgefallen:

Zitat:

Form2.Query6.SQL.add('select * from DB_Absicherung_Vermoegen where Kunde_ID='''+n+'''');
ist deine Kunde_ID tatsaechlich ein string in meine wegen den quotedstr; wenn es kein
string ist dann brauchste die ''' nicht

heiopanst 1. Mär 2004 17:37

Re: Probleme mit SQL-Queries und Anzeige in Treeview
 
ist tatsächlich ein String,
hab mein Problem jetzt gefunden, Probleme gelöst.
Lag daran, dass der Aufruf in Unit1 die Form2 (Unit2) als erstes aufgerufen hat, in Form2 war das Dataset noch nicht Active, das wurde es erst später (nach form2:=TForm2.Create(self);)

Trotzdem Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 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