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 :

[WDx] Q : Dans quel cas peut-on modifier des enregistrements liés à une requête ?


Sujet :

WinDev

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Question purement théorique. Je pense depuis le début que l'on ne peut pas modifier un enregistrement s'il est issu d'une requête. (je veux dire, faire un HModifie directement dessus).
    Mais ça fait deux ou trois fois que j'ai l'impression du contraire, en lisant les posts. Me confirmez-vous?
    Si oui, quelles conditions doit remplir la requête pour être modifiable?
    (requête interne à la fenêtre, ou un select lancé par HExecuteRequêteSQL, ou par HExecuteRequête...
    La requête fonctionne-t-elle quand elle est basée sur plusieurs tables, quand il y a un filtrage, une expression calculée...)
    En bref, quels sont les cas que vous avez testé et que vous savez fonctionner?

    Si vous pensez qu'aucun cas n'est possible, vous pouvez aussi le signaler...

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Rien n'empêche bien évidemment de modifier un enregistement récupéré par une requete.
    Quand à savoir comment, ça dépend du cas de figure : du code, de la méthode, du nombre d'enregistrements retournés, etc.

  3. #3
    Membre émérite

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Du point de vue théorique, car je ne connais pas l'implémentation de Windev à ce sujet (et fonction des pilotes d'accès aux données utilisés), un enregistrement retourné par une requête est modifiable si :

    - la requête n'a pas effectué de jointures entre tables
    - la requête n'a pas agrégé les résultats
    - la requête ne présente pas de colonnes calculées

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Citation Envoyé par Guardian Voir le message
    Rien n'empêche bien évidemment de modifier un enregistement récupéré par une requete.
    Quand à savoir comment, ça dépend du cas de figure : du code, de la méthode, du nombre d'enregistrements retournés, etc.
    Dans ce cas, un exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HExecuteRequeteSQL(sdTest, hRequêteDéfaut, "Select code, Lib from user")
    SI HLitRecherchePremier(sdTest, Code, "B") ALORS
      sdTest.Lib = "Bowen"
      HModifie(sdTest)
    FIN
    Ce code devrait fonctionner non?
    J'ai manqué quoi pour que ça ne marche pas?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Faudrait voir la requete.
    Tu as testé la requete seule ?
    Elle fonctione mais la modification de se fait pas ?
    Un peu pus d'informations svp

    Exemple :
    Code de la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Test_Fich
    SET	prenom = {ParamN}
     WHERE Test_Fich.prenom = {ParamP}
    Appel de la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HExécuteRequête("Requête_Rech+Modif",hRequêteDéfaut,"Param1","Param2")

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Non Guardian, ce n'est pas vraiment de ce type de requête que je parlais. J'ai compris mon erreur pour le code précédent, c'est le hRequêteDéfaut qu'il faut remplacer par un hModifieFichier (dans mon exemple, user était bien une table).
    Par contre, je n'ai pas encore réussi en mettant ce type de requête directement en source de données dans ma fenêtre.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 103
    Points
    1 103
    Par défaut
    Bon, ça fonctionne bien en fait...
    J'avais testé sans mettre tout ce qu'il fallait:
    Il faut une requête paramétrée, un paramètre passé à la requête dans l'initialisation de la fenêtre, et ensuite le FichierVersEcran.
    Et surtout ne pas oublier le hModifieFichier dans le HExécuteRequête!!!
    J'étais persuadé qu'il était impossible de modifier le contenu car j'avais toujours fait mes essais sans ce paramètre...

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    955
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 955
    Points : 1 589
    Points
    1 589
    Par défaut
    Bonsoir
    J'ai essaye aussi avec le parametre hModifieFichier, mais si je fais une requete sur 2 fichier j'ai cette erreur en Ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    La requête <REQ_Requête1> utilise plusieurs fichiers comme source de données.
    L'ajout ou la suppression d'enregistrements d'une requête ne peuvent être réalisés que sur des requêtes monofichier.
    Par contre en modification cela fonctionne.
    Une idee ?
    Merci

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

Discussions similaires

  1. [AC-2007] Modifier des enregistrements sur une base dorsale
    Par brg2009 dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/12/2011, 10h08
  2. [AC-2000] Impossible de modifier les enregistrements d'une requête
    Par mcfly37 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 29/05/2009, 15h22
  3. Impossible de modifier des enregistrements d'une requête
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/04/2007, 19h08
  4. Dans quel cas doit on compiler le noyau d'une distribution Linux ? et Comment?
    Par jlassiramzy dans le forum Administration système
    Réponses: 14
    Dernier message: 23/02/2007, 16h09
  5. [corba] débutant : dans quels cas l'utiliser
    Par jmturc dans le forum CORBA
    Réponses: 2
    Dernier message: 10/10/2002, 09h58

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