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 :

message d'erreur incorrect values within sqlda structure


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Par défaut message d'erreur incorrect values within sqlda structure
    Bonjour
    j’essaie d'interroger des tables mais voila mon problème message d'erreur "incorrect values within sqlda structure"
    quand j’enlève les paramètres cela fonctionne très bien .Voici mon code
    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
     
    select NumBon ,c_produit  ,Date_bon ,D_Client,  QTE ,  TP from
     
    ( select L.NumBon ,D.c_produit  ,L.Date_bon ,C.D_Client, cast( qte*-1 as dec(15,2) )AS QTE , cast( qte*3 as dec(15,2)) AS TP
    from bon_livr L, D_livr d,Client C
    where (L.valide ='OUI')and(L.numbon=d.numbon)and((l.RESERVATION= 'NON')or(RESERVATION is Null))and(d.c_produit =:P1)
          and(C.C_client = L.Client)and(l.date_bon >=:D1)and(l.date_bon <=:D2)and(l.codemagasin =:m)
     union all
     select L.NumBon ,D.c_produit  ,L.Date_bon ,C.D_Client , cast( D.qte*-1 as dec(15,2) )AS QTE , cast( D.qte*3 as dec(15,2)) AS TP
    from bon_livr L, D_ENSL d,Client C
    where (L.valide ='OUI')and(L.numbon=d.NUMPIECE)and((l.RESERVATION= 'NON')or(RESERVATION is Null))and(d.c_produit =:P1)
          and(C.C_client = L.Client)and(l.date_bon >=:D1)and(l.date_bon <=:D2)and(l.codemagasin =:m)
     
    union ALL
    select L.NumBon ,D.c_produit  ,L.Date_bon ,C.D_Client ,  cast( D.qte*1 as dec(15,2) )AS QTE , cast( D.qte*2 as dec(15,2))AS TP
    from bon_ret L, d_ret d,Client C
    where (L.valide ='OUI')and(L.numbon=d.numbon)and(D.c_produit=:P1)
          and(C.C_client = L.Client)and(l.date_bon >=:D1)and(l.date_bon <=:D2)and(l.codemagasin =:m)
    )
     
    ORDER BY DATE_BON, qte DESCENDING
    J'espère que j'ai été claire
    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par mina24 Voir le message
    quand j’enlève les paramètres cela fonctionne très bien
    C'est à dire sans les host-variables telles que : P1, : D1 etc... ?
    Si c'est ça vérifiez le format de vos host-variable par rapport à vos colonnes
    Par exemple l.date_bon est-elle bien définie comme un format date ?

    Votre requête serait plus facile à lire en supprimant les parenthèses inutiles et en séparant les critères de filtrage de ceux de jointure, ex :

    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
    select NumBon,
           c_produit, 
           Date_bon, 
           D_Client,  
           QTE,
           TP 
    from (select L.NumBon, 
                 D.c_produit, 
                 L.Date_bon, 
                 C.D_Client, 
                 cast(qte*-1 as dec(15,2)) AS QTE, 
                 cast(qte*3  as dec(15,2)) AS TP
          from bon_livr L, 
          inner join D_livr d
             on d.numbon = L.numbon 
          inner join Client C
             on C.C_client = L.Client 
          where L.valide ='OUI' 
            and(l.RESERVATION= 'NON' or RESERVATION is Null) 
            and d.c_produit  =:P1
            and l.date_bon >=:D1
            and l.date_bon <=:D2
            and l.codemagasin =:m
     
          union all
     
          etc...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    C'est à dire sans les host-variables telles que : P1, : D1 etc... ?
    Si c'est ça vérifiez le format de vos host-variable par rapport à vos colonnes
    Par exemple l.date_bon est-elle bien définie comme un format date ?
    Oui j'ai bien vérifier d1 et d2 c'est datetime et p1 et m sont de type varchar dans les deux table bon_livr et bon_ret

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    cet article doit pouvoir vous aider à vérifier les différents formats
    http://postgresql.developpez.com/doc...scriptors.html

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    cet article doit pouvoir vous aider à vérifier les différents formats

    http://postgresql.developpez.com/doc...scriptors.html
    Merci escartefigue pour vos réponses je vais essayer de consulter l'arcticle. pour le moment j'ai essayer avec uniquement les deux paramètres P1 et P1 qui sont datetime et j'arrive à mettre querry.active à true.
    Sinon avec les paramètre M et P qui sont des string(les colonne associées sont des varchar(3)) Non je n'y arrive pas c'est toujours la même erreur qui s'affiche quand je veux mettre ma querry.active à true.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par mina24 Voir le message
    Merci escartefigue pour vos réponses je vais essayer de consulter l'arcticle. pour le moment j'ai essayer avec uniquement les deux paramètres P1 et P1 qui sont datetime et j'arrive à mettre querry.active à true.
    Sinon avec les paramètre M et P qui sont des string(les colonne associées sont des varchar(3)) Non je n'y arrive pas c'est toujours la même erreur qui s'affiche quand je veux mettre ma querry.active à true.
    Intéressant, l'étau se ressert donc
    Je me souviens d'avoir lu un article sur une version DLL qui pouvait créer un souci similaire, mais bien évidemment je ne l'ai pas conservé

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 596
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    j'ai du mal à comprendre
    a) les paramètres dans le SQL présentés comme cela, cela me fait penser à un langage tel que Delphi

    b) je rejoint escartefigue, le SQL serait beaucoup plus clair (et plus facilement vérifiable) s'il était écrit avec une CTE et des jointures "normalisées" en plus il y a des ambiguités au niveau des champs qte par exemple vient de quel table ?

    en plus j'aime - la hiérarchie des tables et j'ai l'impression que la table principale d_livr (pour détail livraison ?)
    - utiliser COALESCE plutôt que IS NULL OR =
    - utiliser BETWEEN quand c'est possible (ici pour une tranche de dates)


    donc quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH U AS (  select L.NumBon ,D.c_produit  ,L.Date_bon ,C.D_Client, cast( d.qte*-1 as dec(15,2) )AS QTE , cast( d.qte*3 as dec(15,2)) AS TP
                        from d_livr d JOIN ON d.numbon=l.numbon 
                                           JOIN  Client C on L.CLIENT=C.c_client 
                         where L.valide ='OUI' and  COALESCE(l.RESERVATION,'NON')='NON' and  d.c_produit =:P1
                        and C.C_client = L.Client and l.date_bon BETWEEN :D1 and D2 and l.codemagasin =:m )
                        union all  
                      ....
                     )
     
    SELECT NumBon ,c_produit  ,Date_bon ,D_Client,  QTE ,  TP from U 
    ORDER BY DATE_BON, qte DESCENDING
    reste bien sûr à définir le type de jointure pour cadrer vraiment le truc sachant que c'est INNER par défaut

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 138
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    j'ai du mal à comprendre
    a) les paramètres dans le SQL présentés comme cela, cela me fait penser à un langage tel que Delphi

    b) je rejoint escartefigue, le SQL serait beaucoup plus clair (et plus facilement vérifiable) s'il était écrit avec une CTE et des jointures "normalisées" en plus il y a des ambiguités au niveau des champs qte par exemple vient de quel table ?

    en plus j'aime - la hiérarchie des tables et j'ai l'impression que la table principale d_livr (pour détail livraison ?)
    - utiliser COALESCE plutôt que IS NULL OR =
    - utiliser BETWEEN quand c'est possible (ici pour une tranche de dates)

    Oui Mr Sergio je programme sous Delphi 7,j'ai pris en considération vos remarques en ce qui concerne l'ecriture de ma requête les jointures etc seulement là n'est pas le problème, Comme je l'ai expliqué plus haut j'ai toujours ce message d'erreur quand j'essaie de mettre ma querry active à true sachant qu'en double click sur la requete j'ai pu remmener les champs le plus normalement que possible donc la requete est correct.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Message d'erreur 'opération de pointeur incorrecte'
    Par Clotilde dans le forum Langage
    Réponses: 3
    Dernier message: 05/06/2008, 09h40
  2. Réponses: 1
    Dernier message: 30/09/2007, 13h26
  3. Réponses: 3
    Dernier message: 30/03/2007, 14h48
  4. authentification incorrecte et message d'erreur intempestif
    Par PuppeT mAsTer dans le forum Langage
    Réponses: 11
    Dernier message: 17/07/2006, 17h23
  5. ''incorrect values in slqda structures"
    Par dienedz dans le forum Débuter
    Réponses: 2
    Dernier message: 28/09/2004, 11h25

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