Dupliquer un enregistrement complet [Résolu]

sylviecl 26 Messages postés vendredi 24 septembre 2004Date d'inscription 1 février 2006 Dernière intervention - 19 sept. 2005 à 17:58 - Dernière réponse : dubois77 692 Messages postés jeudi 17 avril 2008Date d'inscription 14 septembre 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

cs_sim51 314 Messages postés dimanche 31 octobre 2004Date d'inscription 31 décembre 2006 Dernière intervention - 20 sept. 2005 à 16:53
0
Merci
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 !!!
Commenter la réponse de cs_sim51
0
Merci
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
Commenter la réponse de Abachayib
0
Merci
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
Commenter la réponse de Abachayib
dubois77 692 Messages postés jeudi 17 avril 2008Date d'inscription 14 septembre 2018 Dernière intervention - 24 févr. 2013 à 16:28
0
Merci
Abachayib, tu en mets un peu partout, mais hélas pas un au bon endroit !


Dubois77
site perso
Commenter la réponse de dubois77
sylviecl 26 Messages postés vendredi 24 septembre 2004Date d'inscription 1 février 2006 Dernière intervention - 20 sept. 2005 à 18:08
-2
Merci
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
Commenter la réponse de sylviecl

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.