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

Bases de données Delphi Discussion :

Modifier le contenu d'un DBEdit [query]


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut Modifier le contenu d'un DBEdit [query]
    bonjour,

    Comment éditer un DBedit dont le contenu pointe sur le résultat d'une requête?

    J'ai un DBGrid qui affiche les tuples et les attributs du résultat d'une requête.

    A côté de ça je fais pointer le contenu d'un DBedit, avec un "paramètre courant" à l'aide dune autre requête qui "balaie" ma navigation dans les tuples de mon DBGrid.

    Le problème est qu'apparemment, vu que le champ du DBEdit affiche le résultat d'une requête qui elle même est fonction d'une autre requête, je ne peux pas éditer le contenu du DBEdit.

    Est ce possible par ce moyen? ou bien quelle est la solution pour rendre ce DBEdit éditable en sachant qu'il faut que son affichage soit fonction de la navigation entre les tuples du DBGrid qui lui même est résultat d'une requête.

    J'ai tout mis en mode écriture et je pensais ne pas voir de problèmes comme cela.

    Tous les paramètres sont bons, il semble juste que la méthode ne soit pas la bonne

  2. #2
    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
    Je pense qu'il faut que tu autorise la mise à jour da la source de donnée ou le DBEdit est rattaché.

    A+

  3. #3
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    toutes les tables sont en : "read only : false"

    La requête source dont un attribut rempli le DBEdit est en "Request Live : True"


    Donc, le contenu du DBEdit est le résultat d'une requête (qui elle même dépend du pointeur sur un tuple du DBGrid passé en paramètre dans la requête)
    Je pense que c'est là que ça coince.


    Autre chose aussi, à l'exécution de l'application, le champ du DBEdit n'est pas modifiable, c'est à dire qu'il est impossible d'y saisir quoi que ce soit (read only = false)

    voila

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Si ta requete est multitable, tu ne pourras pas modifier l'enregistrement de quelques facon que ce soit.

    Pour passer a travers de ce problème, il faut que tu fasses un système qui mettra à jour via une requete update.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Ah d'accord, merci Malatar déjà de ta réponse.

    Sinon, puis je laisser les requêtes telles quelles (pour l'affichage) et mettre en ordre une requête UPDATE sur l'événement ONChange du DBEdit par exemple.
    Ou bien Est ce que le système de la sorte qu'il est actuellement m'empêchera toute saisie dans le DBEdit? car là je ne peux même pas changer les valeurs.

    Merci

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Passes par un edit simple, et sur la pression sur entrer (si y a eu modification de la valeur), tu lances une requete update.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  7. #7
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    désolé pour les questions mais bon je suis un débutant donc excusable ^^

    J'ai un objet query avec son datasource donc et je peux afficher donc le datafield du datasource de la query dans un DBEdit mais dans un Edit simple, je n'ai pas les propriétés d'un DBEdit puisque ce n'est pas orienté BDD.

    Comment Faire?

    Merci

    P.S : Je suis pas faignant je cherche de moi même aussi ^^ j'explore les aides sur les propriétés qui me sont offertes etc.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Simplement :

    Sur le onclick de ton dbgrid, tu fais afficher dans le edit la zone que tu souhaites.

    sur le onKeyDown du composant edit, sue la validation de la touche entrer, tu lances ta requete.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Une question toute bête :

    Comment affecter le contenu texte d'un DBEdit (qui résulte d'une requête) au champs Text d'un Edit simple :

    Edit1.text := DBEdit1.* (*) as*;

    Merci en tout cas je suis en bonne voix je pense ^^
    la requête Update sera quand à elle plus simple je suppose.

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    encore plus simple sans avoir besoin du dbedit ^^

    dans le onclick de ton dbgrid tu ecris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit1.text := LAREQUETE.FieldByName('LENOMDUCHAMP').ASString;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  11. #11
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Impecable Malatar cela fonctionne et allége mon programme car j'ai pu "virer" tous les DbEdit.

    Par contre j'ai créé un bouton sur lequel l'événement "OnClic" exécute une requête SQL qui met à jour une de mes Tables. La requête "UPDATE" est censée rajouter le contenu de l'EDIT dans la ligne correspondante de la base de donnée.

    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
     
     
    procedure Tfiche1.ButtonClick(Sender: TObject);
    begin
    query_maj.ParamByName('parametre1').AsString := Edit1.Text;
    query_maj.open;
    query_maj.ExecSQL;
    query_maj.close;
    end;
     
     
    La requête SQL :
     
    UPDATE table1
    SET table1.colone1 = :parametre1;
    Malgré tout, l'application se lance mais dès que je clic sur le bouton1, j'ai le message d'erreur suivant :

    "Le projet Project1.exe a provoqué une classe d'exception EDBEngineError avec le message 'Erreur interne système d'exploitation inconnue.
    Conflit de vérouillage.
    Fichier: H:\repertoirereseau1\sousrepertoire1\sousrepertoire2\PDOXUSRS.LCK'. Processus stoppé. Utilisez le pas-à-pas ou Exécuter pour continuer.

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    1er chose :
    Le open sur un composant Query, c'est que pour les requetes de type select
    et le ExecSQL pour le reste (update/insert/delete/etc ...)

    2em chose :

    vous etes plusieurs à travailler sur la même base de données ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  13. #13
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    Non, pas du tout, je suis seul à l'exploiter et donc à l'utiliser

  14. #14
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Bon, alors déjà vire le query_maj.open et reteste

    autres questions, tu utilises un Tdatabase ou tu connectes tout tes composants sur le même fichier ?
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  15. #15
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Par défaut
    le query_maj.open est viré (j'ai laissé le execSQL) même problème

    --> par contre bien vu, j'ai fait une erreur de débutant (je suis débutant donc c'est normal), j'ai oublié de déclaré le databasename de la requête (inatention ou débutant ?) ^^


    Merci à toi Malatar, Problème résolu (pour le moment, je sents que je vais en avoir d'autres ^^)

  16. #16
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Pense au tag Résolu (le bouton en bas à gauche)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

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

Discussions similaires

  1. [VBA-E] Modifier le contenu d'un range sans boucle
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/04/2006, 11h19
  2. [Upload] Modifier le contenu d'une liste box automatiquemen
    Par Phenomenium dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 21h42
  3. modifier le contenu de ma base
    Par dolphi dans le forum ASP
    Réponses: 2
    Dernier message: 22/08/2005, 17h17
  4. Réponses: 20
    Dernier message: 01/06/2005, 09h37
  5. modifier le contenu d'une table avec innerHTML
    Par francon81 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/05/2005, 09h02

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