Bonjour,
Je bosse en ce moment sur une appli de transfert de BDD BDE vers Interbase et Oracle grace a DBexpress.
Le fait de travailler sur les 2 bases en meme temps m'a poussé a choisir DBexpress, mais autant, tout marche parfaitement sur Oracle, autant, j'ai des problemes d'applyupdates sur FB1.5.
Je suis pour information sur Delphi 6.
J'utilisais a l'origine un code tres similaire pour les 2 bases, chacun avec leur datamodule respectif. Mais voila, apres un applyupdate, pour la base FB, les informations ne sont pas toujours ecrites dans la base, pourtant, les types sont corrects, les formats aussi.
J'ai decidé de générer moi meme mes requetes sql finalement, ce qui fonctionne grace au exceSQL, mais pour ce qui est des blobs, je dois forcement passer par des tblobfields, et donc, un post et un applyupdate. Auriez vous une idée du probleme?
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
38
39 for cpt:=0 to TDMBDE.Query1.FieldCount-1 do begin Application.ProcessMessages; Blobe:=False; champs:=TDMBDE.Query1.Fields[cpt].FieldName; if ((TDMBDE.Query1.Fields[cpt].DataType<>ftBlob) OR (TDMBDE.Query1.Fields[cpt].IsNull)) then continue else begin blobe:=true; //traitement des blobs DMIB.SQLQuery.Close; DMIB.SQLQuery.SQL.Text := 'select '+champs+' from '+table; DMIB.CDIB.Open; DMIB.CDIB.Edit; Etat.Lines.Add('c un blob'); Etat.Lines.Add(TDMBDE.Query1.Fields[cpt].FieldName); try TBlobField(TDMBDE.Query1.Fields[cpt]).SaveToStream(Mem); TBlobField(DMIB.CDIB.FieldByName(champs)).LoadFromStream(Mem); TBlobField(TDMBDE.Query1.Fields[cpt]).SaveToStream(Mem); Etat.Lines.Add('taille du blob BDE :'+inttostr(Mem.Size)); DMIB.CDIB.Post; DMIB.SQLQuery.Close; nb_erreur:= DMIB.CDIB.ApplyUpdates(-1); TBlobField(DMIB.CDIB.FieldByName(champs)).SaveToStream(Mem); Etat.Lines.Add('taille du blob FB :'+inttostr(Mem.Size)); Etat.Lines.Add('nb erreur :'+inttostr(nb_erreur)); finally Mem.Clear; end; DMIB.CDIB.Close; end; end;
Partager