Lire les données d'une base Postgres (erreur "cross-database references are not

Résolu
Polack77
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
- 10 avril 2007 à 13:21
Polack77
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
- 19 avril 2007 à 11:36
Bonjour,

J'ai un problème qui commence à m'énervé. J'ai une base postgres (local) je
veut simplement m'y connecter (ça c'est bon) et lire les données de mes tables
(c'est là que ça coince). Voila mon code :


Dans un module :

----------------------------------------

Public conn As ADODB.Connection

Public Record As ADODB.Recordset


----------------------------------------


La connexion :

----------------------------------------

Set conn = CreateObject("ADODB.Connection")

conn.Open "Driver={PostgreSQL Unicode};Server=" &
Me.TextServeur.Text & ";Port=5432;Database=" &
Me.TextBaseDeDonnées.Text & ";UID=" & Me.TextLogin.Text &
";PWD=" & Me.TextPassWord.Text


----------------------------------------


La lecture :

----------------------------------------

Set Record = New ADODB.Recordset

Record.ActiveConnection = conn

Record.Open "SELECT * FROM public.Tables.AnalysesSpecifiques", conn,
adOpenDynamic, adLockOptimistic '*****************************


----------------------------------------

L'erreur se produit à la ligne en gras marqué d'*.




Message d' erreur :


----------------------------------------

Run-time error '-2147467259 (80004005)':


ERROR: cross-database references are not implemented:

"public.tables.analysesspecifiques";

Error while executing the query


----------------------------------------



J’ai déjà essayé plusieurs 'truc' mais rien ne
marche toujours la même erreur (ou alors une erreur me disant "… relation 'analysesspecifiques'
does not exist; …")
J’espère avoir été suffisamment précis. Merci par avance










<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:24pt;
height:24pt'/><![endif]-->
<!--[if !vml]-->
<!--[endif]-->
Amicalement <!--[if gte vml 1]><v:shape
id="_x0000_i1026" type="#_x0000_t75" alt="" style='width:11.25pt;height:11.25pt'>
<v:imagedata src="file:///C:/DOCUME~1/Vincent/LOCALS~1/Temp/msoclip1/01/clip_image002.gif"
o:href="http://www.vbfrance.com/imgs2/smile_big.gif"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->



<!--[if !supportEmptyParas]--> <!--[endif]-->
A voir également:

26 réponses

Polack77
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
1
13 avril 2007 à 11:33
CA MARCHE!!!!!!!!!!!!







































Bon bà voila j'execute ma requête comme ça :
    Set RetourDonnees = conn.Execute
("SELECT ""NumAxesAnalysesSpecifiques"",""NombreCaracAxesAnalysesSpecifiques"" FROM ""public"".""AnalysesSpecifiques""")
    Debug.Print RetourDonnees.GetString(adClipString, -1, ";", "|", "NULL")

Donc voila. Je ne comprand toujour pas pourcois ça ne fonctione pas avec la propriété "open" mais bon.

MERCI à tous du temps que vous m'avez consacré.

Récapitulatif pour ceux que ça intéreserais :

Variable global :

Public conn As ADODB.Connection
Public RetourDonnees As ADODB.Recordset

Set des variable :

    Set conn = New ADODB.Connection

Connection :

    conn.Mode = adModeReadWrite
    conn.Open "Driver={PostgreSQL Unicode};Server=" & Me.TextServeur.Text & ";Port=5432;Database=" & Me.TextBaseDeDonnées.Text & ";UID=" & Me.TextLogin.Text & ";PWD=" & Me.TextPassWord.Text

Lecture de données :

    Dim Chaine as String
    Set RetourDonnees = conn.Execute("SELECT ""NumAxesAnalysesSpecifiques"",""NombreCaracAxesAnalysesSpecifiques"" FROM ""public"".""AnalysesSpecifiques""")
    Chaine = RetourDonnees.GetString(adClipString, -1, ";", "|", "NULL")
    RetourDonnees.Close
    Set RetourDonnees = Nothing

Remarque dans ce cas un ; est entre chaque données de chaque clolone, un | entre chaque enregistrement et la chaine NULL est insérer si la valeur est null.

Ecriture de données :

    conn.Execute "INSERT INTO ""public"".""AnalysesSpecifiques"" (""NumAxesAnalysesSpecifiques"",""NombreCaracAxesAnalysesSpecifiques"") VALUES (4,15)"

Attention je rapel que en Postgres un nom de shéma est nésesaire si non il ne trouve pas la table (pourcois, alors ça???) dans mon cas ce shéma se nome "public". Il faux également que les nom de tables et de colones sois entre ". Bon bà je crois que tout y est. Si quelqu'un à une question sur ce sujet qu'il la pose dans ce topic je crois que j'ai compris commant ça marche.

Amicalement
3