par exemple dans /htdocs/compta/index.php on a cette requête :
-------------------------------------------------------------------
$sql = "SELECT sum(f.total) as tot_fht, sum(f.total_ttc) as tot_fttc,";
$sql.= " s.nom, s.rowid as socid,";
$sql.= " p.rowid, p.ref, p.facture, p.fk_statut, p.total_ht, p.total_ttc";
if (!$user->rights->commercial->client->voir && !$socid) $sql .= ",
sc.fk_soc, sc.fk_user ";
$sql.= " FROM (".MAIN_DB_PREFIX."societe AS s, ".MAIN_DB_PREFIX."commande
AS p";
if ($user->rights->commercial->client->voir || $socid) $sql .= ")";
if (!$user->rights->commercial->client->voir && !$socid) $sql .= ",
".MAIN_DB_PREFIX."societe_commerciaux as sc)";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."co_fa AS co_fa ON co_fa.fk_commande =
p.rowid";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture AS f ON co_fa.fk_facture =
f.rowid";
--------------------------------------------------------------------
qui met entre parenthèses les tables après le FROM pour palier au
problème avec LEFT JOIN qu'on avait
avec MSSQL on obtient cette erreur :
---------------------------------------------------------------------
TYPE GESTIONNAIRE DE BASE DE DONNÉE: mssql
REQUETE DERNIER ACCES EN BASE EN ERREUR: SELECT sum(f.total) as
tot_fht, sum(f.total_ttc) as tot_fttc, s.nom, s.rowid as socid,
p.rowid, p.ref, p.facture, p.fk_statut, p.total_ht, p.total_ttc FROM
(llx_societe AS s, llx_commande AS p) LEFT JOIN llx_co_fa AS co_fa ON
co_fa.fk_commande = p.rowid LEFT JOIN llx_facture AS f ON
co_fa.fk_facture = f.rowid WHERE p.fk_soc = s.rowid AND p.fk_statut =
3 AND p.facture=0 GROUP BY p.rowid
CODE RETOUR DERNIER ACCES EN BASE: DB_ERROR_SYNTAX
---------------------------------------------------------------------
si j'enlève les parenthèses et que l'utilisateur n'a pas le droit de voir
tous les clients, j'ai cette erreur sous MYSQL:
---------------------------------------------------------------------
Dolibarr a détecté une erreur technique.
Voici les informations qui pourront aider au diagnostic:
Type gestionnaire de base de donnée: mysqli
Requete dernier acces en base en erreur: SELECT sum(f.total) as tot_fht,
sum(f.total_ttc) as tot_fttc, s.nom, s.rowid as socid, p.rowid, p.ref,
p.facture, p.fk_statut, p.total_ht, p.total_ttc, sc.fk_soc, sc.fk_user FROM
llx_societe AS s, llx_commande AS p, llx_societe_commerciaux as sc LEFT
JOIN llx_co_fa AS co_fa ON co_fa.fk_commande = p.rowid LEFT JOIN
llx_facture AS f ON co_fa.fk_facture = f.rowid WHERE p.fk_soc = s.rowid AND
s.rowid = sc.fk_soc AND sc.fk_user = 1 AND p.fk_statut = 3 AND p.facture=0
GROUP BY p.rowid
Code retour dernier acces en base: DB_ERROR_NOSUCHFIELD
Information sur le dernier accès en base: Unknown column 'p.rowid' in 'on
clause'
----------------------------------------------------------------------
Régis
On Thu, 20 Sep 2007 10:00:53 +0200, "Laurent Destailleur (Eldy)"
<address@hidden> wrote:
La premiere chose a faire est de corriger les pb de requetes trop
specifiques.
Car si elles ne fonctionne pas avec un autre SGBD, elle ne
fonctionneront avec aucune couche d'abstraction (que ce soit PDO, ou
autre).
Il ne devrait pas y avoir de tel code.
As-tu un exemple de tel requete ?
Régis Houssin a écrit :
Bonjour,
Après plusieurs tests sur MSSQL (grace à Simon Desee) il s'avère que
plusieurs requête dans le code sont trop spécifique à mysql et pose
problème, il faudrait qu'on voit pour utiliser soit PDO (qui imposerait
PHP5), soit ADOdb qui est compatible PHP4/PHP5 (PHP4 allant disparaitre
!!!) afin de faire une réelle couche d'abstraction, ce qui permettrait
d'être vraiment Multi-SGBD.
Qu'en pensez-vous ?
Régis
_______________________________________________
Dolibarr-dev mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev