Thema: Delphi SQL-String zu lang ?

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: SQL-String zu lang ?

  Alt 25. Feb 2008, 10:40
Hallo Smiley,

auch von mir alles Gute zu deinem Geburtstag.

Und noch ein paar Anmerkungen zu diesem Thread: Für das Duplizieren eines einzigen Datensatzes ist SQL nicht erste Wahl, insbesondere wenn du den für den neuen Datensatz automatisch vergebenen Schlüssel benötigst. Was deine Datenmodellierung angeht, so hoffe ich einfach mal, dass dir jemand zum Geburtstag ein gutes Buch zu diesem Thema geschenkt hat.

Delphi-Quellcode:
function DuplicateRecord(
    ds: TCustomADODataSet;
    pkName: string;
    pkValue: Variant; // null means current record
    fieldNames: TStrings = nil // nil means no field restrictions
): Variant;
var
  dsClone: TADODataSet;
  f: TFields;
  i: Integer;
begin
  if not ds.IsEmpty
  and ((pkValue = null) or ds.Locate(pkName, pkValue, [])) then
  begin
    dsClone := TADODataSet.Create(ds.Owner);
    dsClone.Clone(ds);
    f := ds.Fields;
    ds.DisableControls;
    try
      ds.Insert;
      for i := 0 to Pred(ds.FieldCount) do
        if not SameText(f[i].FieldName, pkName)
        and (not Assigned(fieldNames) or (fieldNames.IndexOf(f[i].FieldName) >= 0)) then
          f[i].Value := dsClone.FieldByName(f[i].FieldName).Value;
      ds.Post;
      Result := ds.FieldByName(pkName).Value;
    finally
      ds.EnableControls;
      dsClone.Free;
    end;
  end else Result := null;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat