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 :

[IBX] BLOB et TIBDataSet


Sujet :

Bases de données Delphi

  1. #1
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut [IBX] BLOB et TIBDataSet
    'jour,

    J'utilise Delphi 2005 avec Interbase 6.

    Lorsque j'utilise le composant TIBDataSet pour charger un composant TMemo(un BLOB dans ma base Interbase) j'ai ce message d'erreur :

    "la valeur ne peut pas être null. Nom du paramètre : ptr."

    Dans ma base ce BLOB n'est pas NOT NULL et je n'ai pas de paramètre "ptr" dans la requête de mon TIBDataSet.

    Quelqu'un a-t-il déjà rencontré ce problème?

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Bonjour,

    Je n'ai pas encore rencontré ce problème.

    Le champ que tu essaies d'afficher contient effectivement des données ?
    Si tu donnes l'attribut NOT NULL à ce champ, cà résoud le problème ?
    Comment tu sais que c'est le blob qui pose problème ?

  3. #3
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    Citation Envoyé par King Kaiser
    Le champ que tu essaies d'afficher contient effectivement des données ?
    Lorsque le champs ne contient rien, j'ai ce message d'erreur mais lorsqu'il contient quelquechose(en l'occurence un String quelconque, Exemple : "Toto") ça fonctionne.
    Ce n'est qu'un mémo de commentaire, qu'il n'y ait rien ne devrait pas poser de problème...

    Citation Envoyé par King Kaiser
    Si tu donnes l'attribut NOT NULL à ce champ, cà résoud le problème ?
    Je n'ai pas essayé... mais ça irait à l'inverse de la logique. NOT NULL m'obligerai, au niveau de la base, à écrire du texte dans ce BLOB alors que justement je ne veux pas obliger l'utilisateur à entrer du texte dedans.

    Citation Envoyé par King Kaiser
    Comment tu sais que c'est le blob qui pose problème ?
    J'ai passé mon code au pas par pas et c'est sur la ligne où je charge le "Text" dedans que mon programme me renvoie ce message d'erreur.

    ce-dessous la ligne où j'ai ce message d'erreur
    m_Diplomes.Text :=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ibds_Salarie.FieldByName('Salarie_Diplome').AsString;
    Est ce que mon problème vient de ma base ou de mon programme je ne sais pas te dire...

    J'ai migré une application Win32 en .NET. La seule différence, à ma connaissance, entre les deux versions c'est que dans la version Win32, je passe par un TIBQuery alors que dans la version .NET je passe par un TIBDataSet.
    Si je retire cette ligne, tout fonctionne et ma fiche se charge normalement(comme dans la version Win32) mais si je laisse cette ligne, mon programme génère cette erreur.

    [Merci d'utiliser les balises CODE et QUOTE]
    King Kaiser

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Citation Envoyé par BVK
    Lorsque le champs ne contient rien, j'ai ce message d'erreur
    Je pense qu'il faut juste tester si le champ contient une valeur avant d'extraire son contenu.

    Si je ne me trompe, le tableau de Fields contient des variants donc en utilisant la fonction VarIsNull tu pouras tester le contenu de l'instance de TFields conrrespondant au Memo avant de recupérer le contenu.

  5. #5
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    Je pense qu'il faut juste tester si le champ contient une valeur avant d'extraire son contenu.
    Oui c'est ce que je me suis dis. C'était LA chose à faire. J'ai testé la valeur avec justement la fonction VarIsNull, mais le simple fait de tester ma valeur me renvoie ce même message d'erreur.(d'ou mon idée que l'erreur pourrait venir de la base elle-même)

    J'ai tenté la même chose avec un TIBQuery, même erreur. Je ne peux pas avoir de valeur NULL dans ce BLOB. J'ai jamais rencontré ce genre de problème.

    Je ne sais pas si ça peut aider mais lorsque je me connecte à ma base via IBConsole je ne peux rien insérer dans ce BLOB. Est ce que j'aurai mal configurer ma base? Je débute avec Interbase... c'est pour celà que je me demande si l'erreur ne viendrait pas de ma base plutôt que de Delphi.

  6. #6
    Membre Expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 052
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 052
    Par défaut
    Et tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ibds_Salarie.FieldByName('Salarie_Diplome').IsNull
    ?

    ou plutot utiliser directement le fields (si vous les avez défini en mode conception)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ibds_SalarieSalarie_Diplome.IsNull
    (je ne suis plus certain si sut les fields IB de type blob il y a cette propriété...

    Sinon le problème peut aussi venir des composants IBX de delphi2005 qui doivent être plus récent que ceux de delphi 7 et donc avec Interbase 6 ca pose peut etre probleme.

  7. #7
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    J'ai déjà plus ou moins testé tout ce que je pouvais dans le code delphi...

    Lorsque je tente de me connecter à ce BLOB pour charger un TMemo ou pour simplement tester sa valeur, il me renvoie l'erreur ci-dessus. Néanmoins si JE crée un nouveau BLOB dans une nouvelle table ou dans cette même table je peux me connecter sans problème à ce nouveau BLOB.

    D'ailleur une chose qui me dérange c'est que lorsque je visionne les enregistrements dans IBConsole des BLOB déjà créés par l'autre personne, dans la colonne il est écrit (MEMO) alors que dans les BLOB que JE crée il est écrit <null>.

Discussions similaires

  1. [FB1.5][Builder C++ 5][IBX 5.4]TIBDataSet et Filtre ?
    Par Sitting Bull dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 23/09/2004, 12h11
  2. faire un insert pour un champ blob
    Par tripper.dim dans le forum InterBase
    Réponses: 10
    Dernier message: 02/05/2003, 17h56
  3. BLOB et INSERT
    Par Thomad dans le forum Débuter
    Réponses: 3
    Dernier message: 25/04/2003, 16h32
  4. Réponses: 6
    Dernier message: 28/10/2002, 12h34
  5. [Kylix] ibx et kylix 2
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 16/08/2002, 11h29

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