Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   gesonderte Ergebnisberechnung in DB-Tab eingeben (https://www.delphipraxis.net/192351-gesonderte-ergebnisberechnung-db-tab-eingeben.html)

haentschman 12. Apr 2017 08:26

AW: gesonderte Ergebnisberechnung in DB-Tab eingeben
 
Moin...:P
Zitat:

Ist das normal, dass er nach der Eingabe und dem ButtonClick die gesamte Tabelle mit den Datensätzen zb. 1-10 nochmals als neue Tabelle hinter 10 mit 1-10 und den neuen Werten wiederholt?
Das liegt am RefreshItems. Hier wird die gesamte ListView neu aufgebaut. :zwinker: Das fehlt nur ein beherztes
Delphi-Quellcode:
lvProducts.Items.Clear
...nicht nur CLEAR. :warn:
Zitat:

es war schon spät und den Tag über wuseln meine beiden Enkel herum. Meine Konzentration war nicht mehr gegeben.
...denkbar schlechte Voraussetzungen zum Programmieren. :zwinker:

EdAdvokat 12. Apr 2017 19:42

AW: gesonderte Ergebnisberechnung in DB-Tab eingeben
 
Nach all den Mühen versuche ich nun eine Navigation für die Datentabelle zu implementieren. Geht das überhaupt in dem Programm, ähnlich dem DBNavigator. Als Pilotlösung habe ich einen Next-Button auf das Formular gelegt mit folgender Procedure:
Delphi-Quellcode:
procedure TMainFrm.btnNextClick(Sender: TObject);
begin
  qryMain.Close;
  qryMain.SQL.Clear;
  qryMain.SQL.Text:='SELECT * FROM WARENVERKAUF1';
  qryMain.Open();
  If not qryMain.IsEmpty then
   qryMain.Active:=true;

   qryMain.Next;
end;
Sicher ist manches doppelt gemoppelt doch auch so tut sich wieder mal überhaupt nichts. keine Fehlermeldung aber der Datensatz springt nicht zum nächten.
Zuvor hatte ich trotz Query.open die Fehlermeldung "Operation ist bei geschlossener Datenmenge nicht möglich" obwohl ich query.open und auch query.active:=true; gesetzt hatte.
Geht das was ich will überhaupt in der vorliegenden Konstalation?

p80286 12. Apr 2017 22:18

AW: gesonderte Ergebnisberechnung in DB-Tab eingeben
 
Was willst Du erreichen?
Mit der bisher besprochenen Abfrage stehen Dir die abgefragten Daten zur Verfügung. Wenn Du in dieser Menge (Listview?) navigieren willst, mußt Du dies in der Listview machen und nicht durch eine neue Abfrage.

Zu Deiner Abfrage:
durch das
Delphi-Quellcode:
.Open
wird die Abfrage durchgeführt (
Delphi-Quellcode:
.Open
entspricht
Delphi-Quellcode:
.Aktive:=True;
Delphi-Quellcode:
.Close
entspricht
Delphi-Quellcode:
.Aktive:=False
)
das
Delphi-Quellcode:
.Aktve:=True;
ist somit überflüssig.
Du holst die abgefragten Daten nicht ab (
Delphi-Quellcode:
MyStringValue:=Query.FieldbyName('Feldname').asstring;
).
Das
Delphi-Quellcode:
.Next
setzt zwar den Zeiger auf den zweiten Wert, aber das ist vollkommen unnütz, da Du mit den Daten nichts anfängst.

Gruß
K-H

Jumpy 13. Apr 2017 08:00

AW: gesonderte Ergebnisberechnung in DB-Tab eingeben
 
Hab mir dein Projekt nicht angeguckt, kann also nicht so konkret antworten wie p80286, aber wenn ich mir in einer Datenmenge den nächsten Datensatz anzeigen lassen möchte, muss ich nicht die jedesmal die Datenmenge schließen und neu öffnen (das ist im Gegenteil sogar kontraproduktiv). Es genügt ein .Next:

Delphi-Quellcode:
procedure TMainFrm.btnNextClick(Sender: TObject);
begin
  if not qryMain.EOF then //ggf. unnötig
    qryMain.Next;
  //Dann was du mit den Daten machen willst, gehe ich nach obigen Posts, sowas?:
  RefreshItems(qryMain.FieldByName('ID').AsString,
               qryMain.FieldByName('KDNR').AsString,
               qryMain.FieldByName('Name').AsString,
               //...
               );
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.
Seite 3 von 3     123   

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