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 :

comment modifier les données d'une table à travers un dbgrid


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Points : 61
    Points
    61
    Par défaut comment modifier les données d'une table à travers un dbgrid
    Bonjour

    j'ai une liaison dbgrid + datasource + table et j'aimerai que les modifications effectuées sur ma ligne de dbgrid prennent effets !

    à chaque démarrage de l'application, rien n'a été modifié.

    pourtant la propriété de ma table à readonly est bien à false.

  2. #2
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    bonjour,

    il n'y a pas une méthode 'Apply' sur ton dataset ? (c'est le cas dans DBExpres notament, mais je ne sais pas qu'elle BDD tu utilise, ...)

    @++
    dany

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Points : 61
    Points
    61
    Par défaut ok
    en fait j'ai oublié effectivement de préciser : c'est en bde paradox

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Si c'est bien un TTable que tu utilises (et pas un TQuery) Il n'y a aucune raison que ça ne marche pas !! Est-ce que tu valides bien tes modif avant de quitter (avec le bouton valider d'un navigateur par ex., mais changer d'enregistrement suffit) ?
    Roland

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Points : 61
    Points
    61
    Par défaut ok
    Mais malheureusement , il s'agit d'un composant query !

  6. #6
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Dans ce cas, essaie de mettre la propriété RequestLive de ton TQuery à True. Je dis bien "essaie", parce que ta requête doit respecter certaines conditions pour que ça marche :

    Citation Envoyé par LocalSql.hlp
    Requêtes mono-table

    Les requêtes qui extraient des données à partir d'une seule table sont modifiables si :

    Il n'y a pas de mot-clé DISTINCT dans l'instruction SELECT.
    Tout dans la clause SELECT est une référence de colonne simple ou une colonne calculée, aucune agrégation n'est permise. Les colonnes calculées restent en lecture seule.
    La référence de table dans la clause FROM est une table de base modifiable.
    Il n'y a pas de clause GROUP BY ou HAVING.
    Il n'y a pas de sous-requêtes dans l'instruction.
    Il n'y a pas de clause ORDER BY.

    L'effet lecture seule d'une clause ORDER BY est nié et la requête est modifiable si la clause ORDER BY utilise une colonne unique et s'il existe un index primaire ou secondaire dBASE mono-colonne basé sur ce même champ. Les index dBASE composés (expressions) ne nient pas l'effet lecture seule d'une clause ORDER BY. Un index primaire Paradox mono- ou multi-champs rendra la requête modifiable si la clause ORDER BY utilise exactement les mêmes colonnes (dans le même ordre) que l'index. Les index secondaires Paradox ne nieront pas l'effet d'une clause ORDER BY.

    Requêtes multitables

    Toutes les requêtes qui joignent plusieurs tables généreront un ensemble résultant en lecture seule.
    Roland

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Points : 61
    Points
    61
    Par défaut ok
    je met cela à true et directement, cela plante en me disant que la table est en lecture seule !

  8. #8
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Une possibilité d'erreur : est-ce que ta Table n'est pas ouverte par ailleurs et en mode exclusf (MaTable.Exclusive := True

    Sinon, peux-tu nous dire quel est exactement ta SQL, qu'on vérifie ensemble ?
    Roland

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Points : 61
    Points
    61
    Par défaut ok
    C'est sympa de me consacrer du temps !

    ma database est à exclusive : false

    Concernant le code sql le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    query2.Close;
    query2.SQL.Clear;
    query2.SQL.Add('SELECT  MVTS.MVTDATECH as ECHEANCE,  MVTS.MVTMDEV as MONTANT, MVTS.MVTLIB as LIBELLE, MVTRAPPEL as RAPPEL ');
    query2.SQL.Add('FROM CLIENTS INNER JOIN MVTS ON CLIENTS.CLICODE = MVTS.MVTCOMPTE  ');
    query2.SQL.Add('WHERE  (((MVTS.MVTCLETTR)<>-1)) and CLIENTS.CLINOM1 like ''' + uppercase(edit3.Text) +'%'' ;  ');
    query2.Open;
    e
    à mon avis, sur base de ta recherche précédente, c'est dû à cela !

  10. #10
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Dans le cas d'un TQuery, tu as besoin aussi d'un TUpdateSQL qui contient les requetes de maj (il peut les générer automatiquement d'ailleurs). N'oubli pas ensuite de le mentionner dans la propriété UpdateObject de ton TQuery, ensuite ça devrait fonctionner.

    @++
    Dany

  11. #11
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Ta requête porte sur deux tables : CLIENTS et MVTS donc :
    Citation Envoyé par LocalSql.hlp
    Requêtes multitables
    Toutes les requêtes qui joignent plusieurs tables généreront un ensemble résultant en lecture seule.
    Pour répondre à Skywauters : je ne sais pas si dans le cas présent, TUpdateSQL permettra de tourner le pb de lecture seule, mais dans le cas général, avec le BDE et les tables Paradox, il n'y a pas besoin de TUpdateSQL.
    Roland

  12. #12
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Citation Envoyé par rsc
    Pour répondre à Skywauters : je ne sais pas si dans le cas présent, TUpdateSQL permettra de tourner le pb de lecture seule, mais dans le cas général, avec le BDE et les tables Paradox, il n'y a pas besoin de TUpdateSQL.
    Quelle que soit la base de données, il faut un TUpdateSQL dès que la requête du TQuery ne peut être mise en "modifiable" (requestLive à true). C'est le cas s'il y a plusieurs tables dans la requête.

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  13. #13
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Merci de la précision !
    Roland

Discussions similaires

  1. Comment récuperer les données d'une table?
    Par bylka dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 29/07/2007, 18h56
  2. Réponses: 3
    Dernier message: 26/02/2007, 10h14
  3. Réponses: 2
    Dernier message: 13/12/2006, 17h09
  4. Comment modifier les données d'une base
    Par anassyto dans le forum Access
    Réponses: 8
    Dernier message: 27/07/2006, 13h26
  5. MySQL Administrator : modifier les données d'une table
    Par Robinounou dans le forum Outils
    Réponses: 4
    Dernier message: 13/07/2005, 17h21

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