IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Probleme Applyupdates


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut Probleme Applyupdates
    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;

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    UP

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo