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):
donc l erreur me dit edbengine error , unsuccessfulle metadata update , FBIDIMODIF is in use,
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;
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...
Partager