diff --git a/harbour/contrib/hbmysql/tmysql.prg b/harbour/contrib/hbmysql/tmysql.prg
index ddbeb71..a25d1bf 100644
--- a/harbour/contrib/hbmysql/tmysql.prg
+++ b/harbour/contrib/hbmysql/tmysql.prg
@@ -350,7 +350,7 @@ METHOD New(nSocket, cQuery) CLASS TMySQLQuery
    if (rc := sqlQuery(nSocket, cQuery)) == 0
 
       // save result set
-      if (::nResultHandle := sqlStoreR(nSocket)) > 0
+      if (::nResultHandle := sqlStoreR(nSocket)) <> nil
 
          ::nNumRows := sqlNRows(::nResultHandle)
          ::nNumFields := sqlNumFi(::nResultHandle)
@@ -625,6 +625,7 @@ METHOD Error() CLASS TMySQLQuery
 
 return sqlGetErr(::nSocket)
 
+
 // Given a field name returns it's position
 METHOD FieldPos(cFieldName) CLASS TMySQLQuery
 
@@ -979,7 +980,9 @@ METHOD Delete(oRow, lOldRecord, lRefresh) CLASS TMySQLTable
 
    // is this a row of this table ?
    Do Case
-      Case orow==nil
+      Case oRow==nil
+
+	 altd()
 
          //DAVID:
          if lOldRecord
@@ -1002,8 +1005,10 @@ METHOD Delete(oRow, lOldRecord, lRefresh) CLASS TMySQLTable
          endif
 
          if sqlQuery(::nSocket, cDeleteQuery) == 0
+
             ::lError := .F.
-            //DAVID: Clipper maintain same record pointer
+            
+	    //DAVID: Clipper maintain same record pointer
             //DAVID: ::nCurRow--
 
             //DAVID: after refresh(), position of current record is often unpredictable
@@ -1069,6 +1074,7 @@ METHOD Append(oRow, lRefresh) CLASS TMySQLTable
 
    local cInsertQuery := "INSERT INTO " + ::cTable + " ("
    local i
+
    //DAVID: too many ::refresh() can slow some processes, so we can desactivate it by parameter
    default lRefresh to .T.
 
@@ -1353,6 +1359,8 @@ CLASS TMySQLServer
    METHOD   ListDBs()            // returns an array with list of data bases available
    METHOD   ListTables()         // returns an array with list of available tables in current database
 
+   METHOD   Exec(cQuery) 
+   
    METHOD   Query(cQuery)        // Gets a textual query and returns a TMySQLQuery or TMySQLTable object
 
    METHOD   NetErr() INLINE ::lError         // Returns .T. if something went wrong
@@ -1373,7 +1381,7 @@ METHOD New(cServer, cUser, cPassword) CLASS TMySQLServer
    ::nSocket := sqlConnect(cServer, cUser, cPassword)
    ::lError := .F.
 
-   if ::nSocket == 0
+   if ::nSocket == nil
       ::lError := .T.
    endif
 
@@ -1579,6 +1587,14 @@ METHOD DeleteTable(cTable) CLASS TMySQLServer
 
 return .F.
 
+METHOD Exec(cExecQuery) CLASS TMySQLServer
+
+   if sqlQuery(::nSocket, cExecQuery) == 0
+      return .T.
+   endif
+
+return .F.
+
 
 METHOD Query(cQuery) CLASS TMySQLServer
 
@@ -1622,7 +1638,7 @@ METHOD Error() CLASS TMySQLServer
 
    ::lError := .F.
 
-return iif(::nSocket > 0, sqlGetErr(::nSocket), "No connection to server")
+return iif(::nSocket <> nil, sqlGetErr(::nSocket), "No connection to server")
 
 
 METHOD ListDBs() CLASS TMySQLServer
@@ -1727,7 +1743,7 @@ static function ClipValue2SQL(Value)
             // MySQL dates are like YYYY-MM-DD
             cValue := "'"+StrZero(Year(Value), 4) + "-" + StrZero(Month(Value), 2) + "-" + StrZero(Day(Value), 2) + "'"
          else
-            cValue := "''"
+            cValue := "NULL"
          endif
 
       case Valtype(Value) $ "CM"
