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 :

Mettre les valeurs dans les bons champs [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Mettre les valeurs dans les bons champs
    e.Bonjour toutes&tous,

    J'ai une table qui contient, entre autres, des champs nommés :
    Nature1 | Taux1 | Coeff1 | Nature2 |Taux2 | Coeff2 | Nature3 | etc....

    Jusqu'à Nature 10.

    Le souci est que les données y sont complètement mélangées :
    Je vais avoir par ex. en Nature1 quelques lignes avec HTR (heures travaillées), puis quelques autres avec HTR en Nature2, Nature4, etc... et ceci avec toutes les abréviations utilisées par le système de base (ERP gestion Ressources Humaines ex. IM -HR ACCESS).

    Bref, je cherche une moyen de remettre un peu d'ordre dans tous cela en partant du postulat que les champs Taux(x) et Coeff(x) correspondent bien au champs Nature(x) et en définissant un (re)classement arbitraire du contenu des 10 Natures.

    J'ajoute que je peux définir dans la table au moins un index sans doublon, au cas où...

    Thanx anticipés pour votre aimable contribution
    Bien à vous

    guyCnet

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut guyCnet et bienvenu,

    j'ai compris que c'est mélangé et que tu voulais mettre dans l'ordre mais à savoir ce que tu souhaites obtenir à partir de ce qu'il y a...


  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Je reformule ;-)
    La table "en vrac" ressemble à l'image en pj "table1" (on voit l'anarchie qui reigne au niveau de la saisie des natures... probable que le masque de saisie n'est pas très fun !)

    ... et ce que je voudrais obtenir correspond à "table2" ;-)

    Je voudrais passez par une requête création de table mais je ne trouve pas la manière de faire pour que tout soit "ranger"...

    J'espère que c'est plus clair maintenant

    Thanx Vodiem,
    Bien à vous toutes&tous

    guyCnet
    Images attachées Images attachées   

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    tu souhaites que pour chaque contrat, les champs natures soient soit prédéfini pour une donnée précise?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut e.Bonsoir Vodiem
    ... D'une certaine façon : Vouiiiii !
    Je ne peux pas demander à "ce bout de code que je ne connais pas" de faire en plus les choix à ma place, pas vrai?

    Mon impression est qu'il me faut balayer toutes les natures de chaque enregistrement et les "ranger" en fonction de l'occurence rencontrée. Ca c'est l'intuition (ou l'instinct), mais ça ne suffit pas... J'ai essayé avec la fonction In case dans une boucle mais j'ai du râter une virgule... Hihihihihi!...

    IL n'y a pas d'ordre de préséance quant au contenu des Natures et leur contenu... il faut simplement que ce soit "rangé" en colonne (avec quelqes valeurs Null, tu l'as compris...).

    On vient de me passer la liste des abréviations, il y en a près de 100...

    OUpssss!

    Thanx pour l'intérêt que tu portes à mon problème
    (je ne suis pas pro... mais Access, c'est un peu ma PS ou Wiii à moi !)
    Bien à vous toutes&tous

    guyCnet

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    il y a juste un truc qui m'échappe:
    il y a-t-il 10 natures ou c'est indéterminé? (le nombre de champs nature est-il fixe?)
    s'il y a 100 abréviations et alors qu'il y a une dizaine de champs natures, il va falloir créer les champs supplémentaires (une pour chaque nature) ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut e.Salutaire Vodiem
    ... Ton sens de la perfection force le respect

    Je me contenterai des 10x3 "Natures"... si ça peut te rassurer !

    Oui, je t'ai révélé l'info que l'on m'a donnée ce matin et je comprends ta réaction... mais le mieux étant l'enemi du bien

    Un "agent de ménage" sur la table de base fera largement mon bonheur, je t'assure

    Thanx à toi
    Bien à vous toutes&tous

    guyCnet

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Complément, au k'z'où
    ...
    Vodiem, si tu penses "par dessus le marché" à faire une requête qui fasse le ménage et simule en plus un tableau croisé-dynamique, je veux bien (abondance de bien ne nuit pas !...), mais c'est un luxe dont je peux me passer, vraiment.
    Je considère que les 10 principales Natures représentent 90% des éléments de contrat exploités et à analyser. D'autant qu'avec environ 1200 équivalents temps plein en interim par an, j'imagine que la table d'origine doit être assez balèze en fin d'année... ;-)

    Restons simples et humbles !

    Thanx et Bon week-end toutes&tous
    guyCnet

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    si tu veux du code avec un minimum d'adaptation il faut vraiment décrire de façon la plus précise le contexte.

    le noms des champs sont-ils de la forme: <N°CONTRAT>, <NatureX>, <TauxX>, <CoeffX>?

    il n'y a pas de luxe, ce qui est possible pour 10 l'est pour 100. seulement si le contexte est flou soit le code ne sera pas adapté soit il faudra plus de code pour le rendre plus polyvalent ce qui n'est pas forcément utile.


  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    .. oui, c'est cela... il y a une centaine de Natures différentes et pour chacune un taux et un coeff de facturation (il s'agit d'intérim).
    Mais je le redis, un modèle sur les 10 premières me conviendra parfaitement... Grrrrr!

    Thanx et bien à toi
    guyCnet

  11. #11
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par guyCnet
    ... Grrrrr!
    oula, me mord pas maintenant: j'ai pas mes vaccins à jour...

    dis voir ca te dérange pas si le contenu des natures ne sont pas classé alphabétiquement? j'ai compris que tu n'es pas difficile mais on commence toujours par une question et on fini souvant par une autre...
    mieux vaut se prémunir que guérir.


  12. #12
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    dans un module à part:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Public Sub feedulogis(laTable As String, destination As String)
    'copie
    DoCmd.SetWarnings False
    DoCmd.RunSQL "select * into " & destination & " from " & laTable
    DoCmd.SetWarnings True
     
    ' récupération de l'ensemble des abréviations
    Dim rs As Recordset
    Dim rsn As Recordset
    Dim nbColNature As Long
     
    Set rs = CurrentDb.OpenRecordset(laTable, dbOpenForwardOnly)
    For Each f In rs.Fields
        If f.Name Like "Nature*" Then nbColNature = nbColNature + 1
    Next f
     
    For i = 1 To nbColNature
        maSql = maSql & "select " & IIf(i = 1, "distinct ", "") & "Nature" & i & " as n from " & laTable & IIf(i < nbColNature, " union ", " order by n")
    Next i
    Set rsn = CurrentDb.OpenRecordset(maSql, dbOpenDynaset)
    rsn.MoveLast
    nbNature = rsn.RecordCount
     
    'rajoute des champs natures manquants
    rs.Close
    rsn.Close
    For i = nbColNature + 1 To nbNature
        DoCmd.RunSQL "alter table " & destination & " add column Nature" & i & " text(255), Taux" & i & " numeric, Coeff" & i & " numeric"
    Next i
    Set rs = CurrentDb.OpenRecordset(destination, dbOpenDynaset)
    Set rsn = CurrentDb.OpenRecordset(maSql, dbOpenDynaset)
     
    'mettre de l'ordre
    While Not rs.EOF
        'initialise le tableau
        ReDim N(nbNature) As Variant
        ReDim T(nbNature) As Variant
        ReDim C(nbNature) As Variant
     
        For Each f In rs.Fields
     
            If f.Name Like "Nature*" Then
                p = Mid(f.Name, 7)
                rsn.FindFirst "n='" & f & "'"
                If Not rsn.NoMatch Then
                    N(rsn.AbsolutePosition + 1) = f
                    T(rsn.AbsolutePosition + 1) = rs.Fields("Taux" & p)
                    C(rsn.AbsolutePosition + 1) = rs.Fields("Coeff" & p)
                End If
            End If
        Next f
     
        rs.Edit
        For i = 1 To nbNature
            rs.Fields("Nature" & i) = N(i)
            rs.Fields("Taux" & i) = T(i)
            rs.Fields("Coeff" & i) = C(i)
        Next i
        rs.Update
     
        rs.MoveNext
    Wend
     
    End Sub
    utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    feedulogis "laTableSource", "laTableDestination"
    avec le tri alphanumérique des champs Natures.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Trop d'la balle ;-)
    .... je teste ta bonne fée dès ce soir (là, il faut que j'emmène les petits à la piscine de toute urgence... à croire qu'il fait plus chaud à Paris que chez toi, hahahahaha!....).
    Et je te dis si c'est une vraie p'tite Cendrillon ou pas... mais je ne suis pas inquiet !

    Thanx encore et excellent dimanche à toi, sous le soleil.
    guyCnet

  14. #14
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    plus chaud à Paris qu'ici pourquoi pas, en tout cas le soleil nous gate par ici et préfère séjourner plus souvent par ici que là haut... de plus les piscines de part d'ici sont couverte de sable: de quoi se monter des chateaux d'orgueils... :p
    tu aurais du amener les petites par ici.

    tu ne m'as pas dis si c'est une vrai cendrillon? je crains, si c'est le cas, que passé minuit elle ne tienne plus toutes ses promesses...


  15. #15
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Hi, Vodiem ;-)
    ... Pas encore eu le temps de tester (enfin vraiment je veux dire... au delà de mes propres carences que j'essaye de soigner!)
    Je n'ai pas pu au boulot et ici, dans ma vie après le travail, je suis en v. 2007. Mais no souci !... (hormis le Viao de mon amie qu'il me faut soigner tous les deux jours.... arghrrrrrr!).
    Bref, parlons peu mais parlons bien :
    Je m'avise que tu as créé une procédure Sub et non Function (qui donc ne renvoie pas de valeur.... hein?) et ma question est celle ci : (imbrication)
    Faut-il que je crée une table destination "bidon" pour que ça fonctionne ? Car je ne vois pas dans ton code une quelconque création de table ;-)

    Ok, j'ai essayé quelque chose vite fait mais ça n'a pas rendu les resultats escomptés... Bien que ton code ne présente aucune erreur... Hihihihihihi!...
    Bref, il faut que je creuse un peu de mon coté. Mais promis, dès que j'ai trouvé, sûr que ça marche et je te le dis!

    Bien à toi et profite des piscines pleines de sables ;-)
    Thanx
    guyCnet

  16. #16
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut eh, eh,... mon Sauveur !
    ... Ca marche au poil ton code, au delà de mes espérances par dessus le marché.!.. de 10 groupes, je me retrouve avec 47 !
    Il y a eu quelques aménagements je l'avoue,à commencer par transformer ta Sub par une Function (cherche pas, je ne me l'explique pas moi même... je le sens mieux comme ça!).... et puis du Mid 6 au lieu de 7 à cause d'une mauvaise info de ma part (comme tu avais raison!...)... Bref, cool la vie. Thanx!
    Comme le traitement prend un peu de temps (+ de 10 000 lignes...), je vais essayer d'y glisser une ligne de progression... je crois qu'il y a ce qu'il faut ici, pas vrai?
    Merci encore et bien à toi... Des gens comme toi, on les envie... Grrrrr!
    guyCnet

  17. #17
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    he bien je suis content que tu ai su réadapter à ta convenance le code.
    j'ai omis de te préciser effectivement qu'une requete aurait été plus complexe pour réaliser ce type de traitement et aurait surement été plus long à l'exécution.
    tu trouveras si je ne me trompe du code pour la barre de progression dans la faq sinon tu peux faire aussi un tour à la fnaq...

    ps: j'ai profité un peu trop du soleil ces jours-ci j'ai pris des coups de soleil. c'est pas marrant il va falloir que j'y retourne pour équilibrer le bronzage.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 15
    Points
    15
    Par défaut e.Salutaire Vodiem
    ... je crois que ma prochaine question va être : "comment ajouter au nom du champs son contenu..."... Hahahhaahhaa!
    Histoire de vulgariser les vertues ineffables de ta SUB "feedulogis" au plus grand nombre....

    Bon, ceci dit, fait gaffe avec le soleil : c'est pas bon. Si je suis le type le plus bronzé du ratodrome Paris-La Défense, c'est que je me glisse dans des sarcophages à UV toutes les semaines... et si pour autant je ne fais pas l'age de mes artères, c'est que j'ai un patrimoine génétique exceptionnel !
    Mais quel gâchis... dire que si je ne déconnais pas comme ça on me filerait facilement 20 ans.... Hahhahahahahaha!

    Bien à toi
    Thanx encore, trop d'la balle !

    guyCnet

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/09/2011, 14h29
  2. [SQL] Récupérer toutes les valeurs dans un seul champs
    Par sempire dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/11/2009, 10h44
  3. Réponses: 4
    Dernier message: 18/08/2009, 17h37
  4. Excel - Mettre des valeurs dans les cellules
    Par shuya dans le forum Débuter
    Réponses: 1
    Dernier message: 10/02/2009, 09h45
  5. [TDBChart]Comment mettre les valeurs DANS les barres
    Par SubZero2 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/09/2008, 08h43

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