Dupliquer un enregistrement complet

Résolu
sylviecl Messages postés 26 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 1 février 2006 - 19 sept. 2005 à 17:58
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 - 24 févr. 2013 à 16:28
Bonjour, je cherche à permettre de dupliquer un enregistrement complet d'une table (pour éviter la resaisie complète), j'utilise un insertrecord mais le problème que j'ai c'est que le premier champ est un champ autoincrémenté et cela ne passe pas.
Pouvez-vous m'aider ?

Voilà mon code :

procedure TForm1.DupliquerFiche;
var
i : integer;
ListeChamps : string;
begin
ListeChamps :='';
For i:=1 to DM1.QFicheInter.FieldCount -1 do
if DM1.QFicheInter.Fields[i].Value = null then
ListeChamps := ListeChamps + ', Null'
else if DM1.QFicheInter.Fields[i].DataType = ftDate then
ListeChamps := ListeChamps + ','+ DateToStr(DM1.QFicheInter.Fields[i].Value)
else if DM1.QFicheInter.Fields[i].DataType = ftTime then
ListeChamps := ListeChamps + ','+ TimeToStr(DM1.QFicheInter.Fields[i].Value)
else if DM1.QFicheInter.Fields[i].DataType = ftCurrency then
ListeChamps := ListeChamps + ','+ FloatToStr(DM1.QFicheInter.Fields[i].Value)
else if DM1.QFicheInter.Fields[i].DataType = ftFloat then
ListeChamps := ListeChamps + ','+ FloatToStr(DM1.QFicheInter.Fields[i].Value)
else if DM1.QFicheInter.Fields[i].DataType = ftBoolean then
ListeChamps := ListeChamps + ','+ BoolToStr(DM1.QFicheInter.Fields[i].Value)
else if DM1.QFicheInter.Fields[i].DataType = ftSmallint then
ListeChamps := ListeChamps + ','+ IntToStr(DM1.QFicheInter.Fields[i].Value)
else if DM1.QFicheInter.Fields[i].Value <> null then
ListeChamps := ListeChamps + ','+ DM1.QFicheInter.Fields[i].Value;
DM1.TFicheInter.InsertRecord([ListeChamps]);
end;

Merci d'avance

5 réponses

cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
20 sept. 2005 à 16:53
Salut,

J'ai une petite question pour toi : pourquoi ton champs est autoincrémenté ?

Peut êrte parceque c'est la clef primaire de ta table non ?

Donc de toute façon tu ne peux pas copier un enregistement complet, il
faut obligatoirement que la clef primaire soit unique donc différente
de l'enregistrement que tu copies.

Sinon, il te suffit de faire un update sur la copie de ton
enregistrement en changeant le champ autoincrementé ( le type
autoincrémentation ne s'effectue que sur un insert, tu peux toujours le
changer par un update )

Bonne continuation.

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
0
Bonjour! j ai une table documentation et j utilise des Tquery! et j aimerai ajouter une table exemplaire !de telle sorte que si j ai quantité de livre = n sa m enregistre n fois le livre mais avec explaire1,2....jsko N eme livre!Merci de bien vouloir me repondre
0
CORRECTION ........ c est luto ajouter un champs pas une table!!!!

Bonjour! j ai une table documentation et j utilise des Tquery! et j aimerai ajouter un champs exemplaire !de telle sorte que si j ai quantité de livre = n sa m enregistre n fois le livre mais avec explaire1,2....jsko N eme livre!Merci de bien vouloir me repondre
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
24 févr. 2013 à 16:28
Abachayib, tu en mets un peu partout, mais hélas pas un au bon endroit !


Dubois77
site perso
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sylviecl Messages postés 26 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 1 février 2006
20 sept. 2005 à 18:08
On m'a conseillé cela et ça marche niquel, avis à ceux que cela pourrait intéresser :




Code:
,
----

With DM1.QFicheInter do
begin
DM1.Table.Append;
for i := 1 to FieldCount -1 do
DM1.Table.Fields.Fields[i].assign(Fields.Fields[i]);
try
DM1.Table.Post;
Except on Exception do
DM1.Table.Cancel;
end;
end; // with
-2
Rejoignez-nous