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

SQL Firebird Discussion :

Problème d'Invalid Blob Id lors d'une insertion


Sujet :

SQL Firebird

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut Problème d'Invalid Blob Id lors d'une insertion
    Salut à tous.
    Voici la structure de ma table :
    La liste des domaines
    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
     
    /****                               Domains                                ****/
    CREATE DOMAIN BOOLEAN       AS SMALLINT DEFAULT 0 NOT NULL CHECK (VALUE IN(0,1));
    CREATE DOMAIN CHAR002       AS VARCHAR(2);
    CREATE DOMAIN CHAR008       AS VARCHAR(8);
    CREATE DOMAIN CHAR010       AS VARCHAR(10);
    CREATE DOMAIN CHAR015       AS VARCHAR(15);
    CREATE DOMAIN CHAR020       AS VARCHAR(20);
    CREATE DOMAIN CHAR025       AS VARCHAR(25);
    CREATE DOMAIN CHAR035       AS VARCHAR(35);
    CREATE DOMAIN CHAR050       AS VARCHAR(50);
    CREATE DOMAIN CHAR080       AS VARCHAR(80);
    CREATE DOMAIN CURRENCY82    AS NUMERIC(8,2) DEFAULT 0 NOT NULL;
    CREATE DOMAIN DECIMAL42     AS NUMERIC(4,2) DEFAULT 0 NOT NULL;
    CREATE DOMAIN KEYNORM       AS INTEGER NOT NULL;
    CREATE DOMAIN KEYSHORT      AS SMALLINT NOT NULL;
    CREATE DOMAIN MEMO          AS BLOB SUB_TYPE 1 SEGMENT SIZE 80;
    ensuite la table elle même
    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
     
    CREATE TABLE TAPPEL (
        APL_NO           KEYNORM NOT NULL,
        APL_DATE         DATE DEFAULT 'TODAY' NOT NULL,
        APL_TIME         TIME DEFAULT 'NOW' NOT NULL,
        APL_CORSPD       CHAR020 NOT NULL,
        APL_TYPE         CHAR008 NOT NULL,
        APL_STATUS       CHAR002 NOT NULL,
        APL_SAISIPAR     KEYSHORT NOT NULL,
        APL_NUMERO       CHAR008 NOT NULL,
        APL_MACHINE      CHAR025 NOT NULL,
        APL_MARQUE       KEYSHORT NOT NULL,
        APL_NUMSERIE     CHAR015 NOT NULL,
        APL_ETATMACHINE  MEMO,
        APL_CLIENT       KEYNORM NOT NULL,
        APL_CMT          MEMO,
        APL_VENDUMC3     BOOLEAN NOT NULL,
        APL_FACTNUM      CHAR010,
        APL_FACTDATE     DATE,
        APL_PBCODE       KEYSHORT NOT NULL,
        APL_PBDETAIL     MEMO
    );
    et finalement la procedure stocké incriminé :
    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
    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
     
    CREATE PROCEDURE TAPPEL_INSERT (
        PAPL_POUR           VARCHAR(10),
        PAPL_DATE           DATE,
        PAPL_TIME           TIME,
        PAPL_CORSPD         VARCHAR(20),
        PAPL_TYPE           VARCHAR(8),
        PAPL_SAISIPAR       SMALLINT,
        PAPL_MACHINE        VARCHAR(25),
        PAPL_NUMSERIE       VARCHAR(15),
        PAPL_MARQUE         SMALLINT,
        PAPL_ETATMACHINE    BLOB SUB_TYPE 1 SEGMENT SIZE 80,
        PAPL_CLIENT         INTEGER,
        PAPL_CMT            BLOB SUB_TYPE 1 SEGMENT SIZE 80,
        PAPL_VENDUMC3       SMALLINT,
        PAPL_FACTNUM        VARCHAR(10),
        PAPL_FACTDATE       DATE,
        PAPL_PBCODE         SMALLINT,
        PAPL_PBDETAIL       BLOB SUB_TYPE 1 SEGMENT SIZE 80)
    RETURNS (
        APL_NO INTEGER,
        APL_NUMERO VARCHAR(10))
    AS
    DECLARE VARIABLE VUSR_INITIAL CHAR(2);
    BEGIN
      APL_NO = GEN_ID(GEN_TAPPEL_NO,1);
      SELECT USR_INITIAL FROM TUSERS WHERE (UPPER(USR_PSEUDO) = UPPER(:PAPL_POUR)) INTO :VUSR_INITIAL;
      APL_NUMERO =  VUSR_INITIAL||INTTOSTR(APL_NO,'%06u');
      INSERT INTO TAPPEL (
        APL_NO,
        APL_DATE,
        APL_TIME,
        APL_CORSPD,
        APL_TYPE,
        APL_STATUS,
        APL_SAISIPAR,
        APL_NUMERO,
        APL_MACHINE,
        APL_NUMSERIE,
        APL_MARQUE,
        APL_ETATMACHINE,
        APL_CLIENT,
        APL_CMT,
        APL_VENDUMC3,
        APL_FACTNUM,
        APL_FACTDATE,
        APL_PBCODE,
        APL_PBDETAIL)
      VALUES (
        :APL_NO,
        :PAPL_DATE,
        :PAPL_TIME,
        :PAPL_CORSPD,
        :PAPL_TYPE,
        'N',
        :PAPL_SAISIPAR,
        UPPER(:APL_NUMERO),
        UPPER(:PAPL_MACHINE),
        UPPER(:PAPL_NUMSERIE),
        :PAPL_MARQUE,
        :PAPL_ETATMACHINE,
        :PAPL_CLIENT,
        :PAPL_CMT,
        :PAPL_VENDUMC3,
        :PAPL_FACTNUM,
        :PAPL_FACTDATE,
        :PAPL_PBCODE,
        :PAPL_PBDETAIL);
    END
    Lorsque j'execute cette procedure stocké sous IbExpert ou Delphi, j'ai le message d'erreur :
    Invalid BLOB Id
    Je n'arrive pas à trouver l'erreur.

    Merci pour vos patiences

    Andry

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Par défaut
    je n'est pas la réponse au problème, mais je sais que cet exemple ne peut pas fonctionner car le champ blob et accessible via un "objet" qui publie des méthodes de lecture et d'écriture dans les blobs.

    or ici, l'accès et fait comme pour un champ ordinaire.

    mais il faut savoir qu'un champ blob et une "simple" référence à un "objet" contenu dans la base de données et qu'il est donc hors de question de le lire ou pire d'y écrire de la sorte.

    malheureusement, je n'est pas d'exemple sous la main à proposer.

  3. #3
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Mais je fais toujours ainsi pour le champs blob est ça a toujours marché.
    En plus, c'est qui est bizarre c'est que des fois quand j'execute cette PS sous IBExpert, l'insertion se passe très bien et des fois, j'ai le message.
    Et en plus, cette PS est l'adaptation d'une autre qui fonctionne très bien sous IBexpert ou sous Delphi.

    Cdt

Discussions similaires

  1. Problème de marge lors d'une insertion d'une image
    Par anassss dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 22/07/2011, 11h58
  2. Invalid Blob ID lors d'une importation
    Par Didier44 dans le forum Firebird
    Réponses: 6
    Dernier message: 19/07/2011, 08h48
  3. Problème lors d'une insertion avec QSqlRelationalTableModel
    Par Action Fighter dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/04/2011, 10h45
  4. Problème lors d'une insertion de page
    Par tomividad dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/03/2009, 16h43
  5. Réponses: 3
    Dernier message: 27/03/2008, 11h49

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