Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#14

AW: Datensatz in einer Datenbank kopieren

  Alt 27. Jun 2012, 16:20
ich wollte nur nicht alle felder kopieren, sondern nur ein paar ausgewählte.
Du hast ja die Möglichkeit nach dem Kopieren aller Felder bestimmte Felder wieder zu löschen:
Delphi-Quellcode:
// alle Felder löschen die in der Liste übergeben wurden
procedure ClearDbFields(ds:TDataset; feldliste:array of string);
var
   i : Integer;
   f : TField;
begin
   for i:=Low(feldliste) to High(feldliste) do
   begin
      f := ds.FindField(feldliste[i]);
      if Assigned(f) then
         f.Clear; // Set Field to NULL
   end;
end;
Auf jeden Fall macht es Sinn deine Anforderung durch Benutzung von "Basisfunktionen" zu lösen, als nur eine Funktion zu haben, die Alles macht.
Delphi-Quellcode:
DuplicateCurrentRecord(aDataset); // zuerst alles kopieren
ClearDbFields(aDataset, ['Feld1', 'Feld2']); // dann das Löschen was nicht erwünscht ist
Du kannst auch das Property Tag verwenden, um zwischen erwünschten und unerwünschten Feldern zu unterscheiden:
Delphi-Quellcode:
procedure ClearTaggedDbFields(ds:TDataset; mask:integer);
var
   i : Integer;
   f : TField;
begin
   for i:=0 to ds.fields.Count-1 do
   begin
      f := ds.fields[i];
      if (f.Tag and mask) <> 0 then
         f.Clear;
   end;
end;
Auf jeden Fall sind die hier gezeigten Funktionen wiederverwendbar und können so für jede Tabelle benützt werden.
Andreas
  Mit Zitat antworten Zitat