laatzen/Pruef2000/source/Shared/universal/SQL.cls
2021-10-01 11:11:04 +02:00

159 lines
4.0 KiB
OpenEdge ABL

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