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

 PostgreSQL Discussion :

Migration Access -> PostgreSQL


Sujet :

PostgreSQL

  1. #1
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut Migration Access -> PostgreSQL
    Bonjour,

    Mon contexte : j'ai une appli frontale access + base access.mdb dont la base approche de la saturation. J'ai donc transféré les données dans une base postreSQL et créé les nouveaux liens de mes tables avec un lien ODBC :
    ODBC;DSN=PostgreSQL30;DATABASE=HG;SERVER=localhost;PORT=5432;UID=postgres;PWD=toto;CA=d;A6=;A7=100;A8=4096;B0=255;B1=8190;BI=0;C2=dd_;CX=1c502bb;A1=7.4
    Tout ça m'a pris un temps raisonnable et fonctionne correctement, avec toutefois des temps de réponse doubles de ceux d'origine (en local).

    Maintenant je souhaite tester les possibilités avec vb.net et une liaison ADO. Malheureusement je n'arrive pas à établir la connexion et le message d'erreur n'est pas explicite

    Voici la connexion vers ma base d'origine (qui fonctionne) :
    Public Connexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\planet\hg\planetDB.mdb;Jet OLEDBatabase Password=toto")
    Voici ma tentative de connexion vers ma base postgre (qui ne fonctionne pas) :
    Public Connexion As OleDbConnection = New OleDbConnection("Provider=PostgreSQL OLE DB Provider;Data Source=HG;location=localhost;User ID=postgres;password=toto;timeout=1000;")
    Je précise que j'ai installé les 2 dll : libpq & pgoledb
    J'ai aussi téléchargé npgsql mais je n'ai pas compris si j'en avais besoin et je n'ai pas réussi à l'installer...si ça s'installe

    Merci d'avance à qui pourra m'aider

  2. #2
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Quel est le message d'erreur?
    Voir ici.
    @+

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Il n'y a pas de gestion d'erreur lors de la déclaration. Par contre ça plante à la première instruction car la connexion est fermée.

    C'est le site que j'ai utilisé pour faire ma "connection string". Mais il n'y a aucune explication...
    - Que doivent contenir "Data Source" et "location" ?
    - Il y a plusieurs propositions, quelle connexion choisir ?

  4. #4
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Data Source=adresse IP de la machine ayant postgresql, localhost si machine locale
    location=le nom de la base
    Si le port est 5432 pas de problème, sinon il faut ajouter ": xxxx" à la suite de Data Source. xxxx étant le port. (pas d'espace entre : et x; en fait j'obtiens un emoticon en supprimant l'espace "xxx")
    Que veux-tu dire par "... la connexion est fermée"?
    @+

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Si je comprends bien j'avais inversé "data source" et "location"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Connexion As OleDbConnection = New OleDbConnection("Provider=PostgreSQL OLE DB Provider;Data Source=localhost;location=HG;User ID=postgres;password=toto;timeout=1000;")
    Malheureusement le résultat est le même : arrêt sur la première instruction ExecuteReader avec le message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExecuteReader nécessite une Connection ouverte et disponible. La connexion est actuellement fermée.

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    J'ai un peu avancé sur le message d'erreur : sur la ligne connexion.open :
    Le fournisseur 'PostgreSQL OLE DB Provider' n'est pas inscrit sur l'ordinateur local.

  7. #7
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Tout d'abord merci du sujet de TP. J'ai vraiment cherché!
    Alors voila:
    Mon environnement: win7 pro, pg 9.2.3, VS 2010
    • téléchargement et installation du pilote OLEDB de enterprisedb (par "Application Stack builder")
    • ajout de la réference "npgsql.dll" C:\Program Files\PostgreSQL\Npgsql\ms.net3.5sp1\Npgsql.dll (j'ai choisi 3.5 car lors de la création de l'appli j'ai pris le framework 3.5)
    • le code ...
      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
      Imports System
      Imports Npgsql
      Public Class Form1
          Inherits System.Windows.Forms.Form
          Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
              Dim MyConnexion As NpgsqlConnection = New NpgsqlConnection("Server=127.0.0.1;Port=5435;User Id=vaillants;Password=motdepasse;Database=paie;")
              MyConnexion.Open()       
              Dim Mycommand As NpgsqlCommand = New NpgsqlCommand("SELECT codecategorie FROM tcategorie;", MyConnexion)
              Dim myReader As NpgsqlDataReader = Mycommand.ExecuteReader()
              Do While myReader.Read()
                  ListBox1.Items.Add(myReader.GetString(0))
              Loop
              myReader.Close()
              MyConnexion.Close()
          End Sub
      End Class

    Mais je pense que le plus simple serait d'utiliser un pont OLEDB ODBC.
    @+

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Merci de me consacrer autant de temps !

    J'ai le même environnement et npgsql.dll se trouve dans ce dossier ainsi que dans ms.net4
    J'ai téléchargé et installé PostgreSQL OLE DB Provider
    Pourtant dans VS la référence Npgsql n'est pas reconnue donc rien ne marche

    Le fait que cette connexion soit si complexe à établir alors que c'est théoriquement la façon la plus naturelle d'utiliser Postresql depuis .NET m'incite à penser que ce n'est pas le bon "mariage". J'imagine que pour connecter ensuite des postes clients ce sera la même galère

  9. #9
    Membre extrêmement actif
    Avatar de Chauve souris
    Homme Profil pro
    amateur (éclairé ?)
    Inscrit en
    Novembre 2005
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : Paraguay

    Informations professionnelles :
    Activité : amateur (éclairé ?)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 186
    Par défaut Problème de noms des champs
    Je ne sais pas si ça rentre dans le cadre du problème soulevé, mais j'avais eu un mal de chien à utiliser les tables de PostgreSQL sur un serveur en utilisant Access comme frontal (tables liées) ou par programmation .NET. J'avais remarqué qu'il fallait utiliser des noms de champs sans espaces et sans minuscules accentuées.

  10. #10
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Citation Envoyé par Chauve souris Voir le message
    j'avais eu un mal de chien à utiliser les tables de PostgreSQL sur un serveur en utilisant Access comme frontal (tables liées)
    De mon coté je n'ai pas eu de problème pour cela. Il faut dire que j'évite absolument espaces et accents

    La connexion en ODBC est pratique mais alors Access a des temps de réponse meilleurs avec lui-même qu'avec PostGre donc je cherche à établir une connexion ADO

Discussions similaires

  1. migration access --> PostGreSQL
    Par spookybc dans le forum Outils
    Réponses: 3
    Dernier message: 19/11/2008, 15h36
  2. Réponses: 0
    Dernier message: 09/01/2008, 18h58
  3. migration de bases access vers postgresql
    Par passie dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 04/07/2005, 11h12
  4. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  5. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 14h08

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