![]() |
Datenbank: dBase • Zugriff über: Query
Daten Schleife schneller machen
Hei ich brauche eure Hilfe
kann mir jemand einen Tipp geben wie ich meine Routine schneller machen kann. Ich möchte in einer Datenbank den Inhalt Lagerb von Stueck abziehen. Hier mein Code :?: :wink:
Delphi-Quellcode:
procedure TWAusgang.Button6Click(Sender: TObject);
begin if Data.TableStueckliste.active= false then exit; try i2:= StrToInt(edit1.text); except Showmessage('Keine gültige Zahl im Textfeld!'); exit; end; for i1:= 1 to i2 do begin Data.tableLager.indexname:='pos'; data.tableCopy.active:=true; Data.TableStueckliste.first; Data.TableCopy.first; while not Data.tableCopy.Eof do begin Data.TableCopy.edit; Data.TableCopy.fieldByName('lagerb').AsInteger := Data.TableCopy.fieldByName('lagerb').AsInteger- Data.TableCopy.fieldByName('stueck').AsInteger; Data.TableCopy.post; Data.TableCopy.next; end; end; |
Re: Daten Schleife schneller machen
eventuell kann das ja die datenbank schon?
mit einem tollen query kannste das dann superschnell machen LASSEN |
Re: Daten Schleife schneller machen
Zitat:
SQL-Code:
Das Ganze in eine TQuery Komponente in die SQL Eigenschaft gelegt und mit
update TabellenName set lagerb=lagerb-stueck
Delphi-Quellcode:
ausgeführt.
Query1.ExecSQL ;
EDIT: Noch ein Nachtrag... Habe jetzt ganz übersehen, dass das Ganze i2 mal passieren soll... Dann so
Delphi-Quellcode:
with Query1 do begin
SQL.text := Format ('update TabellenName set lagerb = lagerb - %d * stueck',[i2]) ; ExecSQL ; end ; |
Re: Daten Schleife schneller machen
Du musst aber supermuckl nicht so herablassend behandeln. Denn ob ein SQL-Befehl 'so toll' ist oder nicht, hängt in erster Linie von der Erfahrung und vom Wissen des Posters oder Lesers ab. Und nur weil Du vielleicht hier etwas mehr Wissen angehäuft hast, sollte kein Grund sein, von Oben herab so eine Äußerung durch den Kakao zu ziehen. In einem Punkt hat das supermuckl aber Recht: Die Fähigkeit, einen SQL-Befehl performant abzuarbeiten, ist in der Tat datenbankabhängig.
Wer wirklich Ahnung hat, hat es auch nicht nötig, das raushängen zu lassen. Denk mal drüber nach. |
Re: Daten Schleife schneller machen
Zitat:
Also ich hab doch hier keinen durch den Kakao gezogen. War zumindest nicht meine Absicht. |
Re: Daten Schleife schneller machen
Zitat:
Tschuljung. |
Re: Daten Schleife schneller machen
Genereller Tipp:
Solche Schleifen können ganz schön Zeit kosten, insbesondere wenn die Datenbank auf einem Server im (lokalem) Netz steht. (Es lässt sich auch nicht alles mit SQL machen) Ich gehe in solchen Fällen so vor: 1. Mit einer Query die Daten in ein Clientdataset laden. 2. Daten dann lokal verarbeiten. Da Alles im Memory abläuft, werden auch lange Schleifen mit tausenden von Datensätzen blitzschnell verarbeitet. 3. Mit ApplyUpdates Resultate auf einen Rutsch in die Datenbank übertragen. |
Re: Daten Schleife schneller machen
Hei Danke es funzelt mit dem Code.
Delphi-Quellcode:
Nochmals Danke. :bounce2:
with Query1 do begin
SQL.text := Format ('update TabellenName set lagerb = lagerb - %d * stueck',[i2]) ; ExecSQL ; end ; |
Re: Daten Schleife schneller machen
das "so toll" hätte ich wohl noch ein wenig ironischer erscheinen lassen sollen ;)
ich bin schon etwas länger mit mysql + php + delphi am querys bauen. aber kein problem, ich habs nicht persönlich genomen jelly :) //edit ich wollte halt nicht gleich die lösung auf dem silbertablett präsentieren. |
Re: Daten Schleife schneller machen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 Uhr. |
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