Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADS Spalte einlesen, filtern, in andere Spalte einfügen (https://www.delphipraxis.net/64674-ads-spalte-einlesen-filtern-andere-spalte-einfuegen.html)

Grolle 6. Mär 2006 23:02

Datenbank: ADS Local • Version: 7.1 • Zugriff über: TDataSet

ADS Spalte einlesen, filtern, in andere Spalte einfügen
 
Hallo!
Ich möchte gerne alle Einträge einer bestimmten Spalte einlesen, filtern und
in eine ander Spalte einfügen. Wie muss ich die Schleife da anwenden? Habs so
probiert, aber das haut nicht hin:
Delphi-Quellcode:
var
i : integer;
s : string;
begin
  for i:=1 to ADSTable1.RecordCount-1 do
    begin
      s := DBEdit8.Text;
      s := Stringreplace(s,'/','',[rfReplaceAll]);
      s := Stringreplace(s,'-','',[rfReplaceAll]);
      s := Stringreplace(s,' ','',[rfReplaceAll]);
      AdsTable1.Edit;
      AdsTable1.FieldByName('tsuche').AsString := s;
      AdsTable1.Post;
    end;
end;
Viele Grüße..

jensw_2000 7. Mär 2006 00:39

Re: ADS Spalte einlesen, filtern, in andere Spalte einfügen
 
Ich habe bisher noch nicht mit ADS Datenbanken gearbeitet, aber hier 2 Ansätze die imho laufen sollten:

1.
Delphi-Quellcode:
var
  id : integer;
  s : string;
  Q: TAdsQuery;
begin
 
  Q:=TAdsQuery.create(self);
  try
    Q.connection:=<DeineAdsConnection>;
    Q.SQL.Text:='UPDATE <Tabelle> SET [tsuche] = :matchcode WHERE ID = :DatensatzID');
    Q.Prepared := true; // << weiss nicht, ob das bei ADS nötig ist ....
   
    ADSTable1.DisableControls;
    try
      While not ADSTable1.eof do
      begin
        s := ADSTable1.FieldByName('<Das Quellfeld>').asstring;
        id := ADSTable1.FieldByName('ID').asstring;
        s := Stringreplace(s,'/','',[rfReplaceAll]);
        s := Stringreplace(s,'-','',[rfReplaceAll]);
        s := Stringreplace(s,' ','',[rfReplaceAll]);
       
        Q.Parameters.ParamByName('DatensatzID').value :=id;
        Q.Parameters.ParamByName('matchcode').value :=s;
        Q.ExecSQL;

        AdsTable1.next;
      end;
    finally
      ADSTable1.EnableControls;
    end;
  finally
    FreeAndNIL(Q);
  end;
end;

2.

Veruche mal einfach in deinem Code
Delphi-Quellcode:
for i:=1 to ADSTable1.RecordCount-1 do
begin
  ...
end;
durch
Delphi-Quellcode:
ADSTable1.first;
While not ADSTable1.eof do
begin
  ...
  ADSTable1.next;
end;
zu ersetzen ...

Mit deiner FOR TO Schleife bewegst du den Datensatzzeiger nicht.
Zumindest must du da noch ein Recno:=i mit einbauen damit das funktioniert.



Schöne Grüße,
Jens
:hi:

joachimd 7. Mär 2006 08:42

Re: ADS Spalte einlesen, filtern, in andere Spalte einfügen
 
Delphi-Quellcode:
var
i : integer;
s : string;
begin
  for i:=1 to ADSTable1.RecordCount-1 do
    begin
      s := DBEdit8.Text;
      s := Stringreplace(s,'/','',[rfReplaceAll]);
      s := Stringreplace(s,'-','',[rfReplaceAll]);
      s := Stringreplace(s,' ','',[rfReplaceAll]);
      AdsTable1.Edit;
      AdsTable1.FieldByName('tsuche').AsString := s;
      AdsTable1.Post;
    end;
end;
Dein DBEdit8 ist doch sicherlich an irgendeine Komponente gebunden. Man verwende grundsätzlich nicht die DBEdit.XXX Methoden, sondern grefit auf die zugrundeliegende Datenmenge zu. Und ja, nimm den Ansatz von jensw_2000:
Delphi-Quellcode:
While not AdsTable1.EOF do
  begin
    //mach was
    AdsTable1.Next;
  end;
Oder gleich SQL:
SQL-Code:
 update #test set tsuche=REPLACE(REPLACE(REPLACE(tsuche,' ',''),'-',''),'/','');

Grolle 7. Mär 2006 10:17

Re: ADS Spalte einlesen, filtern, in andere Spalte einfügen
 
Hallo!
Danke! Klappt alles bestens! :mrgreen:

Viele Grüße...


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