Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi schreiben abhängig von feldinhalt geht nicht (https://www.delphipraxis.net/13135-schreiben-abhaengig-von-feldinhalt-geht-nicht.html)

Praktikant 11. Dez 2003 15:12


schreiben abhängig von feldinhalt geht nicht
 
[edit] hatg sich erledigt:
Prob: War ein numerisches Feld, welches die hintere 0 bei 0,10 gelöscht hat, sprich entweder mit strtofloat umwandeln und nach 0,10 vergleichen, oder eben nach '0,1' suchen...

[/edit]

Siehe folgenden Code, wieso schreibt er nicht die 2 in die Felder , welche in Spalte Faktor 0,10 stehen haben?
Sprich wenn ich das ausführe passiert nix :gruebel:

Delphi-Quellcode:
 
table1.first;
while not table1.eof do
  begin
    if Table1Faktor.Text = '0,10' then
    begin
      Table1.edit;
      Table1Schluessel.Text:='2';
      Table1.post;
    end;

    Table1.next;
  end;

[edit2] Titel geändert, sorry - aber mir fiel zuerst kein passender ein :angle2: [/edit2]

jziersch 11. Dez 2003 15:24

Re: wieso funktioniert das nicht...
 
Um eine tabelle zu ändern besser auf die felder und nicht auf die controls zugereifen, also

Table1.FieldByName('Schluessel').AsString := '2';

Das ist viel sicherer und ausserdem kannst du den vorgang mit table.DisableControls/EnabelControls erheblich beschleunigen.

Praktikant 11. Dez 2003 15:52

Re: wieso funktioniert das nicht...
 
hmm... kannste das erläutern, weshalb ich es so wie im bsp nicht machen soll (controls)?

Daniel 11. Dez 2003 15:56

Re: wieso funktioniert das nicht...
 
Hallo "Praktikant",

bitte gebe Deinem Thread einen aussagekräftigen Titel. Unter "Wieso funktioniert das nicht" kann sich keiner so recht etwas vorstellen.

jziersch 12. Dez 2003 10:06

Re: schreiben abhängig von feldinhalt geht nicht
 
>> kannste das erläutern, weshalb ich es so wie im bsp nicht machen soll (controls)?

Das hängt vom jeweiligen control ab. Wenn es nicht mitbekommt das die Änderung gepostet werden muss wird es das nicht tun. Wie auch immer, wenn Du die Einträge einer Datenbank verändern willst ändere die Felder direkt (s.o) - Die controls werden dann üblicherweise die Anzeige updaten.

Code:
[color=red]table1.DisableControls;[/color]
table1.first;
while not table1.eof do
  begin
    if Table1.FieldByName('Faktor').AsString = '0,10' then
    begin
      Table1.edit;
      Table1.FieldByName('Schluessel').AsString:='2';
      Table1.post;
    end;
    Table1.next;
  end;
[color=red]table1.EnableControls;[/color]
Anm:
a) FieldbyName kannste dir sparen wenn du die Felder bereits angelegt hast
b) Faktor='1,10' sieht verdächtig aus. Ich würde da eher Abs( ..AsFloat - 0.10 )<0.01 verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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