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

Requêtes et SQL. Discussion :

UPDATE:Possibilité de mettre à jour ts les champs d'1 ligne ?(pas de clause SET)


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut UPDATE:Possibilité de mettre à jour ts les champs d'1 ligne ?(pas de clause SET)
    Bonjour,

    j'aimerai savoir si il est possible de mettre à jour tous les champs d'une ligne d'une table Access avec UPDATE...
    C'est à dire, écrire un truc du genre :
    "UPDATE [OUTILS].* = (select * from [MACHIN_TRUC]) where Ref_outil = "....";"

    Car dans cette table outil j'ai au moins 20 champs et j'ai pas envie de me taper ce genre de chose :

    "UPDATE [OUTILS] set [Forme]="...",[Format]="...",[Machine]="..", [..]="...",...., where ...;"

    Si c'est possible alors j'aimerai savoir quelle serait la syntaxe et je serais bien contente !!!

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    Salut, en passant par les RecordSet tu devrais pouvoir faire une boucle sur tes colonnes pour faire un Update à chaque fois.

    Regarde de ce côté là.
    Tu fais un Db.OpenRecordset(taRequête) et après tu peux manipuler tout ca pour faire tes update directs.

    Bon courage

  3. #3
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Ben ..... non

    Même si mon Update est dans une boucle, il faudra bien que j'écrive quels champs il faut "updater" ... et je veux qu'à chaque fois TOUS les champs soient "Updatés" ...
    je sais pas si quelqu'un comprend ce que je dis .... c compliqué à expliquer..

    Mon Update est déjà dans une boucle, donc il n'est écrit qu'une seule fois ... mais à l'intérieur du Update je veux me débrouiller pour éviter d'écrire mes 20 champs de destination, ça va me faire une ligne à rallonge !!!

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Un recordset travaille sur une table (ou une requête), donc si tu le mets à jour, toutes les lignes de ta table le seront également! Sans avoir à nommer tous tes champs!

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 94
    Points
    94
    Par défaut
    Je vois ce que tu veux faire, et je suis pas certain que c'est fesable...
    J'espere pour toi que les champs (dans la table a mettre a jour) et les champs ( dans la table qui contient les nouvelles valeurs) ont les meme noms...
    comme ca si tu veux vraiment mettre a jour tout les champs d'un enregistrement, tu peux d'abord supprimer:

    delete from table1 where...

    puis tu fais un insert

    insert into table1 (c1,c2...) select c1,c2... from table 2 where...

    pour le SQL tu n'as qu'a le recuperer dans l'assistant de requete... j'espere t'avoir été util

  6. #6
    Membre régulier

    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 119
    Points
    119
    Par défaut
    Pour reprendre l'idée de monsurf, si table1 et table2 ont exactement la même structure (même titres de champs...), tu n'as pas besoin de taper tous les champs :

    DELETE * FROM table1 WHERE ....
    INSERT INTO table1 SELECT * FROM table2 WHERE .....

  7. #7
    Membre régulier

    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Points : 119
    Points
    119
    Par défaut
    Au fait, tu n'es pas très claire sur d'où viennent les valeurs à ajouter.
    La syntaxe ci-dessus est bien si tu prends tes valeurs dans une autre table (mise à jour d'une base de données à partir d'une autre).
    Mais si tes valeurs ne viennent pas d'une table, tu peux les entrer directement avec VALUES:

    INSERT INTO table1 VALUES (25,'toto',33.33)

    Evidemment il faut que les valeurs soient dans le bon ordre.

  8. #8
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    En utilisant DAO, tu peux faire une boucle qui scrute tous les champs sans les nommer...

    Bon courage,

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  9. #9
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    j'ai une table "OUTILS" avec 21 champs
    Avec un bouton l'utilisateur importera un tableau excel sur les outils. Dans ce tableau il y aura des outils nouveaux mais surement des anciens outils (donc qui sont déjà dans ma table access) mais pour lesquels certains champs auront été modifiés (comme par ex le champ "Observations").
    Les données du tableau excel sont importees dans une table Access (avec les champs "F1" "F2" ....) et donc il me faut transférer ces données dans ma table "OUTILS", soit par un INSERT si la référence de l'outil n'existe pas déjà soit par un UPDATE de la ligne si l'outil existe.

    Je pourrai faire en fait un DELETE de la ligne de l'outil existant et enuite un INSERT mais je voulais me renseigner si cela pourrait être faisable autrement !

    Voilà pour l'info !

  10. #10
    Membre régulier Avatar de sendme
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    J'ai ouvert un sujet ICI
    qui rejoint celui ci, mais dans lequel je demande plus de précisions svp

    cf post d'Ericka
    Citation Envoyé par Ericka Voir le message
    Bonjour,

    Un recordset travaille sur une table (ou une requête), donc si tu le mets à jour, toutes les lignes de ta table le seront également! Sans avoir à nommer tous tes champs!
    Je sais que ce sujet est vieux...merci d'avance...

  11. #11
    Membre régulier Avatar de sendme
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 82
    Points
    82
    Par défaut
    réponse complète + lien d'exemple ICI

Discussions similaires

  1. Comment Mettre à jour via les ControleDB
    Par Korko Fain dans le forum Bases de données
    Réponses: 8
    Dernier message: 24/04/2007, 10h11
  2. Réponses: 8
    Dernier message: 10/10/2006, 10h58
  3. [Conception] Mettre a jour tout les champs d'un table lors d'un update
    Par metatron dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/09/2006, 15h29
  4. Réponses: 4
    Dernier message: 25/01/2006, 15h42
  5. Réponses: 4
    Dernier message: 25/11/2005, 18h23

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