AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten Schleife schneller machen
Thema durchsuchen
Ansicht
Themen-Optionen

Daten Schleife schneller machen

Ein Thema von robby3 · begonnen am 30. Nov 2005 · letzter Beitrag vom 2. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#1

Daten Schleife schneller machen

  Alt 30. Nov 2005, 21:19
Datenbank: dBase • Zugriff über: Query
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

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;
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Daten Schleife schneller machen

  Alt 30. Nov 2005, 22:38
eventuell kann das ja die datenbank schon?
mit einem tollen query kannste das dann superschnell machen LASSEN
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Daten Schleife schneller machen

  Alt 30. Nov 2005, 22:44
Zitat von supermuckl:
eventuell kann das ja die datenbank schon?
mit einem tollen query kannste das dann superschnell machen LASSEN
Also so toll ist der SQL Befehl nun aber wahrlich nicht, und auch nicht unbedingt Datenbankabhängig.

update TabellenName set lagerb=lagerb-stueck Das Ganze in eine TQuery Komponente in die SQL Eigenschaft gelegt und mit
Query1.ExecSQL ; ausgeführt.

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 ;
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Daten Schleife schneller machen

  Alt 30. Nov 2005, 22:59
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Daten Schleife schneller machen

  Alt 30. Nov 2005, 23:02
Zitat von alzaimar:
Wer wirklich Ahnung hat, hat es auch nicht nötig, das raushängen zu lassen. Denk mal drüber nach.
Wie bist Du denn drauf.
Also ich hab doch hier keinen durch den Kakao gezogen. War zumindest nicht meine Absicht.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Daten Schleife schneller machen

  Alt 30. Nov 2005, 23:14
Zitat von Jelly:
Zitat von alzaimar:
Wer wirklich Ahnung hat, hat es auch nicht nötig, das raushängen zu lassen. Denk mal drüber nach.
Wie bist Du denn drauf.
Also ich hab doch hier keinen durch den Kakao gezogen. War zumindest nicht meine Absicht.
Ist es zu spät für mich? Kann sein. Wenn Du dich nicht angesprochen fühlst, dann bin ich zu alt. Deine Äußerung 'so toll ist ...' lies mich annehmen, Du würdest das nicht Ernst nehmen, aber jetzt seh' ich erst, das Du es bist, Jelly. Stimmt. Ist nicht Deine Art.

Tschuljung.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Pluto

Registriert seit: 1. Dez 2005
Ort: Dietzenbach
53 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Daten Schleife schneller machen

  Alt 1. Dez 2005, 00:29
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.
begin
if Aufwand > Ergebnis then exit;
end;
  Mit Zitat antworten Zitat
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#8

Re: Daten Schleife schneller machen

  Alt 1. Dez 2005, 19:54
Hei Danke es funzelt mit dem Code.
Delphi-Quellcode:
with Query1 do begin
   SQL.text := Format ('update TabellenName set lagerb = lagerb - %d * stueck',[i2]) ;
   ExecSQL ;
end ;
Nochmals Danke.
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Daten Schleife schneller machen

  Alt 1. Dez 2005, 20:01
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.
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Daten Schleife schneller machen

  Alt 2. Dez 2005, 01:40
Zitat von supermuckl:
aber kein problem, ich habs nicht persönlich genomen jelly
Passt schon, wollt ja auch keinem was unterstellen. Hauptsache die Frage ist beantwortet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:03 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