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 :

Récupération périodique de données sur Dbase IV (dbf)


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut Récupération périodique de données sur Dbase IV (dbf)
    Bonjour,

    J'ai un problème un peu particulier à traiter sur Access. J'utilise actuellement Access 2007 pour mes différentes bases. Cette version n'étant bientôt plus supportée par Microsoft je suis en train d'étudier le passage sur Access 2016, l'aspect sécurité étant quelque chose de très important pour nous.
    Malheureusement pour moi cette nouvelle version (et visiblement la 2013 avant aussi) a certaines choses en moins (gestion utilisateurs,...).
    Sur certains de mes programmes je communique avec un programme dont les données sont sous Dbase IV (dbf). J'ai simplement lié les tables de ce DBF pour pouvoir lire les données. Ce logiciel est bien sûr ancien mais si je veux passer sur leur logiciel nouvelle génération (qui utilise SQL Server) j'en ai pour la modique somme de 50 000 € pour équiper mon parc.
    Mon problème est que la version 2016 d'Access ne permet plus de communiquer avec Dbase IV.
    Le seul moyen de contournement que j'ai trouvé est de mon monter une VM (qui n'aura aucune connexion à Internet) sur laquelle j'aurai Access 2007 et où j'aurai un programme (en accdb) qui récupèrera les données de dBase IV pour les mettre sur une table Access. Mes programmes sous Access 2016 iront alors lire les données de la table Access (2007). La table pourra être éventuellement sur sun serveur SQL server (je dispose d'un serveur SQL 2014) avec simplement une liaison vers SQL Server pour cette table mais le problème sera le même.
    Comme je n'ai pas envie de réinventer la poudre y a t'il un moyen simple pour synchroniser ma table Dbase avec ma table Access autre que faire ça par requête ? La communication ne doit être que dans un sens, c'est-à-dire que la table Access ne doit être qu'une "recopie" de la table Dbase.

    Merci d'avance pour votre aide.

    Anthony.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Bonjour.

    Est-ce que du côté de DB4, tu pourrais exporter au format texte ou l'équivalent.

    Sinon, tu peux attaquer directement tes fichiers DBF en mode binaire.
    Les fichiers BDF comportent une entête qui décrit leur structure et ensuite les données sont dans un enregistrement de type longueur fixe, autant que je me souvienne, en texte.
    Avec un éditeur Hexadécimal où en faisant afficher les caractères un à un tu devrais pouvoir voir la où fini l'entête puis ou commence tes données.
    Attention cela ne marche pas pour tous les types de données dbf. Certaines informations sont stockées en dehors des fichiers dbf et je n'ai pas creusé comment accéder à ces données.

    Je crois qu'il y a aussi une astuce en passant par Excel et en "changeant" le moteur de d'accès aux données pour utiliser une version antérieur et utilisant un connexion.
    Jamais explorée personnellement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut
    Merci pour ta réponse,

    malheureusement au niveau du programme sous DB4 je ne peux pas faire d'export, ou en tout cas pas en automatisant la tâche. Comme précisé le traitement doit se faire fréquemment (toutes les 10 min), ça n'est pas juste une fois de temps en temps.
    Pour l'accès binaire je ne connais pas, je vais me renseigner. Si je comprends bien on pourrait se connecter par cette méthode directement à partir d'Access 2016 ?
    Pour l'export Excel pas la peine non plus. Ca serait plus lourd que de faire ce que j'avais prévu.

    Cordialement,

    Anthony.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    La société qui a commercialisé Dbase IV est l'inventeur du SGBD.

    On en trouve encore des dérivé Access,Excel, Sql Serveur,oracle,mysql..

    Il y avait FoxPro de Microsoft et bien d'autres.

    Je ne dis pas qu'il faille utilise un connecteur Excel pour faire ta liaison avec Access bien qu'un fichier dbf s'ouvre sans problème avec Excel, mais c'est bien le diable si tu ne trouves pas un driver compatible!

    https://docs.microsoft.com/en-us/sql...ro-odbc-driver

    Regardes également le Mdac de Microsoft.
    Dernière modification par Invité ; 21/02/2017 à 17h40.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Pour l'accès binaire je ne connais pas, je vais me renseigner. Si je comprends bien on pourrait se connecter par cette méthode directement à partir d'Access 2016 ?
    Il va falloir le programmer toi-même et c'est un accès très bas niveau.
    En gros tu lis des morceaux du fichier (enregistrement) et tu les découpes par programme.

    Pour la solution Excel, si cela marche avec Excel 2016, tu pourrais éviter d'avoir à monter une machine virtuelle.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Invité
    Invité(e)
    Par défaut
    je viens d'installer Windows 10 et j'ai dbase 4 dans mon gestionnaire de source ODBC!
    Nom : Sans titre.png
Affichages : 1057
Taille : 21,8 Ko

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Bonjour,

    Petite précision historique :

    Foxpro, grand frère de Foxbase n'est pas à l'origine un produit Microsoft. L'éditeur a été racheté au début des années 90 par MS qui en a fait une version pour Windows. C'était un très bon et très performant dbaselike qui tournait sous DOS.

    Microsoft visait surtout un certain brevet détenu par Fox, l'optimiseur Rushmore qui rendait Foxbase largement plus rapide que ses autres concurrents. Cet optimiseur a été intégré à Jet à partir de la version 2 d'ACCESS.

    Bon j'arrête de vous saouler avec ces vieux produits.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 110
    Par défaut
    Concernant l'investissement :
    1) vérifier si SQL Server Express ne serait pas suffisant. Il est gratuit mais limité en nombre d'utilisateurs, capacité de données 1 Go max ?, et certaines fonctionnalités un peu pointues. Mais il est gratuit.
    2) Ms ACCESS n'est pas lié à Jet ou SQL Server, on peut utiliser Oracle, MySQL... grâce à ODBC.
    2) 1 seule licence MS ACCESS est suffisante pour migrer/maintenir/faire évoluer une application ACCESS. Les utilisateurs n'ont eux besoin que d'un runtime qui lui est gratuit mais ne fonctionne qu'avec une application totalement finalisée.

    De mémoire, concernant la liaison avec DBase, il me semble qu'on a accès qu'en lecture sur les bases. Il y a un sujet qui traine sur le forum.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il est encore possible de créer un connecteur ODBC via le gestionnaire ODBC de Windows et de lier ses tables dbf à Access!

    par programme (VBA)!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub test()
    With CreateObject("AdoDb.Connection")
     .Open "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=C:\MyRepertoire"
     Set Rs = .Execute("select * from [Table.Dbf]")
     .Close
    End With
    End Sub

  10. #10
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut
    Merci encore à tous pour votre aide,

    j'ai essayé de tester à nouveau de me connecter à ma bdd dbase par ODBC mais j'ai toujours la même erreur : "Impossible d'utiliser ODBC pour importer de , exporter vers, ou attacher une table de base de données externe Microsoft Access ou ISAM à votre base de données".
    Pour l'accès binaire je peux me tromper mais la solution que j'envisageais me semble plus basique et plus fiable.
    Je vais donc partir sur la mise en place d'une VM (en fait j'en ai déjà une de disponible avec les licences adaptées) sur laquelle j'aurai Access 2007 et mon programme qui aura la table Dbase liée et une autre table (Access ou SQL Server) qui sera la recopie (du coup par requêtage) de la table Dbase. C'est cette table Access que j'utiliserai alors sur mes autres programmes qui seront en Access 2016 (j'utilise le runtime sur mes postes clients sinon ça me coûterait une fortune).

    Amicalement,

    Anthony.

  11. #11
    Invité
    Invité(e)
    Par défaut
    tu as essayé de télécharger le Mdac de Microsoft? il contient tous les drivers!

    Code Exemple Excel Vba : 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
    Private Sub Test()
    With CreateObject("ADODB.Connection") 'connection à la base de données DBF
        .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyRepertoire;Extended Properties=dBASE IV;"
        On Error Resume Next: .Execute "DROP TABLE TestDbf ": On Error GoTo 0
        .Execute "CREATE TABLE TestDbf (NO_ETUDE INT, NO_INT_UC VARCHAR(6))" ' Ajout de la table TestDbf
        For i = 1 To 50 'Ajout de 50 enregistrement!
            .Execute "Insert into TestDbf(NO_ETUDE,NO_INT_UC) values (" & i & ",'TOTO" & i & "')"
        Next
        Set Rs = .Execute("select * from TestDbf") 'requtête de séléction sur la table TestDbf
     For i = 0 To Rs .Fields.Count - 1 'liste le champs dan Excel
         Range("A1").Offset(0, i) = Rs.Fields(i).Name
     Next
      Range("A2").CopyFromRecordset Rs 'copy la requête dans Excel!
        Rs.Close
        .Close
    End With
    End Sub
    Résultat vu dans EXCEL!

    Nom : Sans titre.png
Affichages : 906
Taille : 14,9 Ko
    Dernière modification par Invité ; 22/02/2017 à 13h55.

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Bonjour.

    Pour l'accès binaire je peux me tromper mais la solution que j'envisageais me semble plus basique et plus fiable.
    Très probablement, l'accès binaire c'est un peu la solution du désespoir :-).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Invité
    Invité(e)
    Par défaut
    j'ai testé ma solution sur un Windows 10 64 bits ça fonctionne!

Discussions similaires

  1. récupération d'une donnée sur un site en https
    Par effaceur29 dans le forum Linux
    Réponses: 1
    Dernier message: 24/04/2009, 11h07
  2. récupération d'une donnée sur un site en https
    Par effaceur29 dans le forum Web
    Réponses: 0
    Dernier message: 21/04/2009, 10h17
  3. Réponses: 2
    Dernier message: 02/01/2008, 23h58
  4. Récupération de données sur Disque Dur
    Par assomniak dans le forum Windows XP
    Réponses: 3
    Dernier message: 17/06/2006, 15h57
  5. récupération de données sur une disquette
    Par olilacta dans le forum Ordinateurs
    Réponses: 3
    Dernier message: 21/04/2006, 13h41

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