Bonjour,
Sous EasyPHP, je dois exécuter une jointure sur deux tables dans deux bases Access distinctes. Je ne peux ni modifier le chemin ni la conception de celles-ci car elles servent déjà à d'autres applications. J'ai essayé vainement plusieurs solutions mais aucune n'est la bonne. Je comprends où est le problème mais j'aurais besoin d'un avis éclairé car là, je sèche.
Les connexions et requêtes sur chacune des tables séparément fonctionnent parfaitement.
Premier essai dans lequel j'utilise un driver générique :
J'obtiens ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $user = ""; $password = ""; $base1 = "C:\HP\APLONS.accdb"; $base2 = "C:\HP\CP.accdb"; $dsn1 = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=$base1"; $dsn2 = "Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=$base2"; $bdd1 = odbc_connect($dsn1, $user, $password) or die(odbc_errormsg()); $bdd2 = odbc_connect($dsn2, $user, $password) or die(odbc_errormsg()); $sql = "SELECT a.FirstName, a.SurName, a.Postal_Code, a.Town, a.Country, b.arrt FROM [APLONS.accdb].Clients a LEFT JOIN [CP.accdb].Table_CP b ON a.Postal_Code = b.cp WHERE a.Postal_Code <>'' ORDER BY a.FirstName"; $req = odbc_exec($bdd1, $sql) or die (odbc_errormsg());
Deuxième essai dans lequel je crée les DSN avec localisation de leur base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [Microsoft][ODBC Microsoft Access Driver] Could not find file 'C:\PROGRA~2\EASYPH~1.1VC\binaries\apache\APLONS.accdb'.
Et là, étant donné que ma requête ne se connecte qu'à la première base, j'obtiens logiquement ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $user = ""; $password = ""; $bdd1 = odbc_connect("HP1", $user, $password) or die(odbc_errormsg()); $bdd2 = odbc_connect("HP2", $user, $password) or die(odbc_errormsg()); $sql = "SELECT a.FirstName, a.SurName, a.Postal_Code, a.Town, a.Country, b.arrt FROM Clients a LEFT JOIN Table_CP b ON a.Postal_Code = b.cp WHERE a.Postal_Code <>'' ORDER BY a.FirstName";
Je pense que la solution la meilleure serait de pouvoir indiquer à Apache le chemin des deux bases Access. Vu qu'elles sont dans le même dossier, d'après ce que j'ai pu lire, une seule connexion suffirait à condition d'indiquer le nom de la base dans la requête mais je ne sais pas comment modifier le fichier de configuration.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [Microsoft][ODBC Microsoft Access Driver] The Microsoft Office Access database engine cannot find the input table or query 'Table_CP'. Make sure it exists and that its name is spelled correctly.
Merci d'avance pour votre aide.
Partager