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 :

Requête sql modifiée avant insertion


Sujet :

WinDev

  1. #1
    Membre habitué Avatar de GalliezB
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juillet 2013
    Messages : 89
    Points : 162
    Points
    162
    Par défaut Requête sql modifiée avant insertion
    Bonjour,

    J'ai un vieux soft à maintenir au boulot développé en Windev. Ce logiciel est connecté à une BDD Postgresql.
    J'ai modifié la BDD pour y ajouter une table de ce style :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ID Int serial
    FK_ID int non nullable
    FK_ID int non nullable
    date nullable
    Timespan nullable
    Bool nullable
    varchar 255 nullable


    J'ai ajouté la table dans l'analyse en synchronisant l'analyse avec la BDD. J'ai vérifié que les nullable soit bien coché dans windev mais les résultats restent étranges...
    Passer par des requête Windev n'est pas possible. Les null efface le paramètre de la requête.
    J'effectue dans le code une HéxécuteRequêteSQL("ma_requete", ConnexionPostGreSql, HRequeteSansCorrection, ma_requete )

    Hors lorsque ma_requete vaut =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO Ma_Table(FK_ID,FK_ID,date,timespan,bool,varchar) VALUES (123,456,"2020-04-04","2020-04-04 10:45:10",null,"test_varchar"),(123,456,"2020-04-04",null,null,null)(123,456,null,"2020-04-04 10:45:10",null,null)
    Première insert :
    Le booléen en BDD contient 0 et pas null

    Deuxième insert :
    Le varchar contient 0

    Troisième insert :
    la varchar contient 0
    Le bool est bon ?!?



    toutes ses requêtes testé dans Postgresql au travers de DBvizualizer s'insert sans aucune erreur.

    Qu'est ce que j'ai raté dans windev pour qu'il se mette à changer les valeurs tout seul dans un string à envoyer à la BDD "sans modification" ?

    Merci pour votre aide

  2. #2
    Membre habitué Avatar de GalliezB
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juillet 2013
    Messages : 89
    Points : 162
    Points
    162
    Par défaut
    Une idée comme ça, sans pouvoir tester actuellement

    Quelqu'un sait si l'analyse doit avoir le même ordre que dans la requpete d'insertion : "[...] ma_table(col1,col2,etc...) [...] ?
    ça expliquerai pourquoi certaines valeurs ne correspondent pas

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    3 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : décembre 2013
    Messages : 3 543
    Points : 8 162
    Points
    8 162
    Par défaut
    Tu procèdes comment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sreq est une chaine
    sreq= [
    INSERT INTO Ma_Table(FK_ID,FK_ID,date,timespan,bool,varchar) VALUES (123,456,"2020-04-04","2020-04-04 10:45:10",null,"test_varchar"),(123,456,"2020-04-04",null,null,null)(123,456,null,"2020-04-04 10:45:10",null,null)
    ]
    HéxécuteRequêteSQL("ma_requete", ConnexionPostGreSql, HRequeteSansCorrection, sreq)
    Ou bien tu crées la requete dans l'éditeur de requête... et tu la lance comme tu as dit.

    A mon avis, dans le scénario 1, ça devrait marcher.
    Sinon, essaie de décomposer en 3 insert successifs. Le fait d'avoir 3 insert en 1 n'est pas classique.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre habitué Avatar de GalliezB
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juillet 2013
    Messages : 89
    Points : 162
    Points
    162
    Par défaut
    Je ne peux pas utiliser l'éditeur de requête car les null annule les paramètres.
    Mon scripts construit la requête sous forme de string et j'applique l'insertion à la fin du script. ( via HRequeteSansCorrection )


    L'insertion multiple n'est pas un soucis en soit. J'ai testé avec une seule insertion, et le résultat est le même

Discussions similaires

  1. Récupérer grâce à une requête SQL que les champs modifiés
    Par guigui11 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/08/2006, 09h58
  2. [SQL] Pb d'insertion donnée dans table, pb requête SQL
    Par PuppeT mAsTer dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/07/2006, 11h26
  3. Réponses: 13
    Dernier message: 03/01/2006, 10h56
  4. [Crystal Report 10]Modifier la requête SQL
    Par gwen-al dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 09/11/2004, 10h21
  5. [Crystal Reports 9] Modifier la requête SQL d'un état
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 21/10/2003, 10h47

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