Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sortierung bei SQL (https://www.delphipraxis.net/1487-sortierung-bei-sql.html)

Hansa 4. Dez 2002 10:38

Hi,

Ich habe jetzt mal folgendes gemacht :
Code:
[/ WITH RecDataMod.ReckopfDS DO
    SelectSQL.Text := 'SELECT * FROM RECKOPF8 WHERE RECHNNR ='+Edit1.TEXT;
  WITH RecDataMod.KuDataSet DO
    SelectSQL.Text := 'SELECT * FROM KUNDE8 WHERE ID = ?ID_KUNDE';
Hierdurch kriege ich die Rechnung angezeigt, aber nicht den Kunden. Das ?ID_KUNDE stimmt so nicht. Danach wollte ich die Artikel-Datenmenge so behandeln, wie Sharky und MrSpock das beschrieben haben. Aber diese Parameterübergabe kriege ich nicht hin. Woher soll die DB eigentlich wissen, daß das ID_KUNDE von dem Rechnungskopf kommt ?

Gruß
Hansa

Sharky 4. Dez 2002 11:45

Zitat:

Zitat von Hansa
Hi,

Ich habe jetzt mal folgendes gemacht :
Code:
[/ WITH RecDataMod.ReckopfDS DO
    SelectSQL.Text := 'SELECT * FROM RECKOPF8 WHERE RECHNNR ='+Edit1.TEXT;
  WITH RecDataMod.KuDataSet DO
    SelectSQL.Text := 'SELECT * FROM KUNDE8 WHERE ID = ?ID_KUNDE';

Hmm... es müsst doch so heissen:

Code:
WITH RecDataMod.ReckopfDS DO
 SelectSQL.Text := 'SELECT * FROM RECKOPF8 WHERE RECHNNR ='+Edit1.TEXT;
Open;
WITH RecDataMod.KuDataSet DO
 SelectSQL.Text := 'SELECT * FROM KUNDE8 WHERE ID = '
                    + RecDataMod.ReckopfDS.FieldByName ('ID_KUNDE').AsString;
Oder?

Hansa 4. Dez 2002 15:07

Hi Sharky,

das könnte es sein. :spin: Aber das Open brauche ich nicht. Ich benutze keine Query direkt, sondern setze die DataSets mit active auf true oder false. Das FieldByName schau ich gleich nach, bin noch unterwegs.

Gruß
Hansa

Hansa 4. Dez 2002 17:28

Hi Sharky,

einwandfrei :!: Das war der richtige Weg :hello: Hier ist etwas mehr Quelltext :
Code:
procedure TReDruck.Button1Click(Sender: TObject);
begin
  RecDataMod.ReckopfDS.active := false;
  RecDataMod.KuDataSet.active := false;
  WITH RecDataMod.ReckopfDS DO
    SelectSQL.Text := 'SELECT * FROM RECKOPF8 WHERE RECHNNR ='+Edit1.TEXT;
  RecDataMod.ReckopfDS.Active := true;
  WITH RecDataMod.KuDataSet DO
    SelectSQL.Text := 'SELECT * FROM KUNDE8 WHERE ID = ' +
    RecDataMod.ReckopfDS.FieldByName ('ID_KUNDE').AsString;
  RecDataMod.KuDataSet.active := true;
  QuickRep1.Preview;
  Close;
end;
Was hierbei wichtig ist : da ich keine Query verwende, muß das Active der DataSets an der richtigen Stelle stehen. Bisher hatte ich bei BEIDEN DataSets am Anfang der Prozedure active auf false und am Schluß active auf true gesetzt. An die ID_KUNDE der Rechnung komm ich aber nur ran, wenn das erste SQLselect bereits ausgeführt ist !!!

Gruß
Hansa

P.S.: Um diesem Thema hier gerecht zu werden kann ich ja jetzt mit den Artikeln weitermachen, die müssen ja sortiert werden und nicht ein einzelner Kunde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 Uhr.
Seite 2 von 2     12   

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