mis à jour de 2 tables sous delphi

mis à jour de 2 tables sous delphi - Delphi/Pascal - Programmation

Marsh Posté le 25-07-2005 à 16:25:50    

bonjour ,
je suis nouveau en  programmation et delphi.
 
voici mon problème: je travaille sur delphi 7, sur une base de donnée Interbase avec BDE.
 
j'ai 2 tables :  'lieu1' et 'lieu2' . Ces 2 tables contiennnent les mêmes données et même champs.
(les données sont des adresse, ville, rue etc...)
la table 'Lieu1' est en locale et subit  des modifications manuelles journalières.
la table 'Lieu2' est à distance , ne subissent pas de modification sauf par mis à jour
  en provenance de la table Lieu1.
 
Mon souci: Lors de la mis à jours de la table 'Lieu2' par la table 'Lieu1' , je dois tester d'abord la présence
des enrégistrements existants dans le table 'Lieu2'. Si les mêmes enrégistrements de la table Lieu1 existent déjà dans la table Lieu2, on ne fait rien, sinon je copie les nouvelles enrégistrements de la table1 vers la table lieu2.
( Surtout pas de copie de la table Lieu1 et le renommer en lieu2)
 
Voici le programme ci-dessous. Ce programme marche bien seulement s'il n'y a aucun enrégistrement dans la table 'Lieu2'
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   qrlieu.Open;
   while not (qrlieu.eof) do
   begin
       
             qrInsertlieu.ParamByName('li_id').AsInteger := qrlieu.fieldbyname('li_id').AsInteger;
             qrInsertlieu.ParamByName('vi_id').AsInteger := qrlieu.fieldbyname('vi_id').AsInteger;
             qrInsertlieu.ParamByName('li_adr1').Asstring := qrlieu.fieldbyname('li_adr1').Asstring;
             qrInsertlieu.ExecSQL;
             qrcommit.ExecSQL;
             qrlieu.Next;
 
   end;
end;

 
 
Explication :   qrlieu est un Query:  ( select * from lieu)  // ici lieu désigne la table lieu1
               
 
                qrInsertionlieu est un bouton dont le query est :
 
                                        insert into lieu  (li_id,vi_id,li_adr1)
                                        values(:li_id, :vi_id, :li_adr1)
                 
                 Ici Lieu designe la table Lieu2
 
 
help , help  

Reply

Marsh Posté le 25-07-2005 à 16:25:50   

Reply

Marsh Posté le 25-07-2005 à 18:47:42    

Je vois pas. Mais si tu decriver l'erreur, on aurait plus de chance (Ca génère une exception? Si oui, quelle execption?)
 
Bon...une explication qui marche souvent : Tu est sur que la table Lieu1 ne contient pas une clé unique (ce qui entrainerais une violation de clé quand tu fait une nouvelle insertion)?

Reply

Marsh Posté le 25-07-2005 à 21:12:10    

J'dis ça comme ça mais tu fera pas cela en SQL plutot? ça doit être faisable en utilisant des sous-requetes.
 

Reply

Marsh Posté le 26-07-2005 à 08:45:49    

Zozol a écrit :

Je vois pas. Mais si tu decriver l'erreur, on aurait plus de chance (Ca génère une exception? Si oui, quelle execption?)
 
Bon...une explication qui marche souvent : Tu est sur que la table Lieu1 ne contient pas une clé unique (ce qui entrainerais une violation de clé quand tu fait une nouvelle insertion)?


 
 
Merci ZOZOL
 
Effectivement j'ai une erreur de violation de clé quand je fais une nouvelle insertion.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed