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 :

Modifier les valeurs de certains champs d'une table


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Points : 68
    Points
    68
    Par défaut Modifier les valeurs de certains champs d'une table
    Bonjour,


    J'ai une table (DRT) avec plusieurs champs dont les valeurs binaires (elles devraient l'être en tout cas) sont codés en N/O (Champ1)ou 1/0 (champ2) ou encore i/r (champ3). je voudrais les transformer en une seule opération en vrai / faux pour pouvoir utiliser ensuite dans un formulaire des cases à cocher....

    Je ne sais comment faire pour que toutes les transformations ne fassent en une seule opération.

    Merci de vos idées lumineuses.

    Xorbane.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    J'ai peur de ne pas comprendre, c'est la structure de tes champs que tu veux changer en Oui/Non où la valeur dans ceux-ci.

    Starec

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Points : 68
    Points
    68
    Par défaut
    Salut,

    En fait, je vais reprendre ces champs avec d'autres issus d'une autre table d'une autre base dans une nouvelle table (que je crée). Dans cette nouvelle table, je souhaiterais qu'ils soient au format vrai /faux.
    Dans DRT j'ai des champs au format texte, dans ma nouvelle table NVL_DRT je souhaiterais obtenir un champ au format vrai / faux.
    Je pense utiliser une requête mise à jour pour remplir ma nouvelle table (que j'ai créé manuellement auparavant).

    Ma démarche est la suivante:

    1. je transforme les N/O ; i/R ; 0/1... en vrai/faux dans DRT
    2. je mets à jour NVL_DRT à partir de DRT avec une requête "mise à jour " en pensant naïvement que ACCESS considérera que mon champs DRT.champ1 contenant vrai ou faux (en texte ) pourra être incorporé dans NVL_DRT.champ1 (en booléen).


    Voilà... Je ne suis peut-être pas sur la bonne piste...

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ce n'est pas en mettant vrai/faux dans un champ que cela te le transformera en bouléen (vrai/faux).

    Ce qu'il faut que tu fasses :
    - construire une table vierge avec tes champs booléens.
    - faire une requête d'ajout, pour si par exemple O, le champ devient vrai et ainsi de suite.

    Starec

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    J'ai effectivement créé une table avec mes champs oui/non, mais je ne sais pas comment mettre des conditions pour que mes i/r ; 1/0 et autre N/O se transforment en oui / non dans une requête ajout.

    J'ai réussi dans une requête mise à jour à changer dans un champ le N en Non, mais apparemment je ne peux pas faire comme si j'utilisai un IF...THEN...ELSE donc mon O dans l'exemple reste un O.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DRT_CAE SET DRT_CAE.chantier_i = "Non"
    WHERE (((DRT_CAE.chantier_i)="N"));
    De plus quand j'essaie ce changement avec deux champs à la fois cela ne fonctionne plus.

    En SQL cela donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DRT SET DRT.champ1 = "Non", DRT.champ2 = "Non"
    WHERE (((DRT.champ1)="N") AND ((DRT.champ2)="N"));
    Sans doute à cause du And (?). Est-ce que si j'utilise un Or cela traitera champ par champ... je ne suis pas sûr.

    Une solution pourrait être dans un macro de faire exécuter une commande SQL pour chacune des modalités (deux ) de mes champs et pour chaque champ (leur nombre étant fini) puis de faire ma requête ajout... Mais sans aucun doute y-a-t-il plus simple...

    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ce n'est pas non, n'oublie pas que tu écris en Anglais, c'est True ou False, et a ne pas mettre entre guillemets.

    Starec

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2007
    Messages : 85
    Points : 68
    Points
    68
    Par défaut
    Salut Starec,

    Merci pour ta patience et tes évidences, j'ai bêtement utilisé oui/non à l'instar du type de données, cela marche beaucoup mieux dans la langue naturelle de Bill Gates . Je réussis donc à faire fonctionner ma requête ajout.

    Mais je reste avec mon problème de changer les valeurs dans ma table initiale avec une requête mise à jour, pour que je passe de :


    id champ1 champ2 champ3 champXi...
    1 N i 1 ...
    2 O r 1 ...
    3 O i 0 ...
    ...

    à

    id champ1 champ2 champ3 champXi...
    1 False True True ...
    2 True False True ...
    3 True True False ...


    (mes champXi sont des champs auxquels je ne souhaite pas toucher)
    (Tous mes champs sont de type texte)

    Je ne sais pas comment faire pour traiter tous mes champs(1;2;3) en même temps (une seule requête).

    Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2010, 13h54
  2. [AC-2003] modifier les données dans le champs d'une table en sql
    Par carlostropico dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 01/12/2009, 16h24
  3. Réponses: 3
    Dernier message: 13/01/2009, 16h55
  4. Réponses: 2
    Dernier message: 29/06/2008, 19h16
  5. Réponses: 4
    Dernier message: 07/08/2006, 16h19

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