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

WinDev Discussion :

Gestion Null dans requête SQL


Sujet :

WinDev

  1. #1
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Par défaut Gestion Null dans requête SQL
    Bonjour,

    Je rencontre un problème avec l'execution d'une de mes requête.
    En réalité il s'agit de multiples execution d'une même requête déclarée avec hPrepareRequêteSQL.
    Deux de mes paramètres peuvent prendre la valeur null.
    Mais des qu'ils ont pris une fois une valeur non nulle, ils ne sont plus jamais nuls!

    Plus clairement : Ma première execution est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO SADD_IMP_VAL_TMP  (POSTE,STATUT,VAL_MetBC,ID_AbsSup,VAL_AbsSup,ID_CARACT,VAL_CARACT) VALUES ('FRCS1316','H2AAHO1018JC',12300,'531',null,'560',7.8126)  ;
    J'obtiens:

    FRCS1316 H2AAHO1018JC 12300 531 <pas de valeur> 560 7.8126


    On voit que l'insertion du null à marcher, mais si ma derniere valeur (7.8126)vaut null dans la suivante, cela ne fonctionne pas. J'ai:

    FRCS1316 H2AAHO1018JC 12300 531 <pas de valeur> 560 7.8126
    FRCS1316 H2AAHO1018JC 12300 531 <pas de valeur> 560 7.8126


    C'est la dernière valeur non nulle qui s'ajoute!
    Si j'execute ses requêtes sous SQLView, je n'ai pas le problème. Cela vient donc de WinDev.
    Auriez vous une idée?

    Merci, N_Ron

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Bonjour,

    Comment sont passés vos paramètres ?

  3. #3
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Par défaut
    Bonjour vmolines,

    J'utilise la fonction HPrepareRequeteSQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Insertion est une Source de Données  // Source de donnée associée à la requete d'insertion
    Insertion.Poste=NetNomMachine()	// Paramétrage de la structure de requete
     
    HPrépareRequêteSQL(Insertion,SADD_IMP_VAL_TMP..Connexion,hRequêteSansCorrection,...
    	" INSERT INTO SADD_IMP_VAL_TMP (POSTE,STATUT, DATEHEURE,VAL_MetBC,ID_AbsSup,VAL_AbsSup,ID_CARACT,VAL_CARACT) 
     VALUES (:Poste,:Statut,:Dateh, :VAL_MetBC,:ID_AbsSup,:VAL_AbsSup,
    :ID_CAR,:VAL_CAR)")
    Puis je rentre les paramètres en lisant un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insertion.VAL_CAR=LigneTriee[COL_CAR+2]

  4. #4
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Par défaut
    Par contre si je met:

    Insertion.VAL_CAR=Val(null)

    j'ai 0.00 qui est ajouté.
    C'est toujours pas ce que je veux mais c'est déjà mieux.

    En tout cas la propriété "nullsupporté" de ma table de destination est à 1.

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 494
    Par défaut
    Bonjour,
    Est-ce que tu as essayé de construire ta requête avec ChaineConstruit(), puis de la lancer avec hExecuteRequeteSql() plutôt que d'utiliser des paramètres avec hPrepareRequeteSql() ?
    Le code sera peut-être un peu moins clair, mais si ça fonctionne...

    Tatayo.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Citation Envoyé par N_Ron Voir le message
    Par contre si je met:

    Insertion.VAL_CAR=Val(null)

    j'ai 0.00 qui est ajouté.
    C'est toujours pas ce que je veux mais c'est déjà mieux.

    En tout cas la propriété "nullsupporté" de ma table de destination est à 1.
    Au lieu d'affecter NULL à Insertion.VAL_CAR, essayez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insertion.VAL_CAR..Null = Vrai
    Sait-on jamais...

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Est-ce que tu as essayé de construire ta requête avec ChaineConstruit(), puis de la lancer avec hExecuteRequeteSql() plutôt que d'utiliser des paramètres avec hPrepareRequeteSql() ?
    Le code sera peut-être un peu moins clair, mais si ça fonctionne...

    Tatayo.
    Ca fonctionnera forcément mais hPrepareRequeteSql() permet d'effectuer une optimisation d'exécution des requêtes similaires côté serveur.

  8. #8
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insertion.VAL_CAR..Null = Vrai
    ne fonctionne pas car c'est une propriété interdite.

    Si j'attaque de la même facon la rubrique de destination:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SADD_IMP_VAL_TMP.VAL_CARACT..null=vrai
    Aucune erreur mais toujours le même problème.

    Je pense que c'est un problème interne à la fonction HPrépareRequeteSQL, mais je ne peux m'en passer car j'e fais des traitements sur un très grand nombre d'enregistrements. En tout cas même leur support technique semble avoir du mal à me répondre à ce sujet!

    Merci de votre aide

    N_Ron

  9. #9
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 494
    Par défaut
    Pour mon érudition personnelle, le gain de performance avec hPrepareRequeteSql est vraiment significatif ?

    Tatayo.

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Je n'ai aucun ordre d'idée mais ce que je peux dire c'est que ça économise au SGBD l'interprétation de la requête et la création de son plan d'exécution.

    Avec une préparation, il ne fait l'opération qu'une seule fois et les suivantes, il se contente d'exécuter la requête avec le même plan.

  11. #11
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Par défaut
    Bonjour,

    Pour mon érudition personnelle, le gain de performance avec hPrepareRequeteSql est vraiment significatif ?
    Personnellement je suis passé de 2min30/10000 enregistrements traités à 1min30, ce qui n'est pas rien.
    Surtout que je peux avoir 200 enregistrements à traités ou +150000, alors je ne pense pas pouvoir me passer d'un tel gain de temps (15min pour 150000!!).

  12. #12
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    C'est quand même ennuyeux de ne pas pouvoir faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insertion.VAL_CAR..Null = Vrai
    Au ST, ils ont dit quoi exactement ?

  13. #13
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 122
    Par défaut ST WinDev
    Le ST n'a rien dit, il ne m'a pas encore répondu.
    C'est le support gratuit alors...

    Je viens de recevoir une réponse de leur part à propos de l'utilisation d'une echelle d'ordonnée secondaire dans les graphes. Il m'envoie le nom d'une constante sur laquelle il n'y aucune explication et je galère toujours autant qu'avant!!!

    Avec les deux problèmes là je suis bloquée depuis deux jours.

    Enfin... les joies de l'informatique!!!!

Discussions similaires

  1. [MySQL] Introduire une variable dans requête SQL, insérer des données à la volée
    Par Ronan.f dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 29/04/2006, 23h10
  2. [VB6]Fonction dans requête SQL Access
    Par jean-pierre96 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/04/2006, 20h44
  3. TEdit.Text dans Requête SQL?!?
    Par zarbydigital dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/10/2005, 10h37
  4. [Visual Web] [SJSC] Concaténation dans requête SQL
    Par Original Prankster dans le forum NetBeans
    Réponses: 22
    Dernier message: 15/08/2005, 15h50
  5. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 12h15

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