kopieren von daten

timbuktubob

Grünschnabel
Mein problem: Ich soll weil auf arbeit alle so faul sind, in unseren kundenverwaltungsprogramm, eine kopier button einbauen, welchen ich für völlig überflüssig finde aber ok!
Dieser Button soll dann alle daten kopieren die in diesem Datensatz enthalten sind.
Nur die automatisch weiterzählende kundennummer nicht! Das soll zur vereinfachung des programms führen, wenn z.b. zwei firmen unter einer addresse arbeiten, das der zuständige bearbeitende nur die daten kopieren soll? jedoch habe ich keine ahnung wie ich das umsetzen sollte, weil ich auf diesem gebiet und in delphi anfänger bin! naja hoffe mir kann einer weiter helfen!
 
Ich verwende folgende procedure, die bei mir in einer allgemeinen Unit abgelegt ist.
Code:
procedure TuInitDB.CopyRec(const Table1: TTable; const PrimeKey: array of const; const sNotFields: array of String);
{************************************************************************}
{ Kopiert in Table1 den mit PrimeKey festgelegten Satz in einen neuen    }
{ Satz. Die in sNotFields spezifizierten Felder werden nicht kopiert.    }
{   uInitDB.CopyRec(dmMaQMa.dbtaWerNr, [lCopyID], ['ID','ErstUserID']    }
{************************************************************************}
var
  dbtaTmp  : TTable;
  bNotCopy : Boolean;
  i,
  iCount  : LongInt;
  sName  : String;
begin
  dbtaTmp:=TTable.Create(self);
  try
    with dbtaTmp do
    begin
      TableName:=Table1.TableName;
      DatabaseName:=Table1.DatabaseName;
      IndexName:='';
      if not Active then Open;
      IndexName:=''; { Primärindex aktivieren }
      if FindKey(PrimeKey) then
      begin
        Table1.Insert;
        IndexName:=''; { Primärindex wieder aktivieren }
        FindKey(PrimeKey);  { Noch mal auf zu kopierenden Satz setzen, da }
                              { dieser bei AfterInsert geändert werden kann }
        for iCount:=0 to pred(FieldCount) do  { Alle Felder außer den in sNotFields[] angegebenen kopieren }
        begin
          sName := Fields[iCount].FieldName;
          bNotCopy:=Table1.FindField(sName)=nil;
          i:=0;
          while not bNotCopy and (i<=High(sNotFields)) do
          begin
            bNotCopy:=sName=sNotFields[i];
            inc(i);
          end;
          if not bNotCopy then
            Table1.FieldByName(sName).Assign(FieldByName(sName));
        end;
      end;
    end;
  finally
    dbtaTmp.Free;
  end;
end;
 

Neue Beiträge

Zurück