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

Access Discussion :

formulaire se rapportant à une requête


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Points : 31
    Points
    31
    Par défaut formulaire se rapportant à une requête
    Bonjour à tous !!!

    Voila j'ai un formulaire qui lorsque je veux ajouter un acteur ne me met pas le numero automatiquement du nouvel acteur (ex : si le dernier est 30, le nouvel est 31).
    je sais, il fallait faire au debut le numero de l'acteur en "auto" mais j'ai oublier .
    Un copain m'a dit de me servir d'une requête, mais je ne vois pas la requête a faire pour que mon formulaire me mette la nouvel clé en automatique.

    merci d'avance

  2. #2
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Salutation :

    Salut ... et bienvenue sur le forum ...

    Question :

    As-tu essayé de modifier le type de données dans ta table ???
    Si oui, est-ce que cela a fonctionné ???
    Si non, essaie et redis nous ...

    Autrement si le changement du type de données dans ta table avec les données actuelle cela ne fonctionne pas :


    Solution simple :

    1) Copier ta table ( seulement la structure )
    2) Lui donner un autre nom
    3) Modifier le champ qui tu aimerais mettre en numéro auto
    4) Réinporter tes données dans la nouvelle table (requête de mise à jour)
    5) Supprimer la table de base que tu as fait
    6) Renommer la nouvelle table comme l'ancienne ...
    7) Refaire tes liens entre la table et ton formulaire en contrôlant que tous les champs que tu veux dans ton formulaire ont le même nom que ceux présent dans ta table ...


    ou


    Solution brutale :

    1) Suppression de ta table
    2) Recréation de ta table correctement
    3) Réinsertion des données manuellement ...


    [SEMI _ HORS SUJET]
    ou

    Solution de malade :

    Recréer entièrement : Ta table, ton formulaire et tout ce qui se raporte à la table ...

    [FIN SEMI _ HORS SUJET]
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Points : 31
    Points
    31
    Par défaut
    Merci!

    je pensse que je vais choisir la solution 1.

    Mais je ne comprend pas un truk si je copie ma table je devrai avoir toute les données de l'ancienne table non??
    Alors je comprend pas ton étape 4 en disant que je dois réimporter les données et avoir une requête mise a jour??

  4. #4
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Citation Envoyé par stan30160
    Mais je ne comprend pas un truk si je copie ma table je devrai avoir toute les données de l'ancienne table non??
    Alors je comprend pas ton étape 4 en disant que je dois réimporter les données et avoir une requête mise a jour??
    Quand tu copies une table tu as une fenêtre qui vient et tu dois :

    1) Nommer la table
    2) Choisir une des 3 options qui sont :
    2.1) Copier la structure seulement
    2.2) Copier la structure et les données
    2.3) Ajouter les donnàes à une table.

    Ecoute essaie de cocher : copier la structure et les données et regarde si tu arrives à modifier le type de données pour faire un numéro auto ... si Access ne te dit rien c'est que c'est bon ( et si c'est ok tu n'avais pas besoin de copie r la table tu pouvais le faire directement dans ta table actuelle). Tandis que si Access te dit que c'est pas bon ben tu est bon pour choisir l'option 2.1 pour copier ta table et de changer ton type de données et ensuite de tout réinporter tes données avec une requête d'ajout ou alors avec des recordsets en VBA ... à toi de choisir ce qui t'arrange ... Perso je maitrise mieux les recordsets donc j'utilise cela mais cela revient au même que de faire une requête ...

    Bref, bonne chance ...

    et redonne nous vite des nouvelles
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Points : 31
    Points
    31
    Par défaut
    je m'étais absenté. Je vais tout de suite essayer. attend 5 minutes. Merci beaucoup pour ton aide.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Points : 31
    Points
    31
    Par défaut
    voila je viens de prendre l'option 2.1, en effet la 2.2 était impossible (dommage )
    Par contre je ne comprend pas comment marche une requête d'ajout ou les recordsets en VBA?

  7. #7
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Re ...

    Ce que tu peux faire c'est :

    1) Créer une requête en mode Création
    2) Sélection ta table ( celle qui à un problème de type de données )
    3) Sélection des champs dont tu veux exporter tes données
    4) Dans l'éditeur de requête, fait un clic droit sur la zone grise
    5) Sélectionne : Type de requête
    6) Requête AJOUT
    7) Dans la fenêtre qui s'ouvre, indique le nom de ta nouvelle table ... ( celle que tu as copiée et qui contient le bon type de données)
    8) Clic sur OK
    9)Tu pourras voir dans l'éditeur de requête qu'il y a une ligne blanche dans le bas de la fenêtre qui se nomme : "Ajouter à : "
    10) Indique les noms des champs de la nouvelle table correspondant au champ de l'ancienne table
    11) Une fois cela fait, enregistre ta requête
    12) Exécute ta requête ...

    Normalement il ne devrait pas y avoir de soucis ...

    Pour les recordsets :

    Voici déjà une petite info :
    http://access.developpez.com/faq/?page=SQL#DiffRstSQL

    Et un bon tuto :
    http://warin.developpez.com/access/dao/

    Ensuite si tu veux que je t'explique voici comment je fais :

    1) Déclaration des recordsets et des divers variables qui sont en rapport avec eux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim base_donnee As DAO.Database
    Dim rst_Inventaire As DAO.Recordset
    Dim str_ReqInventaire As String
    2) Attribution de valeur et dénomination
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set base_donnee = Application.CurrentDb
    Set rst_Inventaire = base_donnee.OpenRecordset("TB_INVENTAIRE")
    3) Définition de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_ReqInventaire = ("SELECT * FROM TB_INVENTAIRE")
    4) Dénomination de ce qu'il faut exécuter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst_Inventaire = base_donnee.OpenRecordset(str_ReqInventaire, dbOpenDynaset)
    5) Placement du recordset sur le 1er enregistrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst_Inventaire.movefirst
    6) Début de Boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    While rst_Inventaire.EOF = False
    7) Ajout des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    rst_Inventaire.AddNew
    rst_Inventaire("cle_primaire_mouvement_inventaire") = var_PkMouvement
    rst_Inventaire("numero_mouvement_inventaire") = var_NumeroMouvement
    rst_Inventaire("date_creation_inventaire") = da_DateCreationMouvement
    rst_Inventaire("date_quittancement_inventaire") = Now()
    rst_Inventaire("numero_of_inventaire") = var_NumeroOfMouvement
    rst_Inventaire("numero_lingot_inventaire") = var_NumeroLingotMouvement
    rst_Inventaire("description_inventaire") = var_DescriptionMouvement
    rst_Inventaire("provenance_inventaire") = var_ProvenanceMouvement
    rst_Inventaire("alliage_inventaire") = var_AlliageMouvement
    rst_Inventaire("titre_au_inventaire") = var_TitreAuMouvement
    rst_Inventaire("destination1_inventaire") = str_NomDepartement1
    rst_Inventaire("masse1_inventaire") = var_MasseBmMouvement1
    8) Mise à jour du tout
    9) Passage à l'enregistrement suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst_Inventaire.MoveNext
    10) Fin de boucle
    ATTENTION, le code que je t'ai donné je l'ai simplifier pour la circonstance et je ne sais pas si il est fonctionnel ... ... mais dans son état complet il l'est ...

    je tiens aussi à dire que ce code est dans une fonction que j'exécute à l'appui d'un bouton ...

    En espérant t'avoir un peu aidé ...

    S'Noop
    ... Je me méfie de l'irrespect mais je revendique le droit à la frénésie ...

  8. #8
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Mai 2006
    Messages : 45
    Points : 45
    Points
    45
    Par défaut
    Solution beaucoup plus simple je pense :
    1) faire une copie structure+données de sécurité
    2) ouvrir la table en mode création
    3) supprimer "sauvagement" le champ numéro qui te pose problème
    4) ajouter un champ NuméroAuto
    5) refermer la table
    6) surprise => tous tes enregistrements sont renumérotés !

    7) si tout est bon , tu vire la table d'origine et tu renommes ta nouvelle table comme l'ancienne

    Cordialement

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Points : 31
    Points
    31
    Par défaut
    Merci!!!! à tous les 2 vous avez résolu mon problème!!!

  10. #10
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    N'oublie pas le tag s'il te plait.

    Ca permet de ne pas venir lire le topic pour rien

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

Discussions similaires

  1. Ouvrture Formulaire basé sur une requête paramétrée
    Par teffal dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/07/2006, 16h04
  2. Réponses: 9
    Dernier message: 20/06/2006, 18h47
  3. formulaire fondé sur une requête
    Par amélie22 dans le forum IHM
    Réponses: 2
    Dernier message: 12/06/2006, 13h22
  4. ouverture de formulaire à partir d'une requéte
    Par gaetanef dans le forum Access
    Réponses: 5
    Dernier message: 21/11/2005, 15h51
  5. Réponses: 4
    Dernier message: 16/09/2005, 14h49

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