Bonjour voila je cree une apllication avec delphi 5 et firebird 1.5.
Le but de mon apppli (pour linstant) c est de prendre une base dbase et la mettre sous firebird.
Juske la tout va bien , je fais tout ce ki faut avec les bde , je choisis les tables dbase, je cree dynamiquement la structure de la base firebird et je copie mes enregistrement.Le probleme c est que des enregistrements de la base dbase contienne des erreurs dans des champs cle etrangeres donc je suis oblige de faire :
- creation de la base firebird
- copie des donnes
- correction des donnees ( valeur de donne cle etrangere referencant une cle primaire pour laquelle cettte valeur n'existe pas!!!! ) et donc seulement apre modifier la structure de la base firebird en fasaint :
- ALTER mes tables pour rajouter mes cle etrangere SEULEMENT LA CA COINCE !!!

voila mon code ou je fais ALTER ET où CA COINCE (au premier COMMIT):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
procedure cle_etr();
 var IBQuery: TIBQuery;
 
begin
 
     IBQuery := TIBQuery.Create(nil);
 
     IBQuery.SQL.Clear();
 
      IBQuery.Database:= form5.IBDatabase;
 
     IBQuery.Transaction := form5.IBTransaction;
 
       //CREATION CONTRAINTE CLE ETRANGERE UNION HOMME
      IBQuery.SQL.Add('ALTER TABLE "FBUNIMODIF" ADD CONSTRAINT '+
      '"CLE_ETRAN_HOM" FOREIGN KEY (HOMME) REFERENCES FBIDIMODIF("IDI");');
 
      IBQuery.ExecSQL;
 
-->ca COINCE-->      form5.IBTransaction.Commit;
 
      IBQuery.SQL.Clear;
 
      form5.IBTransaction.Active:=True;
 
        //CREATION CONTRAINTE CLE ETRANGERE UNION FEMME
      IBQuery.SQL.Add('ALTER TABLE "FBUNIMODIF" ADD CONSTRAINT'+
      '"CLE_ETRAN_FEM" FOREIGN KEY (FEMME) REFERENCES FBIDIMODIF("IDI");');
 
      IBQuery.ExecSQL;
 
      form5.IBTransaction.Commit;
 
      IBQuery.SQL.Clear;
 
end;
donc l erreur me dit edbengine error , unsuccessfulle metadata update , FBIDIMODIF is in use,

moi ce que je compren c'est que les table que je veu modifier sont ouvertes , mais heureusement sinon je peux pa les modifier??
NON??
alors si quelqu un sait quelque chose ... ce qui va pas dans mon code ou si c est autre chose merci de me repondre...