Autor Beitrag
Robby
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

Winxp
Delphi 4
BeitragVerfasst: So 04.12.05 23:34 
Hei ich möchte eine Datenbank mit einer Schleife ändern hier mein Code,
aber der funzelt nicht. Kann mir Jemand Helfen.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 begin
 Data.Table.first; 
while Not Data.Table.EOF do  begin

if Data.Table.fieldByName('pos').AsString = Edit14.text then
  data.Table.Active:= true;
Data.Table.edit;
Data.Table.fieldByName('pos').AsString := Edit15.text ;
 Data.Table.post;
Data.Table.next;
end;
      end;
//  Data.TableStueckliste.CancelRange;
   // Data.TableStueckliste.Refresh;
end;
end.


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.

_________________
Es gibt keine dummen Fragen,
nur dumme Antworten.
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Mo 05.12.05 09:06 
Hallo,

so sollte es gehen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
begin  
  with Data.Table do
  begin
    First;   
    while not EOF do 
    begin
      // da die Tabelle bereits aktiv ist, ist dieser Aufruf überflüssig >data.Table.Active:= true<
      // nur Datensätze ändern, deren Kriterium zutrifft.
      if (FieldByName('pos').AsString=Edit14.Text) then  
      begin
        Edit;  
        FieldByName('pos').AsString:=Edit15.Text;  
        Post;  
      end// if
      Next;  
    end// while
  end; / with Data.Table
end;

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Robby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

Winxp
Delphi 4
BeitragVerfasst: Mo 05.12.05 20:09 
Habe dein Quelltext ausprobiert, aber leider hatte ich keinen Erfolg.
Bei mehreren versuchen änderte sich nur ein Feld und manchmal alle aber überwiegend nur ein Feld.
Gruß Robby

_________________
Es gibt keine dummen Fragen,
nur dumme Antworten.


Zuletzt bearbeitet von Robby am Mo 05.12.05 20:22, insgesamt 1-mal bearbeitet
stifflersmom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: Mo 05.12.05 20:15 
Der Code von Smiegel sieht an sich gut aus...

Du solltest mal Deinen gesamten Quelltext hier posten,
allgemein sind die Glaskugeln in letzter Zeit ziemlich unzuverlässig...

Moin
Robby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

Winxp
Delphi 4
BeitragVerfasst: Mo 05.12.05 20:27 
Hier mein Quelltext.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm5.Button4Click(Sender: TObject);
begin
  with Data.TableLager do
  begin
   First;
    while not EOF do
    begin
      // nur Datensätze ändern, deren Kriterium zutrifft.
      if (FieldByName('pos').AsString=Edit14.Text) then
        begin
        Edit;
        FieldByName('pos').AsString:=Edit15.Text;
        Post;
      end;
      Next;
    end;
  end;
ShowMessage('Die Änderungen wurden erfolgreich in der Datenbank abgespeichert.');
end;

_________________
Es gibt keine dummen Fragen,
nur dumme Antworten.
stifflersmom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: Mo 05.12.05 20:38 
Zitat:
Bei mehreren versuchen änderte sich nur ein Feld und manchmal alle aber überwiegend nur ein Feld.


Also, laut Deinem Code KANN sich auch nur ein Feld ändern, das Feld heißt bei Dir "pos".
Allerdings sollten sich in jedem Datensatz das Feld "pos" ändern wenn Die Bedingungen werfüllt sind, der Code sieht immer noch gut aus.
Vielleicht spielt der Cache Deines Rechners (oder der BDE) einen Streich.
Starte mal das Programm, laß es durch laufen, beende es und schaue dann mal mit der Datenbankoberfläche in die Tabelle rein und bestimme dann abschließend, ob nicht doch alle relevanten Datensätze verändert wurden.

Wenn es denn tatsächlich am Cache liegt, schau mal unter FlushBuffers nach, könnte Dir weiter hefen.

Moin
Robby Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

Winxp
Delphi 4
BeitragVerfasst: Mo 05.12.05 21:26 
Hurra, :lol: es funzelt ich habe eine neue Table-Komponente genommen.
Danke an alle für Eure Geduld.
Robby. :D