Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2011, 10h28   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 22
Points : 12
Points : 12
Par défaut Invalid Blob ID lors d'une importation

Bonjour à tous ,
Je plante le décors : J'utilise FireBird 2.5 avec c++Buider XE sous Windows 7 Pro et voici mon souci:
Auparavant Je travaillais avec le BDE et utilisais un TbatchMove qui était assez pratique pour faire une Sauvegarde/Restauration de Table.
Le BDE n'étant plus du tout conseillé , je suis passé aux "TIBComponents" et là cela se complique pour faire mes export/restore . J'ai don utilisé un TIBOutputRawFile pour exporter ma table et un TIBInputRawFile pour l'imoprt avec un TIBSQL .
Mon problème est le suivant j'obtiens une erreur EIBInterbaseError avec Invalid Blob ID lors de la restauration !!!!!
Pour cerner le problème j'ai essayé de limiter mes enregistrements à exporter et importer et ai fait les tests suivants :
Export sur une plage d'enregistrements
27/04/2011 23:47:00 - 01/05/2011 00:00:00 Erreur invalid Blob ID
27/04/2011 23:48:00 - 01/05/2011 00:00:00 pas d'erreurs
27/04/2011 23:47:00 - 27/04/2011 23:49:00 pas d'erreurs
Donc comme l'attestent mes deux derniers tests mon souci ne vient pas d'un enregistrement invalide ou d'une taille incorrecte .
Je n'ai pas d'issue et ne trouve rien me permettant de rélaiser ma sauvegarde de table avec ces TIBComponents.
Pour information j'avais lu que l'erreur Invalid Blob ID pouvait être dûe à une version obsolète (<2.1) et effectivement je travaillais avec une 2.0 mais je suis passé à la 2.5 sans plus de résultat (apres avoir fait bine sûr un backup/restore de ma base)
Peut-être y a-t-il des paramètres à utiliser dans le TIBDataBase ou le TIBtransaction lors de la restauration mais je n'ai rien trouvé de probant depuis plusieurs jours et cette épine dans le pied me fait de plus en plus mal.....
Merci d'avance pour vos bons conseils ou astuces
Didier44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 11h00   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Bonjour,

Je dirais que votre problème c'est que vous utilisez des composants pour interbase avec une base de données firebird.

Je pense que ces composants fonctionnent avec firebird à condition de n'utiliser que les fonctionnalités d'interbase 6.X.

Et plus les versions seront différentes plus vous aurez à utiliser ces composants avec firebird.

Donc vous avez tout intérêt à troquer vos TIBx par des composants natifs firebird.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 12h36   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 22
Points : 12
Points : 12
Par défaut Compsants natifs Firebird? UIB,FIBplus ...

Merci Barbibulle pour ton conseil ,
peux tu m'en dire un peu plus sur l'étendue de l'offre ds le domaine?
J'ai vu qu'il y avait UIB,FIBplus et c'est à peu prêt totu non?
Avantage de l'un par rapport à l'autre
UIB Ne serait pas orientée "données" ??? qu'est ce que cela sous-entend ? je travaille avec des blobs . J'ai commencé à vouloir installer UIB mais apparemment ce n'est pas gagné sosu c++Builder ; il faut installer un package supplémentaire "synedit" qui n'a pas de packahe d'installation radStudio XE !!!!!

J'aimerais une fois pour toute faire le bon choix et ne plus arriver découvrir d'impasse à l'avenir.....

Apparemment tu ne conseilles pas les composants dbxpress et cela m'arrage puisque le driver Firebird n'est pas inclus dans ma version

Merci encore pour ta diponibilité et tes conseils
Didier44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 13h26   #4
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Bonjour,

Concernant les composants, tu peux commencer par jeter 1 oeil dans la page Télécharger. Au passage, elle a été relookée mais il manque plusieurs offres dont les IBObjects

Pour les UIB, c'est un bon choix, AMHA. Je les utilise sous Delphi, y compris D6 perso...

Il n'y a pas besoin de SYNEDIT: il suffit de commenter une ligne dans un fichier INC de la distrib (style HAVE_SYNEDIT): à verifier, sinon une recherche dans le présent forum de donnera la solution (enfin c'est surtout Cl@udius qui la fournit )
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 15h28   #5
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 22
Points : 12
Points : 12
Par défaut UIB Compoents

Merci QI130 ,
J'ai finalement réussi à installer la palette avec le lien que tu m'as fourni et cette fois les composants sont installés sauf qu'apparemment ce sont les composants pour RadStudio 2009 (Intitules des composants!!) Peut-etre n'est ce que l'intitulé qui n'est pas bon auquel cas ce ne serait pas très grave.

j'ai donc essayé de créer mon premier méga-projet avec un TUIBDatabase que j'ai posé sur ma fiche vierge et j'essais de compliler : et patatra erreur
TUIBSQLVar:: :: () ne peut pas être déclaré dans une union anonyme
apparemment cela concerne le UiBLib.hpp !!!! une piste? mais bon ce n'est pas encore la priorité de mes inquiétudes :

par ailleurs j'ai regardé les propriétés des composants et suis surpris par deux choses:
1°) Un TDataSource ne peut pas pointé sur un TUIBQuery ; il faudrait passer par un TUIBClientDataSet !!! serai-ce là l'explication de la remarque "composant non orienté Données"
2°) Sur un TUIBQuery il n'y a pas de propriété Param ; Habituellement je filtre mes enregistrements suivant plusieurs paramètres que je "passe avant d'éxécuter ma requête. idem pour le TUIBDataSet ; j'aimerais donc savoir s'il est possible de passer des paramètres avec ces compoisants
Didier44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 21h42   #6
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Le Query a 1 propriété Params utilisable ainsi:
Code :
1
2
3
JvUIBQuery1.SQL.Text:='SELECT * FROM PERIODE_CA WHERE EXERCICE=:exercice ORDER BY DT_DEBUT_CA';
     JvUIBQuery1.Params.ByNameAsInteger['exercice'] := StrToInt(ComboBox2.Text);
     JvUIBQuery1.Prepare;
Bien faire le Prepare avant l'open (lecture) ou le execute
En retour, utiliser Fields:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
       JvUIBQuery1.Open(True);
       while NOT JvUIBQuery1.Eof do
          WITH JvUIBQuery1 do begin
             GridCA.AddRow(1);
             i:=GridCA.LastAddedRow;
             GridCA.Cell[1,i].AsDateTime:=FIELDS.ByNameAsDateTime['DT_DEBUT_CA'];
             GridCA.Cell[2,i].AsDateTime:=FIELDS.ByNameAsDateTime['DT_FIN_CA'];
             GridCA.Cell[3,i].AsFloat:=FIELDS.ByNameAsDouble['NB_JOURS_CA'];
             Next;
          end;
       JvUIBQuery1.Close();
 
 
     except
 
     end;
Je ne pratique pas (plus) le C++, et j'espère que ce code Delphi/Pascal pourra t'aider.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 08h48   #7
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 22
Points : 12
Points : 12
Par défaut Utilisation UIB

Merci QI130,
je comprends ton code et un peu plus maintenant la philosophie (si on peut parler de philosophie dans ce domaine!!!) des composants UIB:

En simple il faut aller chercher les valeurs une à une pour remplir une Grille et pour les paramêtres , cette propriété n'est disponible qu'à l'éxécution . Comme j'utilisais pas mal de DBGrid/datSource dans lequel j'insérais mes champs automatiquement avec le formatage au design , je pense' comprendre que les UIB même s'ils sont très certainement performants sont assez loin de ce que j'avais l'habitude de faire ; en exemple j'utilisais une requête intermédiaire pour fournir des parametrres à une requête principale en fournissant un DatSource à la requete principale pointant sur ma requete intermédiaire . Là ce n'est plus possible...

Je pense donc que je vais me tourner vers les FIB qui sont je pense plus proche de ce que j'avais l'habitude de coder .

Merci encore
Didier44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h05.


 
 
 
 
Partenaires

Hébergement Web