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 :

Formulation d'un Update.


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut Formulation d'un Update.
    Bonjour a tous,

    J'ai un petit probleme...
    J'ai une DBGrid connecter a une base de donnees Access, et j'aimerais que l'utilisateur futur puisse remplir une "cellule" en cliquant simplement sur un bouton.

    J'ai donc creer 2 boutons, AfficherV et AfficherF, avec ce code:

    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
    16
    17
    18
    19
    20
    21
     
    procedure TForm1.AfficheVClick(Sender: TObject);
     
    begin
    ADOquery1.SQL.Clear;
    ADOquery1.SQL.Add('UPDATE prospects') ;
    ADOquery1.SQL.Add('SET Bon_numero = "V"');
    ADOquery1.SQL.Add('WHERE ='+QuotedStr(DBEdit5.text));
    ADOquery1.ExecSQL;
    DBGrid1.Refresh;
    end;
     
    procedure TForm1.AfficherFClick(Sender: TObject);
     
    begin
    ADOquery1.SQL.Clear;
    ADOquery1.SQL.Add('UPDATE prospects') ;
    ADOquery1.SQL.Add('SET Bon_numero = "F"');
    ADOquery1.ExecSQL;
    DBGrid1.Refresh;
    end;
    J'ai creer un DBEdit qui se rempli automatiquement du numero de telephone lorsque l'utilisateur clique sur une ligne. J'essayais donc d'utiliser ce DBEdit comme "variable" pour que la requete update la bonne ligne.



    La seconde procedure met un F dans la bonne colonne (ici, bon_numero) et cela pour toutes les lignes (normal ^^). J'ai donc tester par la suite sur la premiere requete pour que seule la ligne selectionner par l'utilisateur soit updater.

    Mais.... cela ne fonctionne pas, je me retrouve avec l'erreur "Erreur de syntaxe (operateur absent) dans l'expression '=""...
    J'ai pas mal fafouiller sur les fora et autres google mais je tombe toujours sur des explications de cas tres complexes (au moins j'aurais des sources pour mes programmes futurs...) et rarement pour des cas simples comme celui ci... ca doit etre tout bete, mais je ne trouve pas


    2eme probleme, le DBGrid.refresh; ne fonctionne pas.... je dois relancer le programme pour que les "V" ou "F" s'affichent.

    Quelqu'un pourrait m'aider ?
    Merci d'avance

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.AfficheVClick(Sender: TObject);
    
    begin
    ADOquery1.SQL.Clear;
    ADOquery1.SQL.Add('UPDATE prospects') ;
    ADOquery1.SQL.Add('SET Bon_numero = "V"');
    ADOquery1.SQL.Add('WHERE [ET C'est quel champs que tu veux renseigner ?] ='+QuotedStr(DBEdit5.text));
    ADOquery1.ExecSQL;
    DBGrid1.Refresh;
    end;
    Tu as oublié le champ critère une requete Update ca s'ecrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Update [Table]
    Set [Champ1 à Modif] = [Valeur1],
         [Champ2 à Modif] = [Valeur2]
    Where [Champ1 critère] = [Valeur Critere 1]
    ----------------------------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.AfficherFClick(Sender: TObject);
     
    begin
    ADOquery1.SQL.Clear;
    ADOquery1.SQL.Add('UPDATE prospects') ;
    ADOquery1.SQL.Add('SET Bon_numero = "F"');
    ADOquery1.ExecSQL;
    DBGrid1.Refresh;
    end;
    Attention avec celle la, tu vas modifier toute ta table si tu la lances, en clair tous les enregistements de cette table vont avoir Bon_numéro égal à F

    Pour le 2em problème c'est pas le DbGrid que tu dois rafraichir mais la source de données. Un DbGrid ne contient aucune données
    Modérateur Delphi

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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    Quand je disais que c'etait tout simple....


    Je te remercie grandement ! C'etait tout bete et j'etais malgre tout incapable de le voir...




    Pour le rafraichissement, il n'y a apparament pas de ADOQuery.refresh possible, il me retourne "ADOquery1 : Impossible d'effectuer cette opération dans un ensemble de données fermé". Que puis je faire ?

  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
    Citation Envoyé par Chimere
    Quand je disais que c'etait tout simple....


    Je te remercie grandement ! C'etait tout bete et j'etais malgre tout incapable de le voir...




    Pour le rafraichissement, il n'y a apparament pas de ADOQuery.refresh possible, il me retourne "ADOquery1 : Impossible d'effectuer cette opération dans un ensemble de données fermé". Que puis je faire ?
    Avec AdoQuery, utilises Requery;

    Mais ta source de données de ton DbGrid n'est pas le Adoquery que tu appels ?
    Il est relié a un D&ataSource et ce datasource a un composant TAdoTable ou TAdoQuery c'est lui que tu dois rafraichir.
    Modérateur Delphi

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    En effet


    Ma DBGrid est liée a une Datasource qui elle meme est reliée a une ADOTable. Donc ADOTable1.refresh; mais, la encore, une erreur "information sur la colonne cle inssuffisantes pour la mise a jour ou le rafraichissement"...


    Sinon, a quoi sert requery ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Par défaut
    Finalement j'ai juste fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ADOTable1.Close;
    ADOTable1.Open;
    J'avais exclu cette possibilite parce que cela ne passait pas avec ADOQuery... mais bon ^^ ca fonctionne !



    Je te remercie Malatar, puisse tes conseils etre toujours aussi transparents

  7. #7
    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
    Citation Envoyé par Chimere
    Sinon, a quoi sert requery ?
    tu auras ta réponse
    Modérateur Delphi

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

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

Discussions similaires

  1. [XL-2010] Code macro pour updater formule basée sur le nom de nouvelle feuille
    Par legethi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2014, 20h58
  2. Comment formuler un UPDATE avec SQLite3
    Par jean christophe dans le forum SQLite
    Réponses: 3
    Dernier message: 11/05/2012, 23h22
  3. Formule SQL update
    Par arrachelesac dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2007, 19h39
  4. [SQL] Formulation d'une requête UPDATE
    Par yopuke dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/05/2006, 12h29
  5. Formulation d'un UPDATE (pour éviter un curseur)
    Par GoLDoZ dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2005, 16h35

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