VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "CSQL" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False '============================================================================== ' ' File : SQL.cls ' Date : 20.02.1999 ' Version: 1.00 ' Author : Andreas Schmidt, lindner&partner ' '============================================================================== ' ' *shared* ' ' Abstraktion von ADODB.Command ' '============================================================================== ' ' History: ' ' Date : 20.02.1999 ' Version: 1.00 ' Author : Andreas Schmidt, lindner&partner ' ' Erste Version. ' '============================================================================== Option Explicit ' Private Member ' -------------- Dim m_connection As ADODB.connection ' Connection der Standarddatenbank übernehmen ' Private Sub Class_Initialize() Set m_connection = g_App.getDB().getConnection() End Sub '------------------------------------------------------------------------------ ' Öffentliche Funktionalität '------------------------------------------------------------------------------ ' @param DB Referenz auf eine CDBAccess ' Public Sub setDB(db As CDBAccess) Set m_connection = db.getConnection() End Sub ' @param connection Referenz auf eine ADODB.Connection ' Public Sub setConnection(connection As ADODB.connection) Set m_connection = connection End Sub ' @param s String, der in ein SQL-Statement gesetzt werden soll ' @param bTicks true = String soll von einfachen Hochkommas umschlossen werden ' Public Function stringToSQLString(s As String, Optional bTicks As Boolean) As String stringToSQLString = modSQL.stringToSQLString(s, bTicks) End Function ' @param dDateTime Datum, das in ein SQL-Statement gesetzt werden soll ' Public Function dateToSQLString(dDateTime As Date) As String dateToSQLString = modSQL.dateToSQLString(dDateTime) End Function ' @param d Double, das in ein SQL-Statement gesetzt werden soll ' Public Function doubleToSQLString(d As Double) As String doubleToSQLString = modSQL.doubleToSQLString(d) End Function ' SQL-String zur Ausführung bringen ' Public Function executeSQL(sSQL As String, Optional ByRef lngRecordsaffected As Long) As Boolean Dim errLoop As ADODB.Error Dim cmd As New ADODB.Command On Error GoTo executeSQLErr Set cmd.ActiveConnection = getConnection() cmd.CommandText = sSQL cmd.Execute lngRecordsaffected executeSQL = True Exit Function executeSQLErr: If getConnection().Errors.Count > 0 Then For Each errLoop In getConnection().Errors Call showError("ExecuteSQL", errLoop.Description & " (" & errLoop.Number & ")") Next errLoop End If Exit Function End Function ' Transaktion beginnen ' Public Sub beginTrans() Dim lLevel As Long On Error GoTo beginTransErr lLevel = getConnection().beginTrans Exit Sub beginTransErr: Call showError("beginTrans") Exit Sub End Sub ' Transaktion abschliessen ' Public Sub commit() getConnection().CommitTrans End Sub ' Transaktion abbrechen ' Public Sub rollback() getConnection().RollbackTrans End Sub '------------------------------------------------------------------------------ ' Private Funktionalität '------------------------------------------------------------------------------ ' @return Referenz auf die zu verwendene ADODB.connection ' Private Function getConnection() As ADODB.connection Set getConnection = m_connection End Function ' Helper für Fehlerausgaben ' ' @param sMethod Name der aufrufenden Methode ' @param sInfo optionaler Hinweistext ' Private Sub showError(sMethod As String, Optional sInfo As String) Call modError.showError("CSQL." + sMethod, sInfo) End Sub