AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensatz duplizieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datensatz duplizieren

Ein Thema von Franz100 · begonnen am 29. Jan 2010 · letzter Beitrag vom 30. Jan 2010
Antwort Antwort
Franz100

Registriert seit: 1. Aug 2005
17 Beiträge
 
#1

Datensatz duplizieren

  Alt 29. Jan 2010, 11:18
Datenbank: ABSdatabase • Zugriff über: datasource
Hallo

ich möchte mittels Button-Klick den aktuellen Datensatz kopieren. Dazu verwende ich folgenden Code (den ich im Forum gefunden habe)
Delphi-Quellcode:
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;
Läßt sich auf compilieren, nur wenn ich im Programm den Button anklicke, erhalte ich eine Zugriffsverletzung.
Weiß jemand wo es hakt?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datensatz duplizieren

  Alt 29. Jan 2010, 11:21
Ich würde SQL verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datensatz duplizieren

  Alt 29. Jan 2010, 11:30
Wenn ABS die Syntax INSERT INTO ... SELECT FROM unterstützt, scheint mir das auch das einfachste zu sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Datensatz duplizieren

  Alt 29. Jan 2010, 13:04
Zitat von Franz100:
Läßt sich auf compilieren, nur wenn ich im Programm den Button anklicke, erhalte ich eine Zugriffsverletzung.
wo denn genau?
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
olaf

Registriert seit: 4. Mai 2009
Ort: Iserlohn
82 Beiträge
 
RAD-Studio 2009 Pro
 
#5

Re: Datensatz duplizieren

  Alt 30. Jan 2010, 08:19
Hallo,

versuch mal das.

Delphi-Quellcode:
  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;
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#6

Re: Datensatz duplizieren

  Alt 30. Jan 2010, 08:23
Hi!

Bitte verwende -Tags für Code-Schnippsel - dann sind sie viel besser lesbar

Danke!


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Datensatz duplizieren

  Alt 30. Jan 2010, 09:15
Zitat:
Bitte verwende -Tags für Code-Schnippsel - dann sind sie viel besser lesbar
Das hab ich mal für dich übernommen, das nächste mal aber selber machen.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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