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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| Mondata.ADOConnec.BeginTrans;
mondata.ADOQuery_duplication.Active:=false;
Mondata.ADOQuery_duplication.Parameters.ParamByName('param_id1').Value:=entite_foca.ID;
Mondata.ADOQuery_duplication.Active:=true;
//on obtient l'ensemble des données avec leur valeurs respective suivant les cas
//chaque ligne correspond à type de donnée que l'on reconnait grace à lid_type_donnee_heritiere
mareq2:=TADOQuery.Create(nil);
mareq2.Connection:=Mondata.ADOConnec;
Mareq2.Active:=false;
while not Mondata.ADOQuery_duplication.Eof do
begin
ID_duplique:=mondata.ADOQuery_duplication.FieldByName('ID_Donnee').value;
//on va pouvoir remplir la table donnée
textereq:='INSERT INTO Donnee (ID_Type_Donnee_Heritiere, ID_Donnees_Historiques, ID_Source, ID_entite,ID_Propriete_entite) VALUES (' + inttostr(Mondata.ADOQuery_duplication.fieldByName('ID_Type_Donnee_Heritiere').Value) + ',' + inttostr(Mondata.ADOQuery_duplication.fieldByName('ID_Donnees_Historiques').Value) + ',' + inttostr(Mondata.ADOQuery_duplication.fieldByName('ID_Source').Value) + ',' + inttostr(NodeDnew.Entite.ID) + ',' + inttostr(Mondata.ADOQuery_duplication.fieldByName('ID_Propriete_entite').Value) + ');';
mareq.active:=false;
mareq.SQL.Clear;
mareq.SQL.add(textereq);
mareq.ExecSQL;
mareq.Close;
mareq.SQL.Clear;
mareq.SQL.Add('SELECT @@IDENTITY AS ID;');
Mareq.Active:=true;
if not mareq.Eof then
case Mondata.ADOQuery_duplication.FieldByName('ID_Type_Donnee_Heritiere').Value of
1 :
begin
mareq2.SQL.Clear;
mareq2.SQL.Add('SELECT Booleen FROM Donnee_booleen WHERE ID_Donnee_Booleen=' + inttostr(mondata.ADOQuery_duplication.FieldByName('ID_Donnee').value));
mareq2.Active:=true;
if not Mareq2.Eof then
textereq:='INSERT INTO Donnee_Booleen (ID_Donnee_Booleen , Booleen) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + booltostr(mareq2.FieldByName('Booleen').value) + ');';
mareq2.Close;
end;
2 :
begin
mareq2.SQL.Clear;
mareq2.SQL.Add('SELECT Entier FROM Donnee_Entier WHERE ID_Donnee_Entier=' + inttostr(ID_duplique));
mareq2.Active:=true;
if not Mareq2.Eof then
textereq:='INSERT INTO Donnee_Entier (ID_Donnee_Entier , Entier) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + inttostr(mareq2.FieldByName('Entier').value) + ');';
mareq2.Close;
end;
3 :
begin
mareq2.SQL.Clear;
mareq2.SQL.Add('SELECT Chaine FROM Donnee_Chaine WHERE ID_Donnee_Chaine=' + inttostr(mondata.ADOQuery_duplication.FieldByName('ID_Donnee').value));
mareq2.Active:=true;
if not Mareq2.Eof then
textereq:='INSERT INTO Donnee_Chaine (ID_Donnee_Chaine , Chaine) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + quotedstr(mareq2.FieldByName('Chaine').AsString) + ');';
mareq2.Close;
end;
// 4 :
// begin
// textereq:='INSERT INTO Donnee_Enum (ID_Donnee_Enumeration , ID_Enumeration) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + inttostr(mondata.ADOQuery_duplication.FieldByName('Enum').value) + ');';
// end;
5 :
begin
mareq2.SQL.Clear;
mareq2.SQL.Add('SELECT Min,Max,moyenne,ID_Unite FROM Donnee_Point WHERE ID_Donnee_Point=' + inttostr(mondata.ADOQuery_duplication.FieldByName('ID_Donnee').value));
mareq2.Active:=true;
if not Mareq2.Eof then
textereq:='INSERT INTO Donnee_Point (ID_Donnee_Point,Min,Max,moyenne,ID_Unite) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + floattostr(mareq2.FieldByName('Min').value) + ',' + floattostr(mareq2.FieldByName('Max').value) + ',' + floattostr(mareq2.FieldByName('Moyenne').value) + ',' + inttostr(mareq2.FieldByName('ID_Unite').value) +');' ;
mareq2.Close;
end;
6 : showmessage('une courbe');
7 : showmessage('une image');
8 :
begin
mareq2.SQL.Clear;
mareq2.SQL.Add('SELECT Date FROM Donnee_Date WHERE ID_Donnee_Date=' + inttostr(mondata.ADOQuery_duplication.FieldByName('ID_Donnee').value));
mareq2.Active:=true;
if not Mareq2.Eof then
textereq:='INSERT INTO Donnee_Date (ID_Donnee_Date , Date) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + Datetostr(mareq2.FieldByName('Date').value) + ');';
mareq2.Close;
end;
9 :
begin
mareq2.SQL.Clear;
mareq2.SQL.Add('SELECT Texte FROM Donnee_Texte WHERE ID_Donnee_Texte=' + inttostr(mondata.ADOQuery_duplication.FieldByName('ID_Donnee').value));
mareq2.Active:=true;
if not Mareq2.Eof then
textereq:='INSERT INTO Donnee_Texte (ID_Donnee_Texte , Texte) VALUES (' + inttostr(mareq.fieldbyname('ID').Value) + ',' + quotedstr(mareq2.FieldByName('Texte').AsString) + ');';
mareq2.close;
end;
10 : showmessage('un doc');
11 : showmessage('une personne');
12 : showmessage('lien');// execute_lien(TObjects_visuels2_Lien(lobject_visu)); //on soccupe des liens à part
end;
if Mondata.ADOQuery_duplication.FieldByName('ID_Type_Donnee_Heritiere').Value<>12 then
begin
mareq.Active:=false;
mareq.SQL.Delete(0);
mareq.SQL.Add(textereq);
// mareq.Connection.BeginTrans;
// try
mareq.ExecSQL;
// mareq.SQL.Delete(0);
// mareq.Connection.CommitTrans;
// except
// mareq.Connection.RollbackTrans;
// end;
end;
Mondata.ADOQuery_duplication.Next;
end;
Mondata.ADOQuery_duplication.Active:=false;
Mondata.ADOQuery_duplication.Close;
Mondata.ADOConnec.CommitTrans;
except
Mondata.ADOConnec.RollbackTrans;
end; |
Partager