![]() |
Datenbank: ABSdatabase • Zugriff über: datasource
Datensatz duplizieren
Hallo
ich möchte mittels Button-Klick den aktuellen Datensatz kopieren. Dazu verwende ich folgenden Code (den ich im Forum gefunden habe)
Delphi-Quellcode:
Läßt sich auf compilieren, nur wenn ich im Programm den Button anklicke, erhalte ich eine Zugriffsverletzung.
procedure TForm1.SpeedButton2Click(Sender: TObject);
var Data: array of variant; aRecord: array of TVarRec; i: integer; max: integer; Marken: TDataSet; begin max := Marken.fields.count - 1; // set the lenghth of the arecord array to be the same as the number of // elements in the data array SetLength(arecord, max + 1); SetLength(data, max + 1); // set the variant type pointers to the data array for i := 0 to max do begin arecord[i].VType := vtVariant; arecord[i].VVariant := @data[i]; end; // Copy the Record to the Array for i := 0 to max do Data[i] := Marken.fields[i].value; Marken.Insert; Marken.SetFields(aRecord); end; Weiß jemand wo es hakt? |
Re: Datensatz duplizieren
Ich würde SQL verwenden
|
Re: Datensatz duplizieren
Wenn ABS die Syntax INSERT INTO ... SELECT FROM unterstützt, scheint mir das auch das einfachste zu sein.
|
Re: Datensatz duplizieren
Zitat:
ansonsten die Standardantwort, da wo das Programm auf nicht vorhandene Daten zugreift, weil jemand vergesssen hat, ein New Create usw. durchzuführen. Hast Du die Bereichsprüfung an? Gruß K-H |
Re: Datensatz duplizieren
Hallo,
versuch mal das.
Delphi-Quellcode:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
var
Datatab : array of variant; Recordtab : array of TVarRec; anzfields : integer; procedure TDatentools.datensatzkopieren(tabelle:TDataSet); var i : integer; begin anzfields := tabelle.fields.count -1; SetLength(Recordtab,anzfields+1); SetLength(Datatab,anzfields+1); for i :=0 to anzfields do begin Recordtab[i].VType := vtVariant; Recordtab[i].VVariant := @Datatab[i]; end; for i :=0 to anzfields do Datatab[i] := tabelle.fields[i].value; end; procedure TDatentools.datensatzeinfuegen(tabelle:TDataSet;anftab, endtab:integer); var i : integer; begin for i := anftab to anzfields-endtab do tabelle.fields[i].value := Datatab[i]; //anftab ist das feld ab dem der eintrag aus dem kopierten record in der zieltabelle erfolgt //endtab ist das feld bis zu dem der eintrag aus dem kopierten record in der zieltabelle erfolgt //ausführen //tabelle.append //Datensatzeinfuegen(tabelle,anftab,endtab); //tabelle.post // vorher natürlich dataenstzkopieren aufrufen end; |
Re: Datensatz duplizieren
Hi!
Bitte verwende -Tags für Code-Schnippsel - dann sind sie viel besser lesbar ;) Danke! Grüße, Frederic |
Re: Datensatz duplizieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz