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

Requêtes et SQL. Discussion :

Mettre à jour une table par rapport à une autre qui change tout le temps


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut Mettre à jour une table par rapport à une autre qui change tout le temps
    Bonjour à tous,

    Je sollicite vos talents respectifs pour boucler ma base de donnée.

    Je vous explique : je voudrai savoir comment je pourrai faire pour mettre à jour une table par rapport à une autre, sachant que cette dernière change tout le temps.

    En détail: lorsque j'appuie sur un bouton, j'importe un fichier excel et en même temps je crée ma table avec la commande suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    LaVariable = OuvrirUnFichier(Me.Hwnd, "Parcourir", 2, "Fichier Excel", "xls")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, LaVariable, LaVariable, True, "A1:D45000"
    ça fonctionne, maintenant je voudrai que les champs de cette table là(sachant qu'elle est susceptible de changer car son nom n'est pas le même), soit aussi mis dans ma table comportant tout mes enregistrements.

    Avez-vous une idée ?

    Si c'est pas clair, je peux détailler encore plus

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    bonjour,
    pour ma part, c'est un peu confus
    entre les tables, les bases et excel, je m'y suis perdu...

    j'en arrive au point où tu veux récupérer le nom des champs de la table, et les ajouter à ta table définitive, c'est ca ?
    tu peux mettre le résultat dans une 3e table en faisant une requete UNION par exemple.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Je détail:

    Je pars d'un fichier Excel qui s'appelle A.

    Lorsque j'appuie sur un bouton dans mon formulaire, je lance cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    LaVariable = OuvrirUnFichier(Me.Hwnd, "Parcourir", 2, "Fichier Excel", "xls")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, LaVariable, LaVariable, True, "A1:D45000"
    Mon fichier excel est bien créé, et donc ma table s'appelle A.
    Maintenant les champs de ma table A ne sont pas encore dans ma table B ( = qui comporte tous les enregistrements).

    Je voudrai connaitre une méthode qui me permettrait de faire cela sachant que ma table qui s'appelle A change de nom à chaque importation.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    pour ajouter des champs à une table, tu peux passer par du SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE MaTable .....
    ou par du VBA
    tu peux donc avoir une boucle for each des champs de la table A que tu ajoutes dans la table B.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    même si ma table change de nom? si par exemple j'importe ma table A ok ca fonctionne mais si par la même procédure ma table s'appelle C ca pourrait passer car le bus c'est surtout ca

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    ben soit tu gardes la variable LaVariable ou bien tu fais un import avec nom fixe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LaVariable = OuvrirUnFichier(Me.Hwnd, "Parcourir", 2, "Fichier Excel", "xls")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_IMPORT", LaVariable, True, "A1:D45000"

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Pour moi champs = données dans mes colonnes, tu me confirmes que tu comprends bien la même chose?

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    ah non du tout
    un champs c'est une colonne dans une table.
    un enregistrement est une ligne de données dans une table...

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Ba pour moi ceux sont mes enregistrements....

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    alors à ce moment là tu gardes l'import avec T_TEmpo et tu fais une requête d'insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TableB SELECT * FROM TableA;
    attention a bien utiliser les mots justes dans un énoncé, comme ca tout le monde appelle un chat un hcat
    Je te recommande d'aller voir à ce sujet les différents cours à ta dispositions :
    http://access.developpez.com/cours

  11. #11
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    Voilà a ce que j'ai écrit, cela se déclenche lors de l'appuie sur mon bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Import_Click()
     
    Dim LaVariable As String
    Dim bSql As String
    LaVariable = OuvrirUnFichier(Me.Hwnd, "Parcourir", 2, "Fichier Excel", "xls")
    bSql = "INSERT INTO AllImeiàjour_xls SELECT * FROM " & LaVariable & " "
    DoCmd.RunSQL bSql
    Mais ca me retourne le message d'erreur suivant:

    Erreur d'éxecution '3024':
    Could not find file 'C:\Documents And Settins\dld\My Documents\BDD\Table1.mdb'

    Voilà vu que c'est dans le meme bouton, je pense qu'il n'a pas encore importer le fichier qu'il veut deja le mettre dans ma table...??

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    oula, on en a perdu en route :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LaVariable = OuvrirUnFichier(Me.Hwnd, "Parcourir", 2, "Fichier Excel", "xls")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_IMPORT", LaVariable, True, "A1:D45000"
    bSql = "INSERT INTO AllImeiàjour_xls SELECT * FROM T_IMPORT;"
    DoCmd.RunSQL bSql
    important aussi, il faut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.RunSQL "DELETE * FROM T_IMPORT"
    avant l'import, ca permet de repartir d'une table vide

  13. #13
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    ok, je vois comment tu veux faire ça mais comment je fais pour que ma Table T_Import soit aussi garder dans ma base de donnée?? car en fiates le but et d'avoir une table qui contient que cette référence si je peux m'exprimer ainsi mais aussi une table avec toutes les références.

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    euh, tu peux expliciter référence stp ?
    tu veux que les données déjà dans la table T_IMPORT avant l'import soit gardées ? ok, pas besoin du delete * alors. A ne pas confondre avec

  15. #15
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    A l'heure actuelle, lorsque je clique sur mon bouton une boite de dialogue s'ouvre je choisi mon fichier, et après ça me créer une table qui porte le nom de mon fichier excel. Ce que je voudrai ce que ces enregistrements ce mettent aussi dans ma table qui comporte tous mes enregistrement de toutes mes tables...


    Merci

  16. #16
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 369
    Points
    34 369
    Par défaut
    oui j'ai bien compris: le code a été posté plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LaVariable = OuvrirUnFichier(Me.Hwnd, "Parcourir", 2, "Fichier Excel", "xls")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_IMPORT", LaVariable, True, "A1:D45000"
    bSql = "INSERT INTO AllImeiàjour_xls SELECT * FROM T_IMPORT;"
    DoCmd.RunSQL bSql

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Points : 31
    Points
    31
    Par défaut
    ok niquel merci beaucoup je vais pouvoir passer à autre chose

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

Discussions similaires

  1. [AC-2002] Updater une table par rapport à une autre
    Par thierryakaguy dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 29/07/2009, 17h48
  2. Mettre à jour une table par rapport à une autre
    Par remsrock dans le forum Développement
    Réponses: 2
    Dernier message: 18/11/2008, 12h22
  3. Réponses: 1
    Dernier message: 01/08/2006, 14h43
  4. Réponses: 7
    Dernier message: 12/07/2006, 17h34
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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