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

IHM Discussion :

Enregistrement de plusieurs blocs dans une table


Sujet :

IHM

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Enregistrement de plusieurs blocs dans une table
    Bonjour

    Je suis débutant en Access. J'ai un projet en entreprise qui nécessite l'utilisation de cet outil.

    Le problème est le suivant :

    En gros j'ai un bloc de données dans une table. Je dois sélectionner plusieurs lignes de ce bloc et les envoyer dans une autre table que j'aurais choisie (ça nous crée un nouveau bloc de données que je déplace dans la table). Jusqu'à là tout va bien. Seulement je souhaite pouvoir envoyer plusieurs sélections différentes dans la même table et savoir les différentier entres elles.

    Merci pour votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    En Access on évite autant que possible la copie de données d'une table à l'autre.
    On préfère généralement se référer à la donnée dans sa table d'origine.
    Par exemple avec des commandes et des clients, dans la table des commandes on va simplement mettre le numéro du client et garder toutes les autres informations (ex : nom, adresse, mode de paiement) dans la table des clients.

    Vois si tu peux le faire,

    Sinon pour "distinguer" tes données on recherche une information (ou une combinaisons d'information) qui permet d'identifier de manière unique un enregistrement (une line). Cela peut être beaucoup de chose comme par exemple le numéro de sécurité sociale, le numéro de client, le nom d'une entreprise.

    Donc regarde tes données et voit si tu as une telle information ou combinaison d'informations, sinon tu ne pourras jamais être sûr de ton coup.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Merci pour ta réponse rapide. En réalité je me suis mal exprimé et j'ai aussi un peu avancé depuis

    Je souhaite maintenant supprimer le contenu d'un champ sans que cela n'impacte sur les autres champs de ma table

    Je ne trouve pas le bout de code VBA qui convient

    Si vous avez une idée je suis preneur !!!

    Merci

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pas sûr de comprendre ta question.

    Les champs sont indépendant les un des autres donc effacer le contenu de 1 ne change pas le reste.
    Et il est rare qu'on ai besoin de VBA pour cela.

    Est-ce que tu veux effacer le contenu d'une colonne au complet ?

    Toute fois pour répondre à ta question initiale, voici du code qui efface le contenu d'un champ dans l'enregistrement courant.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci cela fonctionne mais pas comme je le souhaite

    En gros à la place de ce que je supprime je souhaite insérer une valeur saisie dans un formulaire.
    Cela fonctionne sans la formule que tu m'as donné mais quand je la rajoute j'ai l'impression que cela supprime aussi ce que je viens insérer juste après
    Voici la formule que j'utilise
    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
     
    Me.Ilot = Null
     
    For i = 0 To 50
     
        Set t = CurrentDb.OpenRecordset("TEO GENERIQUE", DB_OPEN_DYNASET)
        t.AddNew
        'Ajout des enregistrements dans la table Ilot
        t![Ilot] = Me.Ilot
        t.Update
        t.MoveLast
     
    Next i
     
    End Sub
    Tu sais comment je peux me débrouiller pour que cela fonctionne?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    J'essaierai ceci dans le code de mise à jour en commençant par ne pas effacer la valeur que je veux copier.

    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
    For i = 0 To 50
     
        Set t = CurrentDb.OpenRecordset("TEO GENERIQUE", DB_OPEN_DYNASET)
        t.AddNew
        'Ajout des enregistrements dans la table Ilot
        t![Ilot] = Me.Ilot
        t.Update
     
    Next i
     
    Me.Ilot = Null
     
    t.MoveLast
    t.close:set t=nothing 'libère explicitement les ressources.
    End Sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci, cela fonctionne presque !!!
    J'ai juste besoin maintenant de garder les mêmes clés primaires pour les 50 enregistrements
    Tu sais comment je pourrais faire ?

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Pourrais-tu en dire plus sur ta clef primaire ?

    L'information est où ? Dans l'enregistrement qui est copié ? Ailleurs ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ma clé primaire est dans la table où vont mes enregistrements ("TEO GENERIQUE" dans le code vba)

    En gros je souhaite garder mes clés primaires de 1 à 50 en changeant les enregistrements dans le champ "Ilot"

    Je t'ai mis un exemple en excel (la cellule en jaune correspond à ma zone de texte de formulaire).
    Fichiers attachés Fichiers attachés

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Peux-tu poster une image plutôt qu'un Excel.

    Ta clef primaire est celle de l'enregistrement copié ?
    Quelle est sont type (AutoNum ou Long) ?
    Quelle sont les champs de la table concernée ?

    Je rappelle que la clef primaire doit être unique.
    On peut faire une clef primaire composée de plusieurs champs mais au final la combinaison des valeurs dans les champs doit être unique.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Cette photo est la table de destination avec la clé primaire à gauche ("ID") et le champ transfo à remplir via un formulaire
    Nom : Selection.PNG
Affichages : 66
Taille : 25,6 Ko

    Cette photo est la requête de sélection avec le champ sous la flèche que je veux remplir
    Les deux tables de la requête sont la table "Selection" est la table "TEO GENERIQUE" que j'ai relié via les clés primaires
    Nom : rqt_TEO.PNG
Affichages : 75
Taille : 10,5 Ko

    Mes clés primaires sont par défaut AutoNum mais je ne connais pas la différence entre AutoNum et Long

    Le but final est de, via la requête de sélection (qui déclenche une requête ajout), ajouter dans une table les différentes sélections

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Un long (pardon j'aurai du dire Entier long) est cela juste un entier et en interne un auto-num est un entier long.

    Si ta clef primaire est un autonum, Access va automatiquement incrémenter (c'est le but) et il est difficile de le faire revenir à 0.
    Les autonum ne sont pas des compteurs d'enregistrements, ils sont là pour te fournir un numéro unique garanti par le système.

    Donc là ta table de données qui contient les 50 lignes, est-ce qu'elle n'a jamais que cela 50 lignes ou là on voit les 50 lignes d'une partie des données et tu as d'autres 50 lignes pour d'autres données ?

    Aussi est-ce que ce numéro (1 à 50) est important ou il est juste "décoratif" pour que l'utilisateur sache qu'il est sur la ligne X ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Pas de soucis !!

    Du coup tu me conseilles de mettre un long à la place de autonum c'est bien ça?

    Je n'ai que 50 lignes et la tables ne me sert qu'à ça

    Non les nombres ne sont que décoratifs et ne me servent qu'à créer un lien entre mes deux tables. L'utilisateur n'a pas besoin de savoir à quelle ligne il est

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Petite Update :

    J'ai trouvé la solution à mon problème. Elle se résume en 3 lignes de code qui se déclenchent au clic sur le bouton d'ouverture du formulaire (Selection est le nom de ma table et Transfo celui de mon champ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Private Sub CréationTEO_Click()
     
    DoCmd.RunSQL "Update Selection Set Transfo = Null"
     
    DoCmd.RunSQL "Update Selection Set Transfo = Nom_de_la_transfo"
     
    DoCmd.OpenForm "rqt_TEO"
     
    End Sub
    Ensuite, je sélectionne les enregistrements qui m'intéressent et je les ajoute à une table via une requête ajout.

    Encore merci pour l'aide que vous m'avez apporté !

  15. #15
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour et félictations.

    Tu pourrais simplifier ton code en enlevant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "Update Selection Set Transfo = Null"
    puisque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "Update Selection Set Transfo = Nom_de_la_transfo"
    Assigne de nouveau une valeur au même champ pour tous les enregistrements, donc l'assignation à Null ne sert à rien.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/12/2006, 16h56
  2. Réponses: 1
    Dernier message: 25/08/2006, 13h54
  3. Effacer plusieurs champs dans une table
    Par kurkaine dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/08/2006, 08h22
  4. Réponses: 3
    Dernier message: 07/06/2006, 12h05
  5. [SQL] calcul de plusieurs variables dans une table
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2006, 21h53

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