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 :

ajoute une date de reunion pour plusieur enregistrement


Sujet :

VBA Access

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut ajoute une date de reunion pour plusieur enregistrement
    bonjour

    je souhaiterai a partir d'un formulaire rentre dans une zon de texte une date et que cette date s'ajoute a tout les logements qui ne sont pas finalisé.

    voila le sql de la requete normale
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUIVI_MODIFCATION_TRAVAUX.DATE_REUNION, SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE, SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION, LOGEMENT.MODIFICATION_FINALISER
    FROM LOGEMENT INNER JOIN SUIVI_MODIFCATION_TRAVAUX ON (LOGEMENT.NUM_OPERATION = SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION) AND (LOGEMENT.NUM_LOGE = SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE)
    WHERE (((LOGEMENT.MODIFICATION_FINALISER)<>Yes));

    j'ai essai de faire une requete d'ajout mais sa marche pas j'avai fait sa :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( DATE_REUNION, NUM_LOGE, NUM_OPERATION )
    SELECT SUIVI_MODIFCATION_TRAVAUX.DATE_REUNION, SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE, SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION
    FROM LOGEMENT INNER JOIN SUIVI_MODIFCATION_TRAVAUX ON (LOGEMENT.NUM_OPERATION = SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION) AND (LOGEMENT.NUM_LOGE = SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE)
    WHERE (((SUIVI_MODIFCATION_TRAVAUX.DATE_REUNION)=[Formulaires]![Suivi des modifications travaux]![DATE_new_reunion]) AND ((LOGEMENT.MODIFICATION_FINALISER)<>Yes));

    Il faut savoir que la table SUIVI_MODIFCATION_TRAVAUX à 3 clé primaire DATE_REUNION, NUM_LOGE,NUM_OPERATION

    qui peux m'aide??

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Tu veux ajouter à des lignes déjà présentes dans la base une date ou tu veux créer des lignes ?

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    Citation Envoyé par mathieu44800
    Bonjour,

    Tu veux ajouter à des lignes déjà présentes dans la base une date ou tu veux créer des lignes ?

    je souhaite crée des nouvelles lignes avec une date que l'on choisiera et le N° de l'operation, n° logement qui on pour condition pas encore finalisé

    tu sais comment faire?

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    RE,

    Il faudrait faire un query du style :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE, SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION, 
    FROM LOGEMENT INNER JOIN SUIVI_MODIFCATION_TRAVAUX ON (LOGEMENT.NUM_OPERATION = SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION) AND (LOGEMENT.NUM_LOGE = SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE)
    WHERE (((LOGEMENT.MODIFICATION_FINALISER) <> Yes));

    Pour récupérer dans un recordset les valeurs à inserer.

    Et tant que Not Recordset.EOF
    - ouvrir autre recordset
    - query = "INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( DATE_REUNION, NUM_LOGE, NUM_OPERATION ) VALUES ('"& taDate & "', " & REcordset.fields(0).value & ", " & recordset.fields(1).value & ")"
    - Executer la query
    - Vérifier que le nombre d'enregistrements crée est bien égal à ce que tu as selectionné
    Fin tant que

    Voila, c'est comme ça que je ferais.


    Pour finir, insérer dans ta table

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    salut
    merci pour ta reponse mais je suis débutant et je ne comprend rien tu peux m'explique avec plus de détail j'ai joint un morceau de la base.

    aide moi stp

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Re,

    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
     
        Dim db As Database
        Set db = CurrentDb
        Dim Record As Recordset
        Dim Record1 As Recordset
        Dim valeur as Long
        Set Record = db.OpenRecordset ("SELECT SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE, SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION, 
    FROM LOGEMENT INNER JOIN SUIVI_MODIFCATION_TRAVAUX ON (LOGEMENT.NUM_OPERATION = SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION) AND (LOGEMENT.NUM_LOGE = SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE)
    WHERE (((LOGEMENT.MODIFICATION_FINALISER) <> Yes));")
        Dim OK as int
        While Not Record.EOF
            Set Record = db.OpenRecordset("INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( DATE_REUNION, NUM_LOGE, NUM_OPERATION ) VALUES ('"& taDate & "', " & REcordset.fields(0).value & ", " & recordset.fields(1).value & ")") ' 
            If(Record.RecordCount = 1) Then
                  OK = 1
            End If
            Record.MoveNext
        Wend
        If (OK = 1) Then
            MsgBox "Affecte !" 
        End If
    Le code sera peut etre a adapter...

    Bon courage,

    +

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    j'ai un message erreur sur Dim OK as int
    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
    Private Sub date_Click()
     Dim db As Database
        Set db = CurrentDb
        Dim Record As Recordset
        Dim Record1 As Recordset
        Dim valeur As Long
        Set Record = db.OpenRecordset("SELECT SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE, SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION FROM LOGEMENT INNER JOIN SUIVI_MODIFCATION_TRAVAUX ON (LOGEMENT.NUM_OPERATION = SUIVI_MODIFCATION_TRAVAUX.NUM_OPERATION) AND (LOGEMENT.NUM_LOGE = SUIVI_MODIFCATION_TRAVAUX.NUM_LOGE) WHERE (((LOGEMENT.MODIFICATION_FINALISER) <> Yes));")
        Dim OK as int
        While Not Record.EOF
            Set Record = db.OpenRecordset("INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( DATE_REUNION, NUM_LOGE, NUM_OPERATION ) VALUES ('" & taDate & "', " & Recordset.Fields(0).Value & ", " & Recordset.Fields(1).Value & ")") '
            If (Record.RecordCount = 1) Then
                  OK = 1
            End If
            Record.MoveNext
        Wend
        If (OK = 1) Then
            MsgBox "Affecte !"
        End If
     
    End Sub
    et dis moi c ou que l'on rentre la date de la nouvelle reunion??
    je te m'ai ma base

  8. #8
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Essayes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Dim OK As Integer
    Et mets : TonForm.TonChamp.Value à la place de taDate dans l'INSERT INTO

    Bon Courage

  9. #9
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour,

    tu peux aussi avec une seule requête mettre rajouter tes "lignes"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( NUM_LOGE, NUM_OPERATION, DATE_REUNION )
    SELECT LOGEMENT.NUM_LOGE, LOGEMENT.NUM_OPERATION, #[Formulaires]![Suivi des modifications travaux]![DATE_new_reunion]# AS expr
    FROM LOGEMENT
    WHERE (((LOGEMENT.MODIFICATION_FINALISER)<>Yes));
    en traduisant en vba:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    docmd.runsql =" INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( NUM_LOGE, NUM_OPERATION, DATE_REUNION )
    SELECT LOGEMENT.NUM_LOGE, LOGEMENT.NUM_OPERATION, #" & [Formulaires]![Suivi des modifications travaux]![DATE_new_reunion] & "# AS expr
    FROM LOGEMENT
    WHERE (((LOGEMENT.MODIFICATION_FINALISER)<>Yes));"
    Ce sera bien plus rapide et plus simple
    bonne chance

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    merci bcp sa marche super bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    docmd.runsql =" INSERT INTO SUIVI_MODIFCATION_TRAVAUX ( NUM_LOGE, NUM_OPERATION, DATE_REUNION )
    SELECT LOGEMENT.NUM_LOGE, LOGEMENT.NUM_OPERATION, #" & [Formulaires]![Suivi des modifications travaux]![DATE_new_reunion] & "# AS expr
    FROM LOGEMENT
    WHERE (((LOGEMENT.MODIFICATION_FINALISER)<>Yes));"

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

Discussions similaires

  1. [XL-2007] Problème dans une macro pour ajouter une date
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2015, 20h28
  2. Code SAS Guide pour ajouter une date à une table
    Par Pierre-Henri ROBLOT dans le forum Outils BI
    Réponses: 8
    Dernier message: 17/07/2014, 16h23
  3. saisir une seule fois une donnée pour plusieurs enregistrements
    Par yulalienor dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/06/2010, 18h38
  4. comment ajouter une date dans un enregistrement
    Par INCO13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/06/2008, 18h59
  5. une entrée pour plusieurs enregistrement
    Par mindar dans le forum Modélisation
    Réponses: 2
    Dernier message: 08/06/2007, 09h47

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