Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 2019
-
10 avril 2007 à 13:21
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 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 :
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
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 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
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.
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 19 avril 2007 à 11:36
Heeeeee, j'ai du nouveau :
Les " ne sont obligatoire que dans le cas ou des caractères
accentués ou majuscules sont présent dans les noms de tables ou de
colonnes. (Et vue que moi comme un <strike>con</strike> idiot j'avais mit des majuscules dans tout mes
nom ça ne risquais pas de marcher sans)
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 10 avril 2007 à 14:14
Non rien ne fonctionne.
La 1ére solution : me renvoie l'erreur "relation 'analysesspecifiques' does not exist;"
La 2ème : "Syntax error" avec les ' et "cross-database references are not implemented" sans les '
par contre je n'ai pas compris ce que tu veut dire par :"
je pense que le nom de table que VB va chercher est public.Tables.AnalysesSpecifiques
et pas le nom qui s'y rattache."
Image de ma base de donnée (faite avec "pgAdmin III") peut être que ça peut aider
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 10 avril 2007 à 14:19
Construit comme ça :
Record.Open "SELECT * FROM [ " & public.Tables.AnalysesSpecifiques & " ] " ...
J'ai comme erreur "External name not defined". Cette chaine n'est pas une variable VB mais le chemain pour trouver la table de ma base (enfain je crois)
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 10 avril 2007 à 14:25
Record.Open "SELECT * FROM public.Tables.AnalysesSpecifiques", conn, adOpenDynamic, adLockOptimistic
Ici, je pense que VB essaiera de te connecter a une base qui s'appelle public.Tables.AnalysesSpecifiques et pas le nom qui s'y rapporte. Remplace dans cette meme ligne ( et pas les autres) par le nom de ta table directement pour voir. Si ca ne marche pas, c'est que ta connexions n'est pas bonne.
Essaie quand meme apres avec la ligne que je t'ai donné avec les [].
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 10 avril 2007 à 14:31
Non ça ne marche pas erreur :
-----------------------------------
Run-time error '-21474667259 (80004005)':
ERROR: relation "analysespecifiques" does not exist;
Error while executing the query
-----------------------------------
Tu crois que ça viens de la connection???
Comment la faire dans ce cas (j'ai déjà hue du mal à la faire fonctioné comme ça???)
Je commance à me dire que je vais faire ma base en MySQL (le problème est que mon suppérieur veut une base PostGres, je ne sais pas pourcois en plus, et c'est la première fois que je travail avec)
Amicalement
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 10 avril 2007 à 14:56
Je ne sais pas trop car moi, j'utilise access, mais normalement ca au pire, ca devrait fonctionner:
Record.Open "SELECT * FROM AnalysesSpecifiques", conn, adOpenDynamic, adLockOptimistic
Bien sur le nom de ta table doit bien etre AnalysesSpecifiques, ce qui a l'air d'etre le cas d'apres ton schéma. Donc, c'est pour ca que mes doutes penchent vers ta chiane de connexion.
Pour prouver que ta chaine de connexion fonctionne bien, qu'a tu fais comme test (puisque tu me dis que ca fonctionne).
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 10 avril 2007 à 15:36
Si tu veux, je te donne un bout de code qui m'a permis d'aller chercher dans une BDD toutes mes tables. Donc tu pourras verifier si elle est présente. C'est du VBA, donc fais attention au différence s'il y en a
Dim bdd As New ADOX.Catalog
Dim Tableau As ADOX.Table
Set bdd.ActiveConnection = ma_connexion 'donc conn dans ton cas
For Each Tableau In bdd.Tables
msgbox Tableau.Name
Next
Je pense que ca devrait fonctionner. Pour utiliser ADOX, il faut aller dans projet -> références je crois et cliquer sur Microsoft activeX data objet, faut voir essaie.
Au moins avec ca tu peut voir les tables qui y figurent.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 10 avril 2007 à 15:49
Bonjour,
dans une requête ce qui vient après le point doit correspondre à un champ
Mais puisque tu mets * c' est donc tous les champs.
Il y' a donc erreur dans le nom de la table
public.Tables.AnalysesSpecifiques -
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 10 avril 2007 à 15:51
Heeee,
Je n'arrive pas à utilisé ADOX.
J'ai ajouté tour à tour :
Microsoft activeX data object 2.8 Library
Microsoft activeX data object 2.7 Library
Microsoft activeX data object 2.6 Library
Microsoft activeX data object 2.5 Library
Microsoft activeX data object 2.0 Library
Et même :
Microsoft activeX data object (Multi-dimensional) 2.8 Library
Ou encors:
Microsoft ActiveX Data Objects Recordset 2.8 Library
Toujours la même erreur : "User-defined type not defined"
Quel version utilise tu?
Amicalement
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 10 avril 2007 à 16:06
Ca marche.
Hé pas mal comme petit truc
Bon bà ca me retourne bien le nom de mes 4 tables (sans référence soit : "AnalysesSpecifiques" "Article" "Franco" "Vecteur")
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 10 avril 2007 à 16:16
Bon, je suis content que ca marche. Au moins tu sais que tu n'es pas fou en inventant des tables imaginaires.
Maintenant ca m'arrange pas car je sais pas quoi te dire si tu trouve bien la table AnalysesSpecifiques.
Ta connexion semble bien marcher et ton record.open semble etre correct. 2 dernieres choses avant banquerout totale.
Essaie de nommer ton record.open, on sait jamais car record est peut etre reservé.
Enfin, ton erreur parle de relation. Tu devrais peut etre aussi voir de quoi il en retourne car dans access j'ai un menu nommé relation. Cela pourrait etre la cause de tout.
Tiens moi au courant, ca fera toujours un peu de culture personnelle mais si SQL SERVER, j'y connais rien.
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 10 avril 2007 à 16:26
Je fais encors des testes (si j'ai des info je te le fais savoir par un post dans ce topic) et si demain ca ne marche toujours pas je passe en MySQL (je connais donc logiquement pas de problème).