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 :

[vba access] Obliger Access à Finir le TransfertText


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 6
    Points
    6
    Par défaut [vba access] Obliger Access à Finir le TransfertText
    Bonjour

    J'ai un petit problème avec MS ACCESS, je possède deux bases de données

    Mon code se situe dans une base appelons la System contenant tous les paramètres et mes données sont stockés dans une base appelons la data, pour intégrer des fichiers txt via les spécifications d'import j'effectue un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Dim objDatabaseDataDay As Object
     
    Set objDatabaseDataDay = GetObject(DATABASE_DIR_DATA & DATABASE_DATA_NAME)
     
    objDatabaseDataDay.DoCmd.TransferText acImportDelim, strSpeImportName, strtmpTableName, DATAFILE_DIR_INPUT & strCurrentFilename
    L'integration fonctionne correctement le seul problème est que juste après je souhaite ajouter une colonne 'column_name' a la table 'strtmpTableName'.

    Et la mon programme plante, en me disons qu'il ne trouve pas la table 'strtmpTableName' dans la collection tableDefs en effectuant un pas à pas détaillé j'ai remarqué que le code continué alors que l'importation n'était pas terminés et qu'en attendant un peu le programme fonctionne, ma question est donc Est-il possible d'obligé MS ACCESS à attendre la fin de l'intégration de mon fichier avant de continuer le code?

    Merci

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Tu peux esayer un après l'import.
    Sinon tu peux aussi faire une boucle qui attend ( mais pas trop longtemps) que la table soit créée.

    Bon courage,

    PGZ

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Salut Merci pour tes réponses mais le Doevents ne fonctionne pas et la technique de la boucle n'est pas viable du fait que la taille des fichiers à integré n'est pas constantes et au vu du nombres je ne peux pas me permettre de temporiser, je vais essayer de modifier la technique d'intégration.
    Merci

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il y a dans ton code des variables non déclarées ou bien nous n'avons qu'un extrait de ton code ... sinon met entre quotes les noms de tables et de spécifications.

    Ensuite tu peux faire une boucle qui attend la création d'une table

    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
    Function IsTable(ByVal strTbl As String) As Boolean
    
    Dim tbl As DAO.TableDef
    
    For Each tbl In CurrentDb.TableDefs
        If tbl.Name = strTbl Then
            IsTable = True
            Exit Function
        End If
    Next tbl
    
    IsTable = False
    
    Set tbl = Nothing
    
    End Function
    
    Sub WaitForTheTable(ByVal strTbl As String)
    
    Do While Not IsTable(strTbl)
        DoEvents
        DoEvents
    Loop
    MsgBox "Table Ok !"
    
    End Sub

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Ok, toutes mes variables on été déclaré auparavant.
    Sinon je suis parti sur une intégration manuelle pour le moment mais s'il me reste du temps j'essaierai ta méthode en tout cas merci pour la piste. Cependant j'ai peur qu'en cas de problème je reste bloquer dans une boucle sans fin.

Discussions similaires

  1. [Access 2000] Aide pour finir une requête
    Par Tankian dans le forum Access
    Réponses: 4
    Dernier message: 21/12/2005, 19h53
  2. [Excel + vba] Compacter BDD Access
    Par Emcy dans le forum Access
    Réponses: 6
    Dernier message: 01/12/2005, 15h18
  3. [Vba] BDD : Excel + Access + Vba
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2005, 10h23
  4. Barre de progression VBA pour formulaire Access
    Par beegees dans le forum Access
    Réponses: 1
    Dernier message: 30/10/2005, 12h10
  5. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/07/2004, 16h07

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