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

VBA Access Discussion :

Dissociation d'un champ en deux.


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Dissociation d'un champ en deux.
    Bonjour,

    Voilà, on m'a demandé de dissocier un champ en deux champs distinct : l'un qui enregistre lors de la création de l'enregistrement, et l'un qui enregistre les modifications qui lui sont apportées.
    Le problème c'est que le bouton "enregistrer" renvoi à ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Enregistrer_Click()
     
    [Date mise à jour] = Now()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.RefreshRecord
     
    End Sub
    J'ai tenté d'ajouter dans ce code ces quelques lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ([Propositions].[Validation1] = "") Then
    [Propositions].[Validation1] = [Ménages].[Validation]
    End If
    Sachant que Ménages.Validation est la donnée qui existait de base, qui s'enregistre à la création par le biais d'un menu déroulant que l'on sauvegarde avec le bouton "Enregistrer", et que Proposition.Validation1 est le champ dans lequel je veux enregistrer UNIQUEMENT la première valeur sauvegardée (j'ai créé le champ dans la table Propositions car il n'existait pas).

    Par le biais de if, j'avais dans l'idée de faire que si le champ de propositions est vide, ça enregistre celui de la table ménage. Ainsi, seul le premier enregistrement sera conservé, puisque les fois suivantes où l'on effectuera la mise à jour, il ne sera pas vide. Mais peut être que je me complique la tête pour rien.

    Peut être qu'une requête SQL peut permettre celà ?

    Merci d'avance pour votre aide,

  2. #2
    Modérateur

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

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

    Et qu'est-ce qui ne fonctionne pas avec ton code ?

    1. Tu as une erreur ? Laquelle ? Ou ?
    2. Pas la donnees attendue ? Tu attendais quoi ? Tu as eu quoi ?


    A+

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    alors, j'ai un message d'erreur (438) lorsque je clique sur enregistrer :

    Nom : erreur 438.jpg
Affichages : 153
Taille : 14,7 Ko

    et le mode débogage me surligne la première ligne de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ([Propositions].[Validation1] = "") Then
    Je vais essayer ce matin de passer par une requête.. Mais si vous avez une idée de ce qui cloche, je veux bien votre aide

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Je rencontre le même problème d'erreur 438 lorsque j'ai essayé ce code ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If IsEmpty([Propositions].[Validation1]) = True Then
          [Propositions].[Validation1] = [Ménages].[Validation]
    End If
    Via requête, je n'arrive pas plus à aboutir à des résultats.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Je continue de chercher, j'ai essayé de créer une requête, mais mon code n'est pas bon :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO [Propositions] ( Validation1 ) AS Ménages.[Validation] 
    WHERE  [Propositions] ( Validation1 ) IS NULL
    SELECT Ménages.ID_ménage, [Propositions].[Validation], Ménages.[Validation] 
    FROM Ménages INNER JOIN [Propositions] ON Ménages.ID_ménage = [Propositions].ID_ménage;

    Vraiment personne pour aider ?

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 811
    Points : 14 898
    Points
    14 898
    Par défaut
    bonsoir,
    si personne ne t'aide c'est probablement parce que personne n'a compris l'énoncé de ton problème (j'en fait partie).
    Si c'était un problème de syntaxe dans le code, je pense que quelqu'un t'aurait donné une solution depuis longtemps car il ne semble vraiment pas compliqué. Le souci est qu'on ne peut pas corriger un code si on ne comprend pas ce qu'il fait.

    Essaie de réexpliquer en donnant un exemple concret, en postant la structure des tables, quelles relations entre les 2, que contient le formulaire, quel est la source de données ...

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonsoir,
    si personne ne t'aide c'est probablement parce que personne n'a compris l'énoncé de ton problème (j'en fait partie).
    Si c'était un problème de syntaxe dans le code, je pense que quelqu'un t'aurait donné une solution depuis longtemps car il ne semble vraiment pas compliqué. Le souci est qu'on ne peut pas corriger un code si on ne comprend pas ce qu'il fait.

    Essaie de réexpliquer en donnant un exemple concret, en postant la structure des tables, quelles relations entre les 2, que contient le formulaire, quel est la source de données ...
    Bonjour,
    Oui je vais essayer de réexpliquer.
    J'ai un formulaire dont une des données est une liste déroulante qui s'enregistre avec un bouton "enregistrer" du formulaire. Mais chaque fois que l'on change la donnée de cette liste déroulante puis qu'on enregistre, celle ci est écrasée. Je voudrais garder en mémoire uniquement le premier choix enregistré de ce champ, dans une autre table et un autre champ que celui de base.

    exemple : Champ 1 Table 1 -> donnée Valeur4.
    (après modification : ) Champ 1 Table 1 -> Valeur2.

    Ce que j'aimerai, c'est avoir Champ 1 Table 2 -> Valeur4
    et qu'après modification, la valeur 4 ne soit pas modifiée elle.

    C'est pourquoi j'ai essayé de faire des requêtes ou rajouter un code VBA en relation avec le bouton enregistrer, dont l'idée était que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (Table2.Champ1 = Null (ou isEmpty)) THEN (Table2.Champ1 = Table1.Champ1) ELSE 'ne rien faire'
    Mais comme j'ai énormément de mal avec Access, à comprendre la base créée par une autre personne, je n'arrive pas à comprendre comment faire. :/

    Merci en tout cas, j'espère avoir été plus compréhensible

Discussions similaires

  1. Lier deux champs dans deux tables ?
    Par Olivierc dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 23h13
  2. [MySQL] Probleme de liaison de champs entre deux tables
    Par ept35 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 16/12/2005, 16h34
  3. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21
  4. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53
  5. [sql] afficher deux champs de deux tables sans jointure
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/06/2005, 12h38

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