<?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="SubForm" 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				&apos;	Must be SUBFORM
Private	_Shortcut				As String
Private	_Name					As String
Private _DocEntry				As Integer
Private _DbEntry				As Integer
Private _OrderBy				As String
Public	ParentComponent			As Object				&apos;	com.sun.star.text.TextDocument
Public	DatabaseForm			As Object				&apos;	com.sun.star.form.component.DataForm and com.sun.star.sdb.ResultSet (a.o.)

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CONSTRUCTORS / DESTRUCTORS						        														---
REM -----------------------------------------------------------------------------------------------------------------------
Private Sub Class_Initialize()
	_Type = OBJSUBFORM
	_Shortcut = &quot;&quot;
	_Name = &quot;&quot;
	_DocEntry = -1
	_DbEntry = -1
	_OrderBy = &quot;&quot;
	Set ParentComponent = Nothing
	Set DatabaseForm = Nothing
End Sub		&apos;	Constructor

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

REM -----------------------------------------------------------------------------------------------------------------------
Public Sub Dispose()
	Call Class_Terminate()
End Sub		&apos;	Explicit destructor

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS GET/LET/SET PROPERTIES					        														---
REM -----------------------------------------------------------------------------------------------------------------------
Property Get AllowAdditions() As Variant
	AllowAdditions = _PropertyGet(&quot;AllowAdditions&quot;)
End Property	&apos;	AllowAdditions (get)

Property Let AllowAdditions(ByVal pvValue As Variant)
	Call _PropertySet(&quot;AllowAdditions&quot;, pvValue)
End Property	&apos;	AllowAdditions (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get AllowDeletions() As Variant
	AllowDeletions = _PropertyGet(&quot;AllowDeletions&quot;)
End Property	&apos;	AllowDeletions (get)

Property Let AllowDeletions(ByVal pvValue As Variant)
	Call _PropertySet(&quot;AllowDeletions&quot;, pvValue)
End Property	&apos;	AllowDeletions (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get AllowEdits() As Variant
	AllowEdits = _PropertyGet(&quot;AllowEdits&quot;)
End Property	&apos;	AllowEdits (get)

Property Let AllowEdits(ByVal pvValue As Variant)
	Call _PropertySet(&quot;AllowEdits&quot;, pvValue)
End Property	&apos;	AllowEdits (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get CurrentRecord() As Variant
	CurrentRecord = _PropertyGet(&quot;CurrentRecord&quot;)
End Property	&apos;	CurrentRecord (get)

Property Let CurrentRecord(ByVal pvValue As Variant)
	Call _PropertySet(&quot;CurrentRecord&quot;, pvValue)
End Property	&apos;	CurrentRecord (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get Filter() As Variant
	Filter = _PropertyGet(&quot;Filter&quot;)
End Property	&apos;	Filter (get)

Property Let Filter(ByVal pvValue As Variant)
	Call _PropertySet(&quot;Filter&quot;, pvValue)
End Property	&apos;	Filter (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get FilterOn() As Variant
	FilterOn = _PropertyGet(&quot;FilterOn&quot;)
End Property	&apos;	FilterOn (get)

Property Let FilterOn(ByVal pvValue As Variant)
	Call _PropertySet(&quot;FilterOn&quot;, pvValue)
End Property	&apos;	FilterOn (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get LinkChildFields(ByVal Optional pvIndex As Variant) As Variant
	If IsMissing(pvIndex) Then LinkChildFields = _PropertyGet(&quot;LinkChildFields&quot;) Else LinkChildFields = _PropertyGet(&quot;LinkChildFields&quot;, pvIndex)
End Property		&apos;	LinkChildFields (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get LinkMasterFields(ByVal Optional pvIndex As Variant) As Variant
	If IsMissing(pvIndex) Then LinkMasterFields = _PropertyGet(&quot;LinkMasterFields&quot;) Else LinkMasterFields = _PropertyGet(&quot;LinkMasterFields&quot;, pvIndex)
End Property		&apos;	LinkMasterFields (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get Name() As String
	Name = _PropertyGet(&quot;Name&quot;)
End Property	&apos;	Name (get)

Public Function pName() As String		&apos;	For compatibility with &lt; V0.9.0
	pName = _PropertyGet(&quot;Name&quot;)
End Function	&apos;	pName (get)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get ObjectType() As String
	ObjectType = _PropertyGet(&quot;ObjectType&quot;)
End Property		&apos;	ObjectType (get)

REM -----------------------------------------------------------------------------------------------------------------------
Public Function OptionGroup(ByVal Optional pvGroupName As Variant) As Variant
&apos;	Return either an error or an object of type OPTIONGROUP based on its name

Const cstThisSub = &quot;SubForm.OptionGroup&quot;
Dim ogGroup As Object
	Utils._SetCalledSub(cstThisSub)
	If IsMissing(pvGroupName) Then Call _TraceArguments()
	If _ErrorHandler() Then On Local Error Goto Error_Function
	
	Set ogGroup = _OptionGroup(pvGroupName, CTLPARENTISSUBFORM, ParentComponent, DatabaseForm)
	If Not IsNull(ogGroup) Then
		ogGroup._DocEntry = _DocEntry
		ogGroup._DbEntry = _DbEntry
	End If
	Set OptionGroup = ogGroup
	
Exit_Function:
	Utils._ResetCalledSub(cstThisSub)
	Exit Function
Error_Function:
	TraceError(TRACEABORT, Err, cstThisSub, Erl)
	GoTo Exit_Function
End Function		&apos;	OptionGroup	V1.1.0

REM -----------------------------------------------------------------------------------------------------------------------
Property Get OrderBy() As Variant
	OrderBy = _PropertyGet(&quot;OrderBy&quot;)
End Property	&apos;	OrderBy (get) V1.2.0

Property Let OrderBy(ByVal pvValue As Variant)
	Call _PropertySet(&quot;OrderBy&quot;, pvValue)
End Property	&apos;	OrderBy (set)

REM -----------------------------------------------------------------------------------------------------------------------
Property Get OrderByOn() As Variant
	OrderByOn = _PropertyGet(&quot;OrderByOn&quot;)
End Property	&apos;	OrderByOn (get) V1.2.0

Property Let OrderByOn(ByVal pvValue As Variant)
	Call _PropertySet(&quot;OrderByOn&quot;, pvValue)
End Property	&apos;	OrderByOn (set)

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Parent() As Object

	Utils._SetCalledSub(&quot;SubForm.getParent&quot;)
	On Error Goto Error_Function

	Set Parent = PropertiesGet._ParentObject(_Shortcut)
	
Exit_Function:
	Utils._ResetCalledSub(&quot;SubForm.getParent&quot;)
	Exit Function
Error_Function:
	TraceError(TRACEABORT, Err, &quot;SubForm.getParent&quot;, Erl)
	Set Parent = Nothing
	GoTo Exit_Function
End Function		&apos;	Parent

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

Dim vProperty As Variant, vPropertiesList() As Variant, sObject As String
	vPropertiesList = _PropertiesList()
	sObject = Utils._PCase(_Type)
	If IsMissing(pvIndex) Then
		vProperty = PropertiesGet._Properties(sObject, _Name, vPropertiesList)
	Else
		vProperty = PropertiesGet._Properties(sObject, _Name, vPropertiesList, pvIndex)
		vProperty._Value = _PropertyGet(vPropertiesList(pvIndex))
	End If
	
Exit_Function:
	Set Properties = vProperty
	Exit Function
End Function	&apos;	Properties

REM -----------------------------------------------------------------------------------------------------------------------
Property Get Recordset() As Object
	Recordset = _PropertyGet(&quot;Recordset&quot;)
End Property		&apos;	Recordset (get)	V0.9.5

REM -----------------------------------------------------------------------------------------------------------------------
Property Get RecordSource() As Variant
	RecordSource = _PropertyGet(&quot;RecordSource&quot;)
End Property	&apos;	RecordSource (get)

Property Let RecordSource(ByVal pvValue As Variant)
	Call _PropertySet(&quot;RecordSource&quot;, pvValue)
End Property	&apos;	RecordSource (set)

REM -----------------------------------------------------------------------------------------------------------------------
REM --- CLASS METHODS	 								        														---
REM -----------------------------------------------------------------------------------------------------------------------
Public Function Controls(Optional ByVal pvIndex As Variant) As Variant
&apos;	Return a Control object with name or index = pvIndex

If _ErrorHandler() Then On Local Error Goto Error_Function
	Utils._SetCalledSub(&quot;SubForm.Controls&quot;)

Dim ocControl As Variant, sParentShortcut As String, iControlCount As Integer
Dim oCounter As Variant, sControls() As Variant, i As Integer, bFound As Boolean, sIndex As String
Dim j As Integer

	Set ocControl = Nothing
	iControlCount = DatabaseForm.getCount()
	
	If IsMissing(pvIndex) Then					&apos;	No argument, return Collection pseudo-object
		Set oCounter = New Collect
		oCounter._CollType = COLLCONTROLS
		oCounter._ParentType = OBJSUBFORM
		oCounter._ParentName = _Shortcut
		oCounter._Count = iControlCount
		Set Controls = oCounter
		Goto Exit_Function
	End If
	
	If Not Utils._CheckArgument(pvIndex, 1, Utils._AddNumeric(vbString)) Then Goto Exit_Function
				
	&apos;	Start building the ocControl object
	&apos;	Determine exact name
	Set ocControl = New Control
	ocControl._ParentType = CTLPARENTISSUBFORM
	sParentShortcut = _Shortcut
	sControls() = DatabaseForm.getElementNames()
	
	Select Case VarType(pvIndex)
		Case vbInteger, vbLong, vbSingle, vbDouble, vbCurrency, vbBigint, vbDecimal
			If pvIndex &lt; 0 Or pvIndex &gt; iControlCount - 1 Then Goto Trace_Error_Index
			ocControl._Name = sControls(pvIndex)
		Case vbString			&apos;	Check control name validity (non case sensitive)
			bFound = False
			sIndex = UCase(Utils._Trim(pvIndex))
			For i = 0 To iControlCount - 1
				If UCase(sControls(i)) = sIndex Then
					bFound = True
					Exit For
				End If
			Next i
			If bFound Then ocControl._Name = sControls(i) Else Goto Trace_NotFound
	End Select

	ocControl._Shortcut = sParentShortcut &amp; &quot;!&quot; &amp; Utils._Surround(ocControl._Name)
	Set ocControl.ControlModel = DatabaseForm.getByName(ocControl._Name)
	ocControl._ImplementationName = ocControl.ControlModel.getImplementationName()
	ocControl._FormComponent = ParentComponent
	If Utils._hasUNOProperty(ocControl.ControlModel, &quot;ClassId&quot;) Then ocControl._ClassId = ocControl.ControlModel.ClassId
	If ocControl._ClassId &gt; 0 And ocControl._ClassId &lt;&gt; acHiddenControl Then
		Set ocControl.ControlView = ParentComponent.CurrentController.getControl(ocControl.ControlModel)
	End If

	ocControl._Initialize()
	ocControl._DocEntry = _DocEntry
	ocControl._DbEntry = _DbEntry
	Set Controls = ocControl
	
Exit_Function:
	Utils._ResetCalledSub(&quot;SubForm.Controls&quot;)
	Exit Function
Trace_Error_Index:
	TraceError(TRACEFATAL, ERRCOLLECTION, Utils._CalledSub(), 0, 1)
	Set Controls = Nothing
	Goto Exit_Function
Trace_NotFound:
	TraceError(TRACEFATAL, ERRCONTROLNOTFOUND, Utils._CalledSub(), 0, , Array(pvIndex, _Name))
	Set Controls = Nothing
	Goto Exit_Function
Error_Function:
	TraceError(TRACEABORT, Err, &quot;SubForm.Controls&quot;, Erl)
	Set Controls = Nothing
	GoTo Exit_Function
End Function		&apos;	Controls	V1.1.0

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

	Utils._SetCalledSub(&quot;SubForm.getProperty&quot;)
	If IsMissing(pvProperty) Then Call _TraceArguments()
	getProperty = _PropertyGet(pvProperty)
	Utils._ResetCalledSub(&quot;SubForm.getProperty&quot;)
	
End Function		&apos;	getProperty

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

	If IsMissing(pvProperty) Then hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList()) Else hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList(), pvProperty)
	Exit Function
	
End Function	&apos;	hasProperty

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Refresh() As Boolean
&apos;	Refresh data with its most recent value in the database in a form or subform
	Utils._SetCalledSub(&quot;SubForm.Refresh&quot;)
	If _ErrorHandler() Then On Local Error Goto Error_Function
	Refresh = False

Dim oSet As Object	
	Set oSet = DatabaseForm.createResultSet()
	If Not IsNull(oSet) Then
		oSet.refreshRow()
		Refresh = True
	End If

Exit_Function:
	Set oSet = Nothing
	Utils._ResetCalledSub(&quot;SubForm.Refresh&quot;)
	Exit Function
Error_Function:
	TraceError(TRACEABORT, Err, &quot;SubForm.Refresh&quot;, Erl)
	GoTo Exit_Function
End Function	&apos;	Refresh

REM -----------------------------------------------------------------------------------------------------------------------
Public Function Requery() As Boolean
&apos;	Refresh data displayed in a form, subform, combobox or listbox
	Utils._SetCalledSub(&quot;SubForm.Requery&quot;)
	If _ErrorHandler() Then On Local Error Goto Error_Function
	Requery = False

	DatabaseForm.reload()
	Requery = True	

Exit_Function:
	Utils._ResetCalledSub(&quot;SubForm.Requery&quot;)
	Exit Function
Error_Function:
	TraceError(TRACEABORT, Err, &quot;SubForm.Requery&quot;, Erl)
	GoTo Exit_Function
End Function	&apos;	Requery

REM -----------------------------------------------------------------------------------------------------------------------
Public Function setProperty(ByVal Optional psProperty As String, ByVal Optional pvValue As Variant) As Boolean
&apos;	Return True if property setting OK
	Utils._SetCalledSub(&quot;SubForm.setProperty&quot;)
	setProperty = _PropertySet(psProperty, pvValue)
	Utils._ResetCalledSub(&quot;SubForm.setProperty&quot;)
End Function

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

	_PropertiesList =  Array(&quot;AllowAdditions&quot;, &quot;AllowDeletions&quot;, &quot;AllowEdits&quot;, &quot;CurrentRecord&quot; _
								, &quot;Filter&quot;, &quot;FilterOn&quot;, &quot;LinkChildFields&quot;, &quot;LinkMasterFields&quot;, &quot;Name&quot; _
								, &quot;ObjectType&quot;, &quot;OrderBy&quot;, &quot;OrderByOn&quot;, &quot;Parent&quot;, &quot;RecordSource&quot; _
									)	&apos;	Recordset removed
	
End Function	&apos;	_PropertiesList

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertyGet(ByVal psProperty As String, ByVal Optional pvIndex As Variant) As Variant
&apos;	Return property value of the psProperty property name

	If _ErrorHandler() Then On Local Error Goto Error_Function
	Utils._SetCalledSub(&quot;SubForm.get&quot; &amp; psProperty)
Dim iArgNr As Integer
	If Not IsMissing(pvIndex) Then
		Select Case UCase(_A2B_.CalledSub)
			Case UCase(&quot;getProperty&quot;)				:	iArgNr = 3
			Case UCase(&quot;SubForm.getProperty&quot;)		:	iArgNr = 2
			Case UCase(&quot;SubForm.get&quot; &amp; psProperty)	:	iArgNr = 1
		End Select
		If Not Utils._CheckArgument(pvIndex, iArgNr, Utils._AddNumeric()) Then Goto Exit_Function
	End If
	
&apos;Execute
Dim oDatabase As Object, vBookmark As Variant, vEMPTY As Variant
	_PropertyGet = vEMPTY

	Select Case UCase(psProperty)
		Case UCase(&quot;AllowAdditions&quot;)
			_PropertyGet = DatabaseForm.AllowInserts
		Case UCase(&quot;AllowDeletions&quot;)
			_PropertyGet = DatabaseForm.AllowDeletes
		Case UCase(&quot;AllowEdits&quot;)
			_PropertyGet = DatabaseForm.AllowUpdates
		Case UCase(&quot;CurrentRecord&quot;)
			_PropertyGet = DatabaseForm.Row
		Case UCase(&quot;Filter&quot;)
			_PropertyGet = DatabaseForm.Filter
		Case UCase(&quot;FilterOn&quot;)
			_PropertyGet = DatabaseForm.ApplyFilter
		Case UCase(&quot;LinkChildFields&quot;)
			If Utils._hasUNOProperty(DatabaseForm, &quot;DetailFields&quot;) Then
				If IsMissing(pvIndex) Then
					_PropertyGet = DatabaseForm.DetailFields
				Else
					If pvIndex &lt; 0 Or pvIndex &gt; UBound(DatabaseForm.DetailFields) Then Goto trace_Error_Index
					_PropertyGet = DatabaseForm.DetailFields(pvIndex)
				End If
			End If
		Case UCase(&quot;LinkMasterFields&quot;)
			If Utils._hasUNOProperty(DatabaseForm, &quot;MasterFields&quot;) Then
				If IsMissing(pvIndex) Then
					_PropertyGet = DatabaseForm.MasterFields
				Else
					If pvIndex &lt; 0 Or pvIndex &gt; UBound(DatabaseForm.MasterFields) Then Goto trace_Error_Index
					_PropertyGet = DatabaseForm.MasterFields(pvIndex)
				End If
			End If
		Case UCase(&quot;Name&quot;)
			_PropertyGet = _Name
		Case UCase(&quot;ObjectType&quot;)
			_PropertyGet = _Type
		Case UCase(&quot;OrderBy&quot;)
			_PropertyGet = _OrderBy
		Case UCase(&quot;OrderByOn&quot;)
			If DatabaseForm.Order = &quot;&quot; Then _PropertyGet = False Else _PropertyGet = True
		Case UCase(&quot;Recordset&quot;)
			If DatabaseForm.Command = &quot;&quot; Then Goto Trace_Error		&apos;	No underlying data ??
			Set oObject = New Recordset
			With DatabaseForm
				oObject._CommandType = .CommandType
				oObject._Command = .Command
				oObject._ParentName = _Name
				oObject._ParentType = _Type
				Set oDatabase = Application._CurrentDb(_DocEntry, _DbEntry)
				Set oObject._ParentDatabase = oDatabase
				Set oObject._ParentDatabase.Connection = .ActiveConnection
				oObject._ForwardOnly = ( .ResultSetType = com.sun.star.sdbc.ResultSetType.FORWARD_ONLY )
				oObject._PassThrough = ( .EscapeProcessing = False )
				oObject._ReadOnly = ( .ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.READ_ONLY )
				Call oObject._Initialize()
			End With
			With oDatabase
				.RecordsetMax = .RecordsetMax + 1
				oObject._Name = Format(.RecordsetMax, &quot;0000000&quot;)
				.RecordsetsColl.Add(oObject, UCase(oObject._Name))
			End With
			Set _PropertyGet = oObject
		Case UCase(&quot;RecordSource&quot;)
			_PropertyGet = DatabaseForm.ActiveCommand
		Case Else
			Goto Trace_Error
	End Select
	
Exit_Function:
	Utils._ResetCalledSub(&quot;SubForm.get&quot; &amp; psProperty)
	Exit Function
Trace_Error:
	TraceError(TRACEWARNING, ERRPROPERTY, Utils._CalledSub(), 0, 1, psProperty)
	_PropertyGet = vEMPTY
	Goto Exit_Function
Trace_Error_Index:
	TraceError(TRACEFATAL, ERRINDEXVALUE, Utils._CalledSub(), 0, 1, psProperty)
	_PropertyGet = vEMPTY
	Goto Exit_Function
Error_Function:
	TraceError(TRACEABORT, Err, &quot;SubForm._PropertyGet&quot;, Erl)
	_PropertyGet = vEMPTY
	GoTo Exit_Function
End Function		&apos;	_PropertyGet

REM -----------------------------------------------------------------------------------------------------------------------
Private Function _PropertySet(ByVal psProperty As String, ByVal pvValue As Variant) As Boolean

	Utils._SetCalledSub(&quot;SubForm.set&quot; &amp; psProperty)
	If _ErrorHandler() Then On Local Error Goto Error_Function
	_PropertySet = True

&apos;Execute
Dim iArgNr As Integer

	If _IsLeft(_A2B_.CalledSub, &quot;SubForm.&quot;) Then iArgNr = 1 Else iArgNr = 2
	Select Case UCase(psProperty)
		Case UCase(&quot;AllowAdditions&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
			DatabaseForm.AllowInserts = pvValue
			DatabaseForm.reload()
		Case UCase(&quot;AllowDeletions&quot;)
			If Not Utils._CheckArgument(pvValue,iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
			DatabaseForm.AllowDeletes = pvValue
			DatabaseForm.reload()
		Case UCase(&quot;AllowEdits&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
			DatabaseForm.AllowUpdates = pvValue
			DatabaseForm.reload()
		Case UCase(&quot;CurrentRecord&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, Utils._AddNumeric(), , False) Then Goto Trace_Error_Value
			DatabaseForm.absolute(pvValue)
		Case UCase(&quot;Filter&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
			DatabaseForm.Filter = Application._CurrentDb(_DocEntry, _DbEntry)._ReplaceSquareBrackets(pvValue)
		Case UCase(&quot;FilterOn&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
			DatabaseForm.ApplyFilter = pvValue
			DatabaseForm.reload()
		Case UCase(&quot;OrderBy&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
			_OrderBy = Application._CurrentDb(_DocEntry, _DbEntry)._ReplaceSquareBrackets(pvValue)
		Case UCase(&quot;OrderByOn&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbBoolean, , False) Then Goto Trace_Error_Value
			If pvValue Then DatabaseForm.Order = _OrderBy Else DatabaseForm.Order = &quot;&quot;
			DatabaseForm.reload()
		Case UCase(&quot;RecordSource&quot;)
			If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value
			DatabaseForm.Command = Application._CurrentDb(_DocEntry, _DbEntry)._ReplaceSquareBrackets(pvValue)
			DatabaseForm.CommandType = com.sun.star.sdb.CommandType.COMMAND
			DatabaseForm.Filter = &quot;&quot;
			DatabaseForm.reload()
		Case Else
			Goto Trace_Error
	End Select

Exit_Function:
	Utils._ResetCalledSub(&quot;SubForm.set&quot; &amp; psProperty)
	Exit Function
Trace_Error:
	TraceError(TRACEFATAL, ERRPROPERTY, Utils._CalledSub(), 0, 1, 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_Function:
	TraceError(TRACEABORT, Err, &quot;SubForm._PropertySet&quot;, Erl)
	_PropertySet = False
	GoTo Exit_Function
End Function		&apos;	_PropertySet
</script:module>