Notes vers SQL Via ODBC lite

LEI, NotesPump, ODBC, Access, ADO, RDO, Etc.

Notes vers SQL Via ODBC lite

Messagepar Michael DELIQUE » 13 Sep 2011 à 09:04

2 bibliothèques codé en OO pour la connexcion SQL Via ODBC, voici la version légère

Code : Tout sélectionner
Option Declare

UseLSX "*LSXODBC"
Const Structure_Log = {Script Library : ToolsSQL_ODBC_Lite_LS}

Public Class NotesODBCConnection
   Private ConnexionODBC As Odbcconnection
   Private DataSource As String
   private UserID As String
   Private ErrorMessage As String
   Private ErrorConnexion As String
   Private nbErrorConnexion As Long
   
   Property Get ErrorConnexionText As String
      ErrorConnexionText = ErrorConnexion
   End Property
   Property Get ErrorConnexionNumber As Long
      ErrorConnexionNumber = nbErrorConnexion
   End Property
   
   sub New()
      On Error GoTo CatchError      
      Set ConnexionODBC = New Odbcconnection      
      If ConnexionODBC Is Nothing Then
         Error 9999,"ConnexionODBC Is Nothing"
         Exit Sub
      End If      
      DataSource = ""
      UserID = ""
      Exit Sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      Msgbox "("+Structure_Log+" : "+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      Exit sub
   End Sub
   
   Function getConnexion() As Odbcconnection
      On Error GoTo CatchError      
      If Not ConnexionODBC Is Nothing then
         Set getConnexion = ConnexionODBC
      Else
         Set getConnexion = Nothing
      End If      
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      Set getConnexion = Nothing
      Exit Function
   End Function
   
   Sub setSilentMode(wnbEtat As Boolean)
      On Error GoTo CatchError
      If Not ConnexionODBC Is Nothing Then
         ConnexionODBC.Silentmode = wnbEtat
      End if
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      Exit sub
   End Sub
   
   Function getSilentMode() As Boolean
      On Error GoTo CatchError
      getSilentMode= ConnexionODBC.Silentmode
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      Exit Function
   End Function
   
   Sub Reset()
      On Error GoTo CatchError
      DataSource = ""
      UserID = ""
      ErrorMessage = ""
      ErrorConnexion = ""
      nbErrorConnexion = 0
      If Not (ConnexionODBC Is Nothing) Then
         If ConnexionODBC.isConnected = True Then
            Call ConnexionODBC.disconnect
         End If   
         Set ConnexionODBC = nothing
      End If
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      Exit sub
   End Sub
   
   function DisConnexion()As boolean
      On Error GoTo CatchError
      DisConnexion = True      
      DataSource = ""
      UserID = ""
      If Not (ConnexionODBC Is Nothing) Then
         If ConnexionODBC.isConnected = true Then
            DisConnexion = ConnexionODBC.disconnect
         End If   
      End If
      Exit function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      DisConnexion = false
      Exit Function
   End function
   
   Function getErrorNumber()As Integer
      On Error GoTo CatchError
      getErrorNumber = 0
      If Not (ConnexionODBC Is Nothing) Then
         getErrorNumber = ConnexionODBC.GetError
      End if
      Exit Function
CatchError:
      ErrorMessage = ""
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      getErrorNumber = 0
      Exit Function
   End Function
   
   Function getErrorText( wnbExtentedMessage As Boolean)As String
      Dim nbError As Integer      
      On Error GoTo CatchError
      getErrorText = ""      
      If Not (ConnexionODBC Is Nothing) Then         
         nbError = ConnexionODBC.Geterror()         
         If wnbExtentedMessage = True Then
            getErrorText = ConnexionODBC.GetExtendedErrorMessage(nbError )+" ("+CStr(nbError)+")"
         Else
            getErrorText = ConnexionODBC.GetErrorMessage(nbError)+" ("+CStr(nbError)+")"   
         End If
      End if
      Exit Function
CatchError:
      ErrorMessage = ""
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      getErrorText = ""
      Exit Function
   End Function
   
   function setConnexion(wDataSource As String, wUserID As String, wPassword As String, wnbSilentMode As Boolean)As boolean
      Dim nbRetour As Boolean      
      On Error GoTo CatchError      
      setConnexion = False
      ErrorConnexion = ""
      nbErrorConnexion = 0      
      If ConnexionODBC Is Nothing Then
         Error 9999,"ConnexionODBC is Nothing"
      End If      
      ConnexionODBC.Silentmode = wnbSilentMode      
      If ConnexionODBC.isConnected = True Then
         If DataSource = wDataSource Then
            If wUserID = UserID Then
               setConnexion = True
               Exit Function
            End If
         End If
      End If      
      On Error Resume Next
      nbRetour = ConnexionODBC.Connectto(wDataSource, wUserID, wPassword)
      On Error GoTo CatchError      
      If nbRetour = false Then
         DataSource = ""
         UserID = ""
         ErrorConnexion = Trim(ConnexionODBC.Getextendederrormessage())
         nbErrorConnexion = ConnexionODBC.Geterror()
      Else
         DataSource = wDataSource
         UserID = wUserID
         ErrorConnexion = ""
         nbErrorConnexion = 0
         setConnexion = ConnexionODBC.isConnected   
      End If      
      Exit function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      setConnexion = false
      Exit function
   End Function
   
   
   Function TestConnexion() As Boolean
      On Error GoTo CatchError      
      TestConnexion = False      
      If Not (ConnexionODBC Is Nothing) Then
         TestConnexion = ConnexionODBC.isConnected
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()
      TestConnexion = False
      Exit Function
   End Function
   
   
   Private Sub ErrorTraitement()
      On Error Resume Next
      DataSource = ""
      UserID = ""
      If Not (ConnexionODBC Is Nothing) Then
         If ConnexionODBC.isConnected = True Then
            Call ConnexionODBC.disconnect
         End If   
      End If
      On Error GoTo CatchError
      Exit Sub
CatchError:
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
      Exit Sub
   End Sub
   Private Function ErrorTraitementMessage()
      On Error Resume Next
      ErrorTraitementMessage = ""      
      If Not ConnexionODBC Is Nothing Then
         If ConnexionODBC.Geterror <> DBstsSUCCESS Then
            ErrorTraitementMessage = Chr(10)+ConnexionODBC.GetExtendedErrorMessage(ConnexionODBC.Geterror)+" ("+CStr(ConnexionODBC.Geterror)+")"
         End If
      End If
      On Error GoTo CatchError
      Exit Function
CatchError:
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
      ErrorTraitementMessage = ""
      Exit Function
   End Function
End Class

Public Class NotesODBCData
   Private QueryODBC As Odbcquery
   Private ResultsetODBC As Odbcresultset
   Private nbNumParameter As Long
   Private nbNumRow As Long
   Private nbNumColumn As integer
   Private nbQueryIsOk As Boolean
   Private nbAutoClose As Boolean
   Private nbDefautTimeOut As Integer
   Private nbDefautCacheLimit As Long
   Private ErrorMessage As String
   
   Property Get NumRow As Long
      NumRow = nbNumRow
   End Property   
   Property Get NumColumn As Integer
      NumColumn = nbNumColumn
   End Property   
   Property Get QueryIsOk As Boolean
      QueryIsOk = nbQueryIsOk
   End Property   
   Property Get CacheLimitAll As Long
      CacheLimitAll = DB_ALL
   End Property   
   Property Get CacheLimitNone As Long
      CacheLimitNone = DB_None
   End Property   
   Property Get NumParameters As Long
      NumParameters = nbNumParameter
   End Property
   
   Sub New(wConnexionODBC As NotesODBCConnection, wnbAutoClose As Boolean, wnbTimeOut As integer)
      On Error GoTo CatchError      
      If wConnexionODBC Is Nothing Then
         Error 9999,"wConnexionODBC is Nothing"
         Exit sub
      ElseIf wConnexionODBC.TestConnexion() = False Then
         error 9999,"wConnexionODBC is not connected"
         Exit sub
      End If      
      Set QueryODBC = New Odbcquery
      If QueryODBC Is Nothing Then
         Error 9999,"QueryODBC Is Nothing"
         Exit sub
      End If
      Set QueryODBC.Connection = wConnexionODBC.getConnexion()
      nbDefautTimeOut = QueryODBC.Queryexecutetimeout      
      If wnbTimeOut > 0 Then
         QueryODBC.Queryexecutetimeout = wnbTimeOut
      End If      
      Set ResultsetODBC = New Odbcresultset
      If ResultsetODBC Is Nothing Then
         Error 9999,"ResultsetODBC Is Nothing"
         Exit Sub
      End If
      Set ResultsetODBC.Query = QueryODBC
      nbDefautCacheLimit = ResultSetODBC.Cachelimit
      nbNumRow= 0
      nbNumColumn = 0
      nbNumParameter= 0
      nbQueryIsOk = False
      nbAutoClose = wnbAutoClose      
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()      
      Exit sub
   End Sub
   
   Sub Close()      
      On Error GoTo CatchError      
      nbNumRow= 0
      nbNumColumn = 0
      nbNumParameter = 0
      nbQueryIsOk = False
      If Not ResultsetODBC Is nothing Then
         Call ResultsetODBC.Close(DB_CLOSE)
      End If         
      Exit Sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Sub
   End sub   
      
   Function getErrorNumber(wvrObject As Variant) As integer
      On Error GoTo CatchError
      Select Case DataType(wvrObject)
      Case 0,1,10
         REM EMPTY,NULL, OLE error
         getErrorNumber = 0
      Case Else
         getErrorNumber = wvrObject.GetError
      End select   
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      getErrorNumber = 0
      Exit Function
   End Function
   
   Function getErrorText(wvrObject As Variant, wnbExtentedMessage As Boolean)As String      
      Dim nbError As Integer      
      On Error GoTo CatchError      
      Select Case DataType(wvrObject)
      Case 0,1,10
         REM EMPTY,NULL, OLE error
         getErrorText = ""
      End Select      
      nbError = wvrObject.GetError      
      If wnbExtentedMessage = True Then
         getErrorText = wvrObject.GetExtendedErrorMessage(nbError)+" ("+cstr(nbError)+")"
      Else
         getErrorText = wvrObject.GetErrorMessage(nbError)+" ("+CStr(nbError)+")"
      End If
      Exit Function
CatchError:
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
      Call ErrorTraitement()
      getErrorText = ""
      Exit Function
   End Function
   
   Sub setTimeOut(wnbTimeOut As integer)
      On Error GoTo CatchError
      QueryODBC.Queryexecutetimeout = wnbTimeOut
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub
   
   Function getTimeOut() As Integer
      On Error GoTo CatchError
      getTimeOut = QueryODBC.Queryexecutetimeout
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Function setSQLNoReturn(wStatement As String)As boolean      
      On Error GoTo CatchError      
      nbQueryIsOk = False      
      If Trim(wStatement) = "" Then
         Error 9999,"wStatement is empty"
         Exit function
      End If      
      nbNumRow = 0
      nbNumColumn = 0      
      QueryODBC.Sql = wStatement
      Call ResultsetODBC.Execute()      
      If ResultsetODBC Is Nothing Then
         Error 9999,"ResultsetODBC is Nothing"
         Exit function
      End If      
      nbQueryIsOk = ResultsetODBC.IsResultSetAvailable
      setSQLNoReturn = nbQueryIsOk
      If nbQueryIsOk = True Then
         Resultsetodbc.Lastrow      
         nbNumRow = ResultsetODBC.Numrows()
         nbNumColumn = ResultsetODBC.Numcolumns()
         nbNumParameter = ResultsetODBC.Numparameters()
         Resultsetodbc.Firstrow
      Else
         nbNumRow = 0
         nbNumColumn = 0
         nbNumParameter = 0
      End If      
      If nbAutoClose = True Then
         Call ResultsetODBC.Close(DB_CLOSE)
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      setSQLNoReturn = false
      Exit Function
   End Function
   
   function getMaxRow As Long
      On Error GoTo CatchError
      getMaxRow = ResultsetODBC.Maxrows
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing then
            Call ResultsetODBC.Close(DB_CLOSE)
         End if
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Sub setMaxRow(wnbMaxRow As Long)
      On Error GoTo CatchError
      ResultsetODBC.Maxrows = Abs(wnbMaxRow)
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub
   
   Function getAutoClose As Boolean
      On Error GoTo CatchError
      getAutoClose = nbAutoClose
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Sub setAutoClose(wnbAutoClose As Boolean)
      On Error GoTo CatchError
      nbAutoClose = wnbAutoClose
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub   
   
   Function getCacheLimit() As Long
      On Error GoTo CatchError
      getCacheLimit = ResultsetODBC.Cachelimit
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Sub setCacheLimit(wnbCacheLimit)      
      On Error GoTo CatchError      
      If wnbCacheLimit <= DB_NONE Then
         ResultsetODBC.Cachelimit = DB_None
      ElseIf wnbCacheLimit >= DB_ALL Then
         ResultsetODBC.Cachelimit = DB_ALL
      Else
         ResultsetODBC.Cachelimit = wnbCacheLimit   
      End If      
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If      
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub
   
   function getReadOnly As Boolean
      On Error GoTo CatchError
      If ResultsetODBC.Isresultsetavailable() = True Then
         getReadOnly = ResultsetODBC.Readonly
      End If      
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Sub setReadOnly (wnbReadOnly As Boolean)
      On Error GoTo CatchError
      If ResultsetODBC.Isresultsetavailable() = True Then
         ResultsetODBC.Readonly = wnbReadOnly
      End If
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub

   Function getSQL() As String
      On Error GoTo CatchError      
      getSQL = ""      
      If Not QueryODBC Is Nothing Then
         getSQL = QueryODBC.Sql
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      getSQL = ""
      Exit Function
   End Function
   
   Sub setSQL(wSQLRequest As String, wnbForceClose As Boolean )
      On Error GoTo CatchError      
      nbQueryIsOk = false      
      If Trim(wSQLRequest) = "" Then
         Error 9999,"wSQLRequest is Empty"
         exit sub
      End If      
      QueryODBC.Sql = wSQLRequest
      If QueryODBC.Geterror() <> DBstsSUCCESS Then
         Error QueryODBC.Geterror,QueryODBC.Getextendederrormessage()
         Exit sub
      End If      
      If ResultsetODBC.Execute = False Then
         Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
         Exit Sub
      ElseIf ResultsetODBC.Geterror() <> DBstsSUCCESS Then
         Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
         Exit Sub
      End If      
      nbQueryIsOk = ResultsetODBC.Isresultsetavailable      
      If nbQueryIsOk = True Then
         Resultsetodbc.Lastrow      
         nbNumRow = ResultsetODBC.Numrows()
         nbNumColumn = ResultsetODBC.Numcolumns()
         nbNumParameter = ResultsetODBC.Numparameters()
         Resultsetodbc.Firstrow
         If wnbForceClose = True Then
            If Not ResultsetODBC Is Nothing Then
               Call ResultsetODBC.Close(DB_CLOSE)
            End If
         End If
      Else
         nbNumRow = 0
         nbNumColumn = 0
         nbNumParameter = 0
         If nbAutoClose = True Or wnbForceClose = True Then
            If Not ResultsetODBC Is Nothing Then
               Call ResultsetODBC.Close(DB_CLOSE)
            End If
         End If
      End If      
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      nbQueryIsOk = false
      Exit sub
   End Sub
   
   Sub setProcedure(wProcedure As String, wvrArgument As variant)      
      Dim nbArgument As boolean      
      On Error GoTo CatchError
      nbQueryIsOk = False      
      If Trim(wProcedure) = "" Then
         Error 9999,"wProcedure is Empty"
         Exit Sub
      End If            
      nbArgument = False
      If Isarray(wvrArgument) = True Then
         If IsEmpty(wvrArgument) = False Then
            nbArgument = true
         End If
      End If      
      If nbArgument = True Then
         If ResultsetODBC.Execprocedure(wProcedure,DB_PARAM_ARRAY,wvrArgument) = False Then
            Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
            Exit Sub
         End If
      ElseIf ResultsetODBC.Execprocedure(wProcedure) = False Then
         Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
         Exit Sub
      End if      
      If ResultsetODBC.Geterror() <> DBstsSUCCESS Then
         Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
         Exit Sub
      End If      
      nbQueryIsOk = ResultsetODBC.Isresultsetavailable      
      If nbQueryIsOk = True Then
         Resultsetodbc.Lastrow      
         nbNumRow = ResultsetODBC.Numrows()
         nbNumColumn = ResultsetODBC.Numcolumns()
         nbNumParameter = ResultsetODBC.Numparameters()
         Resultsetodbc.Firstrow
      Else
         nbNumRow = 0
         nbNumColumn = 0
         nbNumParameter = 0
         If nbAutoClose = True Then
            If Not ResultsetODBC Is Nothing Then
               Call ResultsetODBC.Close(DB_CLOSE)
            End If
         End If
      End If      

      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub
   
   Function getValueArray() As Variant      
      Dim nbRow2 As Long
      Dim i As Long
      Dim j As Integer
      Dim arrayReturn () As Variant      
      On Error GoTo CatchError      
      getValueArray = Null      
      If ResultsetODBC Is Nothing Then
         Exit Function
      ElseIf ResultsetODBC.IsResultSetAvailable = False Then
         Exit Function
      End If                  
      If ResultsetODBC.Maxrows > 0 Then
         nbRow2 = ResultsetODBC.Maxrows
         i = nbRow2-1
      Else
         nbRow2 = nbNumRow
         i = nbNumRow-1         
      End If
      If i<0 Then
         i = 0
      End If
      j = nbNumColumn-1
      If j < 0 Then
         j=0
      End If      
      ReDim arrayReturn (0 To i, 0 To j)
      For  i = 1 To nbRow2
         ResultsetODBC.Currentrow = i
         For j=1 To nbNumColumn
            arrayReturn(i-1, j-1)= ResultsetODBC.Getvalue(j)
         Next
      Next         
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If      
      getValueArray = arrayReturn
      Erase arrayReturn      
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Erase arrayReturn   
      getValueArray = Null
      Exit Function
   End Function
   
   
   Function getValueData(wnbRow As Long,wvrColumn As variant) As Variant      
      Dim nbColumn As Integer
      Dim NameColumn As String
      Dim nbRow As Long      
      On Error GoTo CatchError      
      getValueData = Null      
      If ResultsetODBC Is Nothing Then
         Exit Function
      ElseIf ResultsetODBC.IsResultSetAvailable = False Then
         Exit Function
      End If            
      nbRow = wnbRow      
      If nbRow < 0 Then
         nbRow = 0         
      ElseIf nbRow > nbNumRow Then
         nbRow = nbNumRow
      End If            
      nbColumn = 0
      NameColumn = ""      
      Select Case DataType(wvrColumn)
      Case 8
         REM String
         NameColumn = CStr(wvrColumn)         
      Case 2,3,4,5,6,11
         nbColumn = CInt(wvrColumn)   
         If nbColumn < 1 Then
            nbColumn = 1
         ElseIf nbColumn > nbNumColumn Then
            nbColumn = nbNumColumn
         End If
      Case else         
         nbColumn = 1
      End Select      
      ResultsetODBC.Currentrow = nbRow
      If nbColumn > 0 then
         getValueData = ResultsetODBC.Getvalue(nbColumn)
      Else
         getValueData = ResultsetODBC.Getvalue(NameColumn)
      End if      
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If      
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      getValueData = Null
      Exit Function
   End Function
   
   Function getValueRow(wnbRow As Long) As Variant
      Dim nbRow As Long
      Dim i As Long
      Dim arrayReturn () As variant      
      On Error GoTo CatchError      
      nbRow = wnbRow      
      If nbRow < 0 Then
         nbRow = 0         
      ElseIf nbRow > nbNumRow Then
         nbRow = nbNumRow
      End If   
      i = nbNumColumn
      If i < 1 Then
         i = 1
      End If   
      ReDim arrayReturn (0 To i)      
      ResultsetODBC.Currentrow = nbRow      
      For i=1 To nbNumColumn
         arrayReturn(i-1)= ResultsetODBC.Getvalue(i)
      Next      
      getValueRow = arrayReturn
      Erase arrayReturn      
      If nbAutoClose = True Then
         If Not ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If      
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Erase arrayReturn
      getValueRow = Null
      Exit Function
   End Function
   
   function getValueColumn(wvrColumn As variant) As Variant      
      Dim nbColumn As Integer
      Dim NameColumn As string
      Dim i As Long
      Dim arrayReturn () As Variant      
      On Error GoTo CatchError      
      getValueColumn = Null      
      If ResultsetODBC Is Nothing Then
         Exit Function
      ElseIf ResultsetODBC.IsResultSetAvailable = False Then
         Exit Function
      End If            
      nbColumn = 0
      NameColumn = ""      
      Select Case DataType(wvrColumn)
      Case 8
         REM String
         NameColumn = CStr(wvrColumn)         
      Case 2,3,4,5,6,11
         nbColumn = CInt(wvrColumn)   
         If nbColumn < 1 Then
            nbColumn = 1
         ElseIf nbColumn > nbNumColumn Then
            nbColumn = nbNumColumn
         End If
      Case Else         
         nbColumn = 1
      End Select      
      i = nbNumRow-1
      If i<0 Then
         i = 0
      End If      
      ReDim arrayReturn (0 To i)
      For  i = 1 To nbNumRow
         ResultsetODBC.Currentrow = i         
         If nbColumn > 0 Then
            arrayReturn(i-1) = ResultsetODBC.Getvalue(nbColumn)
         Else
            arrayReturn(i-1) = ResultsetODBC.Getvalue(NameColumn)
         End If
      Next               
      If nbAutoClose = True Then
         Call ResultsetODBC.Close(DB_CLOSE)
      End if      
      getValueColumn = arrayReturn
      Erase arrayReturn      
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Erase arrayReturn
      getValueColumn = Null
      Exit Function
   End Function
      
   Function getParameterName(wnbParameter As Integer) As String
      On Error GoTo CatchError
      getParameterName = ResultsetODBC.Getparametername(Abs(wnbParameter))
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Function setParameter(wvrParameter As Variant, wValue As string) As Boolean
      Dim nbParameter As Integer
      Dim NameParameter As String
      On Error GoTo CatchError
      setParameter = false
      nbParameter = 0
      NameParameter = ""      
      Select Case DataType(wvrParameter)
      Case 8
         REM String
         NameParameter = CStr(wvrParameter)         
      Case 2,3,4,5,6,11
         nbParameter = CInt(wvrParameter)   
      Case Else         
         nbParameter = 0
      End Select      
      If Trim(NameParameter) = "" Then
         setParameter = CStr(ResultsetODBC.SetParameter(nbParameter,wValue))
      Else
         setParameter = CStr(ResultsetODBC.SetParameter(NameParameter,wValue))
      End If      
      If nbAutoClose = True Then
         If ResultsetODBC Is Nothing then
            Call ResultsetODBC.Close(DB_CLOSE)
         End if
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      setParameter = False
      Exit Function
   End Function
   
   Function getParameter(wvrParameter As variant)As Variant
      Dim nbParameter As Integer
      Dim NameParameter As String
      On Error GoTo CatchError      
      getParameter = null
      nbParameter = 0
      NameParameter = ""      
      Select Case DataType(wvrParameter)
      Case 8
         REM String
         NameParameter = CStr(wvrParameter)         
      Case 2,3,4,5,6,11
         nbParameter = CInt(wvrParameter)   
      Case Else         
         nbParameter = 0
      End Select      
      If Trim(NameParameter) = "" Then
         getParameter = ResultsetODBC.GetParameter(nbParameter)
      Else
         getParameter = ResultsetODBC.GetParameter(NameParameter)
      End If
      If nbAutoClose = True Then
         If ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      getParameter = Null
      Exit Function
   End Function
   
   Function setValue(wvrColumn As Variant, wvrValue as Variant)As boolean
      Dim nbColumn As Integer
      Dim NameColumn As String      
      On Error GoTo CatchError      
      setValue = false      
      If ResultsetODBC Is Nothing Then
         Exit Function
      ElseIf ResultsetODBC.IsResultSetAvailable = False Then
         Exit Function
      End If            
      nbColumn = 0
      NameColumn = ""      
      Select Case DataType(wvrColumn)
      Case 8
         REM String
         NameColumn = CStr(wvrColumn)         
      Case 2,3,4,5,6,11
         nbColumn = CInt(wvrColumn)   
         If nbColumn < 1 Then
            nbColumn = 1
         ElseIf nbColumn > nbNumColumn Then
            nbColumn = nbNumColumn
         End If
      Case Else         
         nbColumn = 1
      End Select      
      If nbColumn > 0 Then
         setValue = ResultsetODBC.Getvalue(nbColumn,wvrValue)
      Else
         setValue = ResultsetODBC.Getvalue(NameColumn,wvrValue)
      End If      
      If nbAutoClose = True Then
         Call ResultsetODBC.Close(DB_CLOSE)
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      setValue = false
      Exit Function
   End Function
   
   Function setValueData(wnbRow As Long,wvrColumn As Variant, wvrValue As Variant)As Boolean
      Dim nbColumn As Integer
      Dim NameColumn As String
      Dim nbRow As Long      
      On Error GoTo CatchError      
      setValueData = False      
      If ResultsetODBC Is Nothing Then
         Exit Function
      ElseIf ResultsetODBC.IsResultSetAvailable = False Then
         Exit Function
      End If            
      nbRow = wnbRow      
      If nbRow < 0 Then
         nbRow = 0         
      ElseIf nbRow > nbNumRow Then
         nbRow = nbNumRow
      End If            
      nbColumn = 0
      NameColumn = ""      
      Select Case DataType(wvrColumn)
      Case 8
         REM String
         NameColumn = CStr(wvrColumn)         
      Case 2,3,4,5,6,11
         nbColumn = CInt(wvrColumn)   
         If nbColumn < 1 Then
            Error 9999,"Colonne Number < 1"
            Exit function
         ElseIf nbColumn > nbNumColumn Then
            Error 9999,"Colonne Number > "+CStr(nbNumColumn)
            exit function
         End If
      Case Else         
         Error 9999,"Bad DataType : "+CStr(DataType(wvrColumn))
         Exit function
      End Select      
      ResultsetODBC.Currentrow = nbRow
      If nbColumn > 0 Then
         setValueData = ResultsetODBC.Getvalue(nbColumn,wvrValue)
      Else
         setValueData = ResultsetODBC.Getvalue(NameColumn,wvrValue)
      End If      
      If nbAutoClose = True Then
         Call ResultsetODBC.Close(DB_CLOSE)
      End If
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   Sub Reset(wnbFull As Boolean)
      On Error GoTo CatchError
      nbNumRow= 0
      nbNumColumn = 0
      nbNumParameter = 0
      nbQueryIsOk = False
      nbAutoClose = False
      ErrorMessage = ""      
      If Not ResultsetODBC Is Nothing Then
         ResultsetODBC.MaxRows=0
         ResultsetODBC.Cachelimit = nbDefautCacheLimit
         Call ResultsetODBC.Close(DB_CLOSE)
      End If      
      If Not QueryODBC Is Nothing Then
         QueryODBC.Queryexecutetimeout = nbDefautTimeOut
         QueryODBC.Sql = ""
      End If      
      nbDefautTimeOut = 0
      nbDefautCacheLimit = 0      
      If wnbFull = True Then
         Set ResultsetODBC = Nothing
         Set QueryODBC = Nothing
      End If      
      Exit sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit sub
   End Sub
   
   sub setRecord(wTableName As String, wRequest As String,wTraitement As String, wnbForceClose As Boolean)      
      Dim SQLRequest As string      
      On Error GoTo CatchError      
      nbQueryIsOk = false
      nbNumRow = 0
      nbNumColumn = 0
      nbNumParameter = 0
      If Trim(wTableName) = "" Then
         Error 9999,"wTableName is Empty"
         Exit Sub
      End If   
      If Trim(wRequest) = "" Then
         Error 9999,"wRequest is Empty"
         Exit Sub
      End If      
      Select Case UCase(Trim(wTraitement))
      Case "A","ADD"
         SQLRequest = "INSERT INTO " + wTableName + " VALUES(" + wRequest + ")"   
      Case "U","UPDATE"
         SQLRequest = "UPDATE " + wTableName + " SET " + wRequest
      Case "D","DEL","DELETE"
         SQLRequest = "DELETE FROM " + wTableName +  " Where " + wRequest
      Case ""
         Error 9999,"wTraitement is Empty"
         Exit Sub
      Case Else
         Error 9999,"wTraitement unknow : "+wTraitement
         Exit Sub
      End Select
      QueryODBC.Sql = SQLRequest
      If QueryODBC.Geterror() <> DBstsSUCCESS Then
         Error QueryODBC.Geterror,QueryODBC.Getextendederrormessage()
         Exit Sub
      End If      
      If ResultsetODBC.Execute = False Then
         Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
         Exit Sub
      ElseIf ResultsetODBC.Geterror() <> DBstsSUCCESS Then
         Error ResultsetODBC.Geterror,ResultsetODBC.Getextendederrormessage()
         Exit Sub
      End If      
      nbQueryIsOk = ResultsetODBC.Isresultsetavailable      
      If nbQueryIsOk = True Then
         Resultsetodbc.Lastrow      
         nbNumRow = ResultsetODBC.Numrows()
         nbNumColumn = ResultsetODBC.Numcolumns()
         nbNumParameter = ResultsetODBC.Numparameters()
         Resultsetodbc.Firstrow
      Else
         nbNumRow = 0
         nbNumColumn = 0
         nbNumParameter = 0
      End If      
      If nbAutoClose = True Or wnbForceClose = True Then
         If ResultsetODBC Is Nothing Then
            Call ResultsetODBC.Close(DB_CLOSE)
         End If
      End if
      Exit Sub
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      nbQueryIsOk = False
      Exit sub
   End sub
   Function getODBCQuery As Odbcquery
      On Error GoTo CatchError
      Set getODBCQuery = QueryODBC
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   Function getODBCResultSet As Odbcresultset
      On Error GoTo CatchError
      Set getODBCResultSet = ResultsetODBC
      Exit Function
CatchError:
      ErrorMessage = ErrorTraitementMessage()
      MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)+ErrorMessage,16," ERREUR !"
      ErrorMessage = ""
      Call ErrorTraitement()   
      Exit Function
   End Function
   
   
   Private Sub ErrorTraitement()
      On Error Resume Next
      If Not ResultsetODBC Is Nothing Then
         Call ResultsetODBC.Close(DB_CLOSE)
      End If
      On Error GoTo CatchError
      Exit sub
CatchError:
      Msgbox "("+Structure_Log+" : "+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
      Exit sub
   End Sub
   Private function ErrorTraitementMessage()
      On Error Resume Next
      ErrorTraitementMessage = ""      
      If Not QueryODBC Is Nothing then
         If QueryODBC.Geterror <> DBstsSUCCESS Then
            ErrorTraitementMessage = Chr(10)+QueryODBC.GetExtendedErrorMessage(QueryODBC.Geterror)+" ("+CStr(QueryODBC.Geterror)+")"
         End If
      end If
      if Not ResultsetODBC Is Nothing then
         If ResultsetODBC.Geterror <> DBstsSUCCESS Then
            ErrorTraitementMessage = Trim(ErrorTraitementMessage)+Chr(10)+ResultsetODBC.GetExtendedErrorMessage(ResultsetODBC.Geterror)+" ("+CStr(ResultsetODBC.Geterror)+")"
         End If
      End if      
      On Error GoTo CatchError
      Exit Function
CatchError:
      Msgbox "("+Structure_Log+" : "+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
      ErrorTraitementMessage = ""
      Exit Function
   End Function
End Class
Sub Initialize()
   
End Sub

Sub Terminate()
   
End Sub
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Retour vers Accès aux autres base de données externe