Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/LibreOffice/wizards/source/access2base/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 23 kB image not shown  

SSL DataDef.xba   Sprache: unbekannt

 
rahmenlose Ansicht.xba DruckansichtUnknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="DataDef" script:language="StarBasic">
REM =======================================================================================================================
REM ===     The Access2Base library is a part of the LibreOffice project.         ===
REM ===     Full documentation is available on http://www.access2base.com         ===
REM =======================================================================================================================

Option Compatible
Option ClassModule

Option Explicit

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS ROOT FIELDS                               ---
REM -----------------------------------------------------------------------------------------------------------------------

Private _Type     As String    ' Must be TABLEDEF or QUERYDEF
Private _This     As Object    ' Workaround for absence of This builtin function
Private _Parent     As Object
Private _Name     As String    ' For tables: [[Catalog.]Schema.]Table
Private _ParentDatabase   As Object
Private _ReadOnly    As Boolean
Private Table     As Object    ' com.sun.star.sdb.dbaccess.ODBTable
Private CatalogName    As String
Private SchemaName    As String
Private TableName    As String
Private Query     As Object    ' com.sun.star.sdb.dbaccess.OQuery
Private TableDescriptor   As Object    ' com.sun.star.sdb.dbaccess.ODBTable
Private TableFieldsCount  As Integer
Private TableKeysCount   As Integer

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CONSTRUCTORS / DESTRUCTORS                            ---
REM -----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Initialize()
 _Type = ""
 Set _This = Nothing
 Set _Parent = Nothing
 _Name = ""
 Set _ParentDatabase = Nothing
 _ReadOnly = False
 Set Table = Nothing
 CatalogName = ""
 SchemaName = ""
 TableName = ""
 Set Query = Nothing
 Set TableDescriptor = Nothing
 TableFieldsCount = 0
 TableKeysCount = 0
End Sub  ' Constructor

REM -----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Terminate()
 On Local Error Resume Next
 Call Class_Initialize()
End Sub  ' Destructor

REM -----------------------------------------------------------------------------------------------------------------------
Public Sub Dispose()
 Call Class_Terminate()
End Sub  ' Explicit destructor

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS GET/LET/SET PROPERTIES                           ---
REM -----------------------------------------------------------------------------------------------------------------------

Property Get Name() As String
 Name = _PropertyGet("Name")
End Property  ' Name (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get ObjectType() As String
 ObjectType = _PropertyGet("ObjectType")
End Property  ' ObjectType (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get SQL() As Variant
 SQL = _PropertyGet("SQL")
End Property  ' SQL (get)

Property Let SQL(ByVal pvValue As Variant)
 Call _PropertySet("SQL", pvValue)
End Property  ' SQL (set)

REM -----------------------------------------------------------------------------------------------------------------------
Public Function pType() As Integer
 pType = _PropertyGet("Type")
End Function  ' Type (get)

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS METHODS                                ---
REM -----------------------------------------------------------------------------------------------------------------------

Public Function CreateField(ByVal Optional pvFieldName As Variant _
        , ByVal optional pvType As Variant _
        , ByVal optional pvSize As Variant _
        , ByVal optional pvAttributes As Variant _
        ) As Object
'Return a Field object
Const cstThisSub = "TableDef.CreateField"
 Utils._SetCalledSub(cstThisSub)

 If _ErrorHandler() Then On Local Error Goto Error_Function

Dim oTable As Object, oNewField As Object, oKeys As Object, oPrimaryKey As Object, oColumn As Object
Const cstMaxKeyLength = 30

 CreateField = Nothing
 If _ParentDatabase._DbConnect <> DBCONNECTBASE Then Goto Error_NotApplicable
 If IsMissing(pvFieldName) Then Call _TraceArguments()
 If Not Utils._CheckArgument(pvFieldName, 1, vbString) Then Goto Exit_Function
 If pvFieldName = "" Then Call _TraceArguments()
 If IsMissing(pvType) Then Call _TraceArguments()
 If Not Utils._CheckArgument(pvType, 1, Utils._AddNumeric( _
      dbInteger, dbLong, dbBigInt, dbFloat, vbSingle, dbDouble _
      , dbNumeric, dbDecimal, dbText, dbChar, dbMemo _
      , dbDate, dbTime, dbTimeStamp _
      , dbBinary, dbVarBinary, dbLongBinary, dbBoolean _
     )) Then Goto Exit_Function
 If IsMissing(pvSize) Then pvSize = 0
 If pvSize < 0 Then pvSize = 0
 If Not Utils._CheckArgument(pvSize, 1, Utils._AddNumeric()) Then Goto Exit_Function
 If IsMissing(pvAttributes) Then pvAttributes = 0
 If Not Utils._CheckArgument(pvAttributes, 1, Utils._AddNumeric(), Array(0, dbAutoIncrField)) Then Goto Exit_Function

 If _Type <> OBJTABLEDEF Then Goto Error_NotApplicable
 If IsNull(Table) And IsNull(TableDescriptor) Then Goto Error_NotApplicable
 
 If _ReadOnly Then Goto Error_NoUpdate

 Set oNewField = New Field
 With oNewField
  ._This = oNewField
  ._Name = pvFieldName
  ._ParentName = _Name
  ._ParentType = OBJTABLEDEF
  If IsNull(Table) Then Set oTable = TableDescriptor Else Set oTable = Table
  Set .Column = oTable.Columns.createDataDescriptor()
 End With
 With oNewField.Column
  .Name = pvFieldName
  Select Case pvType
   Case dbInteger    : .Type = com.sun.star.sdbc.DataType.TINYINT
   Case dbLong     : .Type = com.sun.star.sdbc.DataType.INTEGER
   Case dbBigInt    : .Type = com.sun.star.sdbc.DataType.BIGINT
   Case dbFloat    : .Type = com.sun.star.sdbc.DataType.FLOAT
   Case dbSingle    : .Type = com.sun.star.sdbc.DataType.REAL
   Case dbDouble    : .Type = com.sun.star.sdbc.DataType.DOUBLE
   Case dbNumeric, dbCurrency : .Type = com.sun.star.sdbc.DataType.NUMERIC
   Case dbDecimal    : .Type = com.sun.star.sdbc.DataType.DECIMAL
   Case dbText     : .Type = com.sun.star.sdbc.DataType.CHAR
   Case dbChar     : .Type = com.sun.star.sdbc.DataType.VARCHAR
   Case dbMemo     : .Type = com.sun.star.sdbc.DataType.LONGVARCHAR
   Case dbDate     : .Type = com.sun.star.sdbc.DataType.DATE
   Case dbTime     : .Type = com.sun.star.sdbc.DataType.TIME
   Case dbTimeStamp   : .Type = com.sun.star.sdbc.DataType.TIMESTAMP
   Case dbBinary    : .Type = com.sun.star.sdbc.DataType.BINARY
   Case dbVarBinary   : .Type = com.sun.star.sdbc.DataType.VARBINARY
   Case dbLongBinary   : .Type = com.sun.star.sdbc.DataType.LONGVARBINARY
   Case dbBoolean    : .Type = com.sun.star.sdbc.DataType.BOOLEAN
  End Select
  .Precision = Int(pvSize)
  If pvType = dbNumeric Or pvType = dbDecimal Or pvType = dbCurrency Then .Scale = Int(pvSize * 10) - Int(pvSize) * 10
  .IsNullable = com.sun.star.sdbc.ColumnValue.NULLABLE
  If Utils._hasUNOProperty(oNewField.Column, "CatalogName") Then .CatalogName = CatalogName
  If Utils._hasUNOProperty(oNewField.Column, "SchemaName") Then .SchemaName = SchemaName
  If Utils._hasUNOProperty(oNewField.Column, "TableName") Then .TableName = TableName
  If Not IsNull(TableDescriptor) Then TableFieldsCount = TableFieldsCount + 1
  If pvAttributes = dbAutoIncrField Then
   If Not IsNull(Table) Then Goto Error_Sequence   ' Do not accept adding an AutoValue field when table exists
   Set oKeys = oTable.Keys
   Set oPrimaryKey = oKeys.createDataDescriptor()
   Set oColumn = oPrimaryKey.Columns.createDataDescriptor()
   oColumn.Name = pvFieldName
   oColumn.CatalogName = CatalogName
   oColumn.SchemaName = SchemaName
   oColumn.TableName = TableName
   oColumn.IsAutoIncrement = True
   oColumn.IsNullable = com.sun.star.sdbc.ColumnValue.NO_NULLS
   oPrimaryKey.Columns.appendByDescriptor(oColumn)
   oPrimaryKey.Name = Left("PK_" & Join(Split(TableName, " "), "_") & "_" & Join(Split(pvFieldName, " "), "_"), cstMaxKeyLength)
   oPrimaryKey.Type = com.sun.star.sdbcx.KeyType.PRIMARY
   oKeys.appendByDescriptor(oPrimaryKey)
   .IsAutoIncrement = True
   .IsNullable = com.sun.star.sdbc.ColumnValue.NO_NULLS
   oColumn.dispose()
  Else
   .IsAutoIncrement = False
  End If
 End With
 oTable.Columns.appendByDescriptor(oNewfield.Column)
 
 Set CreateField = oNewField

Exit_Function:
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 GoTo Exit_Function
Error_NotApplicable:
 TraceError(TRACEFATAL, ERRMETHOD, Utils._CalledSub(), 0, 1, cstThisSub)
 Goto Exit_Function
Error_Sequence:
 TraceError(TRACEFATAL, ERRFIELDCREATION, Utils._CalledSub(), 0, 1, pvFieldName)
 Goto Exit_Function
Error_NoUpdate:
 TraceError(TRACEFATAL, ERRNOTUPDATABLE, Utils._CalledSub(), 0)
 Goto Exit_Function
End Function ' CreateField V1.1.0

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Execute(ByVal Optional pvOptions As Variant) As Boolean
'Execute a stored query. The query must be an ACTION query.

Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".Execute"
 Utils._SetCalledSub(cstThisSub)
 On Local Error Goto Error_Function
Const cstNull = -1
 Execute = False
 If _Type <> OBJQUERYDEF Then Goto Trace_Method
 If IsMissing(pvOptions) Then
  pvOptions = cstNull
 Else
  If Not Utils._CheckArgument(pvOptions, 1, Utils._AddNumeric(), dbSQLPassThrough) Then Goto Exit_Function
 End If
 
 'Check action query
Dim oStatement As Object, vResult As Variant
Dim iType As Integer, sSql As String
 iType = pType
 If ( (iType And DBQAction) = 0 ) And ( (iType And DBQDDL) = 0 ) Then Goto Trace_Action

 'Execute action query
 Set oStatement = _ParentDatabase.Connection.createStatement()
 sSql = Query.Command
 If pvOptions = dbSQLPassThrough Then oStatement.EscapeProcessing = False _
         Else oStatement.EscapeProcessing = Query.EscapeProcessing
 On Local Error Goto SQL_Error
 vResult = oStatement.executeUpdate(_ParentDatabase._ReplaceSquareBrackets(sSql))
 On Local Error Goto Error_Function
 
 Execute = True

Exit_Function:
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Trace_Method:
 TraceError(TRACEFATAL, ERRMETHOD, cstThisSub, 0, , cstThisSub)
 Goto Exit_Function
Trace_Action:
 TraceError(TRACEFATAL, ERRNOTACTIONQUERY, cstThisSub, 0, , _Name)
 Goto Exit_Function
SQL_Error:
 TraceError(TRACEFATAL, ERRSQLSTATEMENT, Utils._CalledSub(), 0, , sSql)
 Goto Exit_Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 GoTo Exit_Function
End Function  ' Execute V1.1.0

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Fields(ByVal Optional pvIndex As Variant) As Object

 If _ErrorHandler() Then On Local Error Goto Error_Function
Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".Fields"
 Utils._SetCalledSub(cstThisSub)

 Set Fields = Nothing
 If Not IsMissing(pvIndex) Then
  If Not Utils._CheckArgument(pvIndex, 1, Utils._AddNumeric(vbString)) Then Goto Exit_Function
 End If
   
Dim sObjects() As String, sObjectName As String, oObject As Object
Dim i As Integer, bFound As Boolean, oFields As Object

 If _Type = OBJTABLEDEF Then Set oFields = Table.getColumns() Else Set oFields = Query.getColumns()
 sObjects = oFields.ElementNames()
 Select Case True
  Case IsMissing(pvIndex)
   Set oObject = New Collect
   Set oObject._This = oObject
   oObject._CollType = COLLFIELDS
   Set oObject._Parent = _This
   oObject._Count = UBound(sObjects) + 1
   Goto Exit_Function
  Case VarType(pvIndex) = vbString
   bFound = False
  ' Check existence of object and find its exact (case-sensitive) name
   For i = 0 To UBound(sObjects)
    If UCase(pvIndex) = UCase(sObjects(i)) Then
     sObjectName = sObjects(i)
     bFound = True
     Exit For
    End If
   Next i
   If Not bFound Then Goto Trace_NotFound
  Case Else  ' pvIndex is numeric
   If pvIndex < 0 Or pvIndex > UBound(sObjects) Then Goto Trace_IndexError
   sObjectName = sObjects(pvIndex)
 End Select

 Set oObject = New Field
 Set oObject._This = oObject
 oObject._Name = sObjectName
 Set oObject.Column = oFields.getByName(sObjectName)
 oObject._ParentName = _Name
 oObject._ParentType = _Type
 Set oObject._ParentDatabase = _ParentDatabase

Exit_Function:
 Set Fields = oObject
 Set oObject = Nothing
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 GoTo Exit_Function
Trace_NotFound:
 TraceError(TRACEFATAL, ERROBJECTNOTFOUND, Utils._CalledSub(), 0, , Array(_GetLabel("FIELD"), pvIndex))
 Goto Exit_Function
Trace_IndexError:
 TraceError(TRACEFATAL, ERRCOLLECTION, Utils._CalledSub(), 0)
 Goto Exit_Function
End Function  ' Fields

REM -----------------------------------------------------------------------------------------------------------------------
Public Function getProperty(Optional ByVal pvProperty As Variant) As Variant
' Return property value of psProperty property name

Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".getProperty"
 Utils._SetCalledSub(cstThisSub)
 If IsMissing(pvProperty) Then Call _TraceArguments()
 getProperty = _PropertyGet(pvProperty)
 Utils._ResetCalledSub(cstThisSub)
 
End Function  ' getProperty

REM -----------------------------------------------------------------------------------------------------------------------
Public Function hasProperty(ByVal Optional pvProperty As Variant) As Boolean
' Return True if object has a valid property called pvProperty (case-insensitive comparison !)

Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".hasProperty"
 Utils._SetCalledSub(cstThisSub)
 If IsMissing(pvProperty) Then hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList()) Else hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList(), pvProperty)
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
 
End Function ' hasProperty

REM -----------------------------------------------------------------------------------------------------------------------
Public Function OpenRecordset(ByVal Optional pvType As Variant, ByVal Optional pvOptions As Variant, ByVal Optional pvLockEdit As Variant) As Object
'Return a Recordset object based on current table- or querydef object

Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".OpenRecordset"
 Utils._SetCalledSub(cstThisSub)
Const cstNull = -1
Dim lCommandType As Long, sCommand As String, oObject As Object,bPassThrough As Boolean
Dim iType As Integer, iOptions As Integer, iLockEdit As Integer


 Set oObject = Nothing
 If VarType(pvType) = vbError Then
  iType = cstNull
 ElseIf IsMissing(pvType) Then
  iType = cstNull
 Else
  If Not Utils._CheckArgument(pvType, 1, Utils._AddNumeric(), Array(cstNull, dbOpenForwardOnly)) Then Goto Exit_Function
  iType = pvType
 End If
 If VarType(pvOptions) = vbError Then
  iOptions = cstNull
 ElseIf IsMissing(pvOptions) Then
  iOptions = cstNull
 Else
  If Not Utils._CheckArgument(pvOptions, 2, Utils._AddNumeric(), Array(cstNull, dbSQLPassThrough)) Then Goto Exit_Function
  iOptions = pvOptions
 End If
 If VarType(pvLockEdit) = vbError Then
  iLockEdit = cstNull
 ElseIf IsMissing(pvLockEdit) Then
  iLockEdit = cstNull
 Else
  If Not Utils._CheckArgument(pvLockEdit, 3, Utils._AddNumeric(), Array(cstNull, dbReadOnly)) Then Goto Exit_Function
  iLockEdit = pvLockEdit
 End If

 Select Case _Type
  Case OBJTABLEDEF
   lCommandType = com.sun.star.sdb.CommandType.TABLE
   sCommand = _Name
  Case OBJQUERYDEF
   lCommandType = com.sun.star.sdb.CommandType.QUERY
   sCommand = _Name
   If iOptions = dbSQLPassThrough Then bPassThrough = True Else bPassThrough = Not Query.EscapeProcessing
 End Select
 
 Set oObject = New Recordset
 With oObject
  ._CommandType = lCommandType
  ._Command = sCommand
  ._ParentName = _Name
  ._ParentType = _Type
  ._ForwardOnly = ( iType = dbOpenForwardOnly )
  ._PassThrough = bPassThrough
  ._ReadOnly = ( (iLockEdit = dbReadOnly) Or _ReadOnly )
  Set ._ParentDatabase = _ParentDatabase
  Set ._This = oObject
  Call ._Initialize()
 End With
 With _ParentDatabase
  .RecordsetMax = .RecordsetMax + 1
  oObject._Name = Format(.RecordsetMax, "0000000")
  .RecordsetsColl.Add(oObject, UCase(oObject._Name))
 End With
 
 If Not ( oObject._BOF And oObject._EOF ) Then oObject.MoveFirst()  ' Do nothing if resultset empty

Exit_Function:
 Set OpenRecordset = oObject
 Set oObject = Nothing
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub, Erl)
 Set oObject = Nothing
 GoTo Exit_Function
End Function ' OpenRecordset V1.1.0

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Properties(ByVal Optional pvIndex As Variant) As Variant
' Return
'  a Collection object if pvIndex absent
'  a Property object otherwise

Dim vProperty As Variant, vPropertiesList() As Variant, sObject As String
Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".Properties"
 Utils._SetCalledSub(cstThisSub)
 vPropertiesList = _PropertiesList()
 sObject = Utils._PCase(_Type)
 If IsMissing(pvIndex) Then
  vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList)
 Else
  vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList, pvIndex)
  vProperty._Value = _PropertyGet(vPropertiesList(pvIndex))
 End If
 Set vProperty._ParentDatabase = _ParentDatabase
 
Exit_Function:
 Set Properties = vProperty
 Utils._ResetCalledSub(cstThisSub)
 Exit Function
End Function ' Properties

REM -----------------------------------------------------------------------------------------------------------------------
Public Function setProperty(ByVal Optional psProperty As String, ByVal Optional pvValue As Variant) As Boolean
' Return True if property setting OK
Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type) & ".setProperty"
 Utils._SetCalledSub(cstThisSub)
 setProperty = _PropertySet(psProperty, pvValue)
 Utils._ResetCalledSub(cstThisSub)
End Function

REM -----------------------------------------------------------------------------------------------------------------------
REM --- PRIVATE FUNCTIONS                               ---
REM -----------------------------------------------------------------------------------------------------------------------

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertiesList() As Variant

 Select Case _Type
  Case OBJTABLEDEF
   _PropertiesList = Array("Name", "ObjectType")
  Case OBJQUERYDEF
   _PropertiesList = Array("Name", "ObjectType", "SQL", "Type")
  Case Else
 End Select

End Function ' _PropertiesList

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertyGet(ByVal psProperty As String) As Variant
' Return property value of the psProperty property name

 If _ErrorHandler() Then On Local Error Goto Error_Function
Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type)
 Utils._SetCalledSub(cstThisSub & ".get" & psProperty)
Dim sSql As String, sVerb As String, iType As Integer
 _PropertyGet = EMPTY
 If Not hasProperty(psProperty) Then Goto Trace_Error
 
 Select Case UCase(psProperty)
  Case UCase("Name")
   _PropertyGet = _Name
  Case UCase("ObjectType")
   _PropertyGet = _Type
  Case UCase("SQL")
   _PropertyGet = Query.Command
  Case UCase("Type")
   iType = 0
   sSql = Utils._Trim(UCase(Query.Command))
   sVerb = Split(sSql, " ")(0)
   If sVerb = "SELECT" Then iType = iType + dbQSelect
   If sVerb = "SELECT" And InStr(sSql, " INTO ") > 0 _
   Or sVerb = "CREATE" And InStr(sSql, " TABLE ") > 0 _
    Then iType = iType + dbQMakeTable
   If sVerb = "SELECT" And InStr(sSql, " UNION ") > 0 Then iType = iType + dbQSetOperation
   If Not Query.EscapeProcessing Then iType = iType + dbQSQLPassThrough
   If sVerb = "INSERT" Then iType = iType + dbQAppend
   If sVerb = "DELETE" Then iType = iType + dbQDelete
   If sVerb = "UPDATE" Then iType = iType + dbQUpdate
   If sVerb = "CREATE" _
    Or sVerb = "ALTER" _
    Or sVerb = "DROP" _
    Or sVerb = "RENAME" _
    Or sVerb = "TRUNCATE" _
     Then iType = iType + dbQDDL
   ' dbQAction implied by dbQMakeTable, dbQAppend, dbQDelete and dbQUpdate
   ' To check Type use: If (iType And dbQxxx) <> 0 Then ...
   _PropertyGet = iType
  Case Else
   Goto Trace_Error
 End Select
 
Exit_Function:
 Utils._ResetCalledSub(cstThisSub & ".get" & psProperty)
 Exit Function
Trace_Error:
 TraceError(TRACEWARNING, ERRPROPERTY, Utils._CalledSub(), 0, , psProperty)
 _PropertyGet = EMPTY
 Goto Exit_Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub & "._PropertyGet", Erl)
 _PropertyGet = EMPTY
 GoTo Exit_Function
End Function  ' _PropertyGet

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertySet(ByVal psProperty As String, ByVal pvValue As Variant) As Boolean
' Return True if property setting OK

 If _ErrorHandler() Then On Local Error Goto Error_Function
Dim cstThisSub As String
 cstThisSub = Utils._PCase(_Type)
 Utils._SetCalledSub(cstThisSub & ".set" & psProperty)

'Execute
Dim iArgNr As Integer

 _PropertySet = True
 Select Case UCase(_A2B_.CalledSub)
  Case UCase("setProperty")      : iArgNr = 3
  Case UCase(cstThisSub & ".setProperty")   : iArgNr = 2
  Case UCase(cstThisSub & ".set" & psProperty) : iArgNr = 1
 End Select
 
 If Not hasProperty(psProperty) Then Goto Trace_Error
 
 If _ReadOnly Then Goto Error_NoUpdate

 Select Case UCase(psProperty)
  Case UCase("SQL")
   If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
   Query.Command = pvValue
  Case Else
   Goto Trace_Error
 End Select
 
Exit_Function:
 Utils._ResetCalledSub(cstThisSub & ".set" & psProperty)
 Exit Function
Trace_Error:
 TraceError(TRACEFATAL, ERRPROPERTY, Utils._CalledSub(), 0, , psProperty)
 _PropertySet = False
 Goto Exit_Function
Trace_Error_Value:
 TraceError(TRACEFATAL, ERRPROPERTYVALUE, Utils._CalledSub(), 0, 1, Array(pvValue, psProperty))
 _PropertySet = False
 Goto Exit_Function
Error_NoUpdate:
 TraceError(TRACEFATAL, ERRNOTUPDATABLE, Utils._CalledSub(), 0)
 Goto Exit_Function
Error_Function:
 TraceError(TRACEABORT, Err, cstThisSub & "._PropertySet", Erl)
 _PropertySet = False
 GoTo Exit_Function
End Function   ' _PropertySet

</script:module>

[ Verzeichnis aufwärts0.49unsichere Verbindung  ]