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 :

Manipuler le contenu d'une requete


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Par défaut Manipuler le contenu d'une requete
    Bonjour,
    je souhaite réaliser simplement la copie du contenu d'un requête A dans une requete B en ayant effacant tout le contenu de la requete B avant d'y copier les données.

    Ma requete présente plus de 250000 lignes et je souhaite que l'opération se fasse le plus vite et simplement possible.

    pouvez vous m'orienter ? Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Mais une requête est une représentation de données. Il n'y a pas de données stockées dedans. Si ta requête 2 a comme source ta requête 1, seules les données de la requête1 apparaîtront.. Je ne comprends pas...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Par défaut
    Effectivement ça peut paraitre stupide, je m'explique:
    Ma première requete est basée sur des info provenant de plusieurs tables
    La 2e requete est en fait basée sur les info venant d'une seule table indépendante (donc c'est vrai que la requete ne sert à rien et on peut travailler dans la table directement)

    Ceci étant dit,
    je veux réaliser cette opération de copie des données de la requete 1 dans le 2 justement pour ne pas travailler dans la requete 1 pour ne pas risquer de modifier/ou perdre mes données de base.

    Donc je veux pouvoir copier rapidement les info de la requete 1 dans ma requete 2 (ou la table 2 directement) pour pouvoir travailler dessus sans risque puis la table 2 est complétement indépendante du reste de la base de donnée.

    Je veux au passage effacer les donnée contenues dans la table 2 car il s'agit simplement d'une table de travail, une sorte de brouillon donc je veux repartir à chaqeu fois d'une table vide.

    Jusqu'à présent je fais un simple copie/coller à la main entre les 2 tables mais comme j'ai énormément de lignes je dois copier/coller par paquet de 65000 et c'est très long.

    merci pour ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui donc en fait ce sont les données de la table 2 que tu veux changer.
    Va voir du coté des types de requêtes. Il y a des requêtes de suppression et des requêtes d'ajout.

    En gros tu as deux requêtes en mode sql:
    La première
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE *
    FROM Table1;
    La deuxième:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Table2
    SELECT *
    FROM Table1;

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Par défaut
    oui mais en fait je veux faire ça avec du code VBA,
    car j'ai deja car je fais deja des calculs conditionnels dans la requete 1 avec VBA et je souhaite qu'une fois le calcul fait, l'opération de transfert du contenu de la requete 1 dans la 2 se fasse automatiquement ?
    merci

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Par défaut
    voici le code qui fonctionne déja et que je souhaite completer:

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    Private Sub Commande70_Click()
    'calcul du prix de chaque livraison en automatique
     
    Dim rst     As DAO.Recordset
    Dim I       As Long
    Dim tarif   As Long
     
     
        'concerne le traitement de la requete budgetreq pour les flux LTL
        Set rst = CurrentDb.OpenRecordset("budgetreq", dbOpenDynaset)
        Application.DBEngine.SetOption DAO.dbMaxLocksPerFile, 50000
     
        With rst
            .MoveLast
            .MoveFirst
            For I = 1 To .RecordCount   ' Il existe d'autre moyens pour
                                        ' passer sur tous les enregistrements
                .Edit
                If !nombrepal < 34 Then
                    If !nombrepal = 1 Then
                    !prixauto = !prix1
                    End If
                    If !nombrepal = 2 Then
                    !prixauto = !prix2
                    End If
                    If !nombrepal = 3 Then
                    !prixauto = !prix3
                    End If
                    If !nombrepal = 4 Then
                    !prixauto = !prix4
                    End If
                    If !nombrepal = 5 Then
                    !prixauto = !prix5
                    End If
                    If !nombrepal = 6 Then
                    !prixauto = !prix6
                    End If
                    If !nombrepal = 7 Then
                    !prixauto = !prix7
                    End If
                    If !nombrepal = 8 Then
                    !prixauto = !prix8
                    End If
                    If !nombrepal = 9 Then
                    !prixauto = !prix9
                    End If
                    If !nombrepal = 10 Then
                    !prixauto = !prix10
                    End If
                    If !nombrepal = 11 Then
                    !prixauto = !prix11
                    End If
                    If !nombrepal = 12 Then
                    !prixauto = !prix12
                    End If
                    If !nombrepal = 13 Then
                    !prixauto = !prix13
                    End If
                    If !nombrepal = 14 Then
                    !prixauto = !prix14
                    End If
                    If !nombrepal = 15 Then
                    !prixauto = !prix15
                    End If
                    If !nombrepal = 16 Then
                    !prixauto = !prix16
                    End If
                    If !nombrepal = 17 Then
                    !prixauto = !prix17
                    End If
                    If !nombrepal = 18 Then
                    !prixauto = !prix18
                    End If
                    If !nombrepal = 19 Then
                    !prixauto = !prix19
                    End If
                    If !nombrepal = 20 Then
                    !prixauto = !prix20
                    End If
                    If !nombrepal = 21 Then
                    !prixauto = !prix21
                    End If
                    If !nombrepal = 22 Then
                    !prixauto = !prix22
                    End If
                    If !nombrepal = 23 Then
                    !prixauto = !prix23
                    End If
                    If !nombrepal = 24 Then
                    !prixauto = !prix24
                    End If
                    If !nombrepal = 25 Then
                    !prixauto = !prix25
                    End If
                    If !nombrepal = 26 Then
                    !prixauto = !prix26
                    End If
                    If !nombrepal = 27 Then
                    !prixauto = !prix27
                    End If
                    If !nombrepal = 28 Then
                    !prixauto = !prix28
                    End If
                    If !nombrepal = 29 Then
                    !prixauto = !prix29
                    End If
                    If !nombrepal = 30 Then
                    !prixauto = !prix30
                    End If
                    If !nombrepal = 31 Then
                    !prixauto = !prix31
                    End If
                    If !nombrepal = 32 Then
                    !prixauto = !prix32
                    End If
                    If !nombrepal = 33 Then
                    !prixauto = !prix33
                    End If
                 End If
     
                 If !nombrepal >= 34 Then
                 !prixauto = !prix33 / 33 * !nombrepal
                 End If
     
                .Update
                .MoveNext
            Next I
        End With
     
        Set rst = Nothing
        MsgBox ("la requete budget pour les flux LTL a été mise a jour")
     
    End Sub

  7. #7
    Invité
    Invité(e)
    Par défaut
    Et bien en mode vba c'est à peu près comme je te l'ai mis plus haut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Maj_Table2()
        DoCmd.SetWarnings False    'bloque les messages d'avertissement
        DoCmd.RunSQL "DELETE * FROM Table2;"
        DoEvents
        DoCmd.RunSQL " INSERT INTO Table2 SELECT * FROM Table1;"
        DoCmd.SetWarnings False
    End Sub
    Edit: Comme nos messages se croisent , il faut juste que tu remplaces dans mon code "table1" par "requête1"
    Dernière modification par Invité ; 16/09/2011 à 19h10.

Discussions similaires

  1. Mettre le contenu d'une requete dans une table memoire
    Par pierreaigle dans le forum WinDev
    Réponses: 4
    Dernier message: 30/04/2009, 14h39
  2. manipuler les dates dans une requete
    Par lenissart dans le forum MySQL
    Réponses: 3
    Dernier message: 28/01/2009, 18h09
  3. Réponses: 0
    Dernier message: 01/12/2008, 21h05
  4. [VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2008, 21h42
  5. [DAO] [SQL] [VBA] manipuler les proprietes d'une requete
    Par cafeine76 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/07/2008, 15h48

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