フォームでフィルタを使う / OpenOffice.org BASE

OpenOffise.org BASE でフォームに貼り付けたボタンを押したときに、
データベースのフィルタを切り替えて表示する内容を変更したかった。
3日悩んでようやくやり方が判ったのでメモしておく。

REM  *****  BASIC  *****

rem ----------------------------------------------------------------------
rem define variables
public Doc as object
public DrawPage as object
public Form as object

rem ----------------------------------------------------------------------
sub getForm
 	Doc = starDesktop.CurrentComponent	'	
	DrawPage = Doc.DrawPage		' 	
	Form = DrawPage.Forms.getByIndex(0)	'	
end sub

rem ----------------------------------------------------------------------
sub FilterBalloons
	dim qt as string	: qt = chr(34)
	dim lf as string	: lf = chr(13)

'	SELECT * FROM "商品" WHERE ("区分コード" LIKE '1*')  ORDER BY  "商品コード" ASC -- 気球関連選択
	getForm()
	Form.Filter = "(  "+qt+"区分コード"+qt+" LIKE  '1*' )"
	Form.Order = qt+"商品コード"+qt+" ASC"
	Form.ApplyFilter = true
	Form.Reload()
end sub
まず Form を取得する。
そして Form.Filter、Form.Order、Form.ApplyFilter の各プロパティをセットする。
Filter はSQL のSELECT文のWHERE 句に相当。
Order はORDER BY 句。
ApplyFilter はTrue かFalse か。(フィルタをはずしたければFalse)
さいごのReload() がミソ。

連絡先

nakanohito