From 1071a97e4545492587571c4cf30d73ff4d5ee2f5 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 19 Sep 2007 20:48:43 +0000 Subject: [PATCH] Fix: qq corrections --- htdocs/lib/databases/mssql.lib.php | 29 ++++++++++++++++++++++++++--- htdocs/lib/databases/mysqli.lib.php | 6 +++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/htdocs/lib/databases/mssql.lib.php b/htdocs/lib/databases/mssql.lib.php index 351343e0206..199d1d0e6e3 100644 --- a/htdocs/lib/databases/mssql.lib.php +++ b/htdocs/lib/databases/mssql.lib.php @@ -88,7 +88,8 @@ class DoliDb 1060 => 'DB_ERROR_COLUMN_ALREADY_EXISTS', 1061 => 'DB_ERROR_KEY_NAME_ALREADY_EXISTS', 2627 => 'DB_ERROR_RECORD_ALREADY_EXISTS', - 1064 => 'DB_ERROR_SYNTAX', + 102 => 'DB_ERROR_SYNTAX', + 8120 => 'DB_ERROR_GROUP_BY_SYNTAX', 1068 => 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS', 1075 => 'DB_ERROR_CANT_DROP_PRIMARY_KEY', 1091 => 'DB_ERROR_NOSUCHFIELD', @@ -329,14 +330,36 @@ class DoliDb $query = str_ireplace("\'", "''", $query); - $limitfound = stripos($query, " limit "); - if ($limitfound !== false) { + $itemfound = stripos($query, " limit "); + if ($itemfound !== false) { + // Extraire le nombre limite $number = stristr($query, " limit "); $number = substr($number, 7); + // Insérer l'instruction TOP et le nombre limite $query = str_ireplace("select ", "select top ".$number." ", $query); + // Supprimer l'instruction MySql $query = str_ireplace(" limit ".$number, "", $query); } + $itemfound = stripos($query, " week("); + if ($itemfound !== false) { + // Recréer une requête sans instruction Mysql + $positionMySql = stripos($query, " week("); + $newquery = substr($query, 0, $positionMySql); + + // Récupérer la date passée en paramètre + $extractvalue = stristr($query, " week("); + $extractvalue = substr($extractvalue, 6); + $positionMySql = stripos($extractvalue, ")"); + // Conserver la fin de la requête + $endofquery = substr($extractvalue, $positionMySql); + $extractvalue = substr($extractvalue, 0, $positionMySql); + + // Remplacer l'instruction MySql en Sql Server + // Insérer la date en paramètre et le reste de la requête + $query = $newquery." DATEPART(week, ".$extractvalue.$endofquery; + } + //print ""; if (! $this->database_name) diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php index fb2eabba258..70d1f22506e 100644 --- a/htdocs/lib/databases/mysqli.lib.php +++ b/htdocs/lib/databases/mysqli.lib.php @@ -84,7 +84,7 @@ class DoliDb 1007 => 'DB_ERROR_ALREADY_EXISTS', 1008 => 'DB_ERROR_CANNOT_DROP', 1025 => 'DB_ERROR_NO_FOREIGN_KEY_TO_DROP', - 1044 => 'DB_ERROR_ACCESSDENIED', + 1044 => 'DB_ERROR_ACCESSDENIED', 1046 => 'DB_ERROR_NODBSELECTED', 1048 => 'DB_ERROR_CONSTRAINT', 1050 => 'DB_ERROR_TABLE_ALREADY_EXISTS', @@ -101,8 +101,8 @@ class DoliDb 1136 => 'DB_ERROR_VALUE_COUNT_ON_ROW', 1146 => 'DB_ERROR_NOSUCHTABLE', 1216 => 'DB_ERROR_NO_PARENT', - 1217 => 'DB_ERROR_CHILD_EXISTS', - 1451 => 'DB_ERROR_CHILD_EXISTS' + 1217 => 'DB_ERROR_CHILD_EXISTS', + 1451 => 'DB_ERROR_CHILD_EXISTS' );