1

1 つのフォームに 3 つのテーブルがあり、SQL クエリを使用してデータを選択しています。どうにかしてそれらをリフレッシュする必要がありますが、何も機能しません。

たとえば、これはまったく機能しません。

oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oBaseContext.getByName(dbName)
oCon = oDataSource.getConnection("", "")
oCon.getTables().refresh()

そして、これは最初のテーブルのみを更新します:

oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
oFrame = ThisComponent.getCurrentController().getFrame()
oDisp.executeDispatch(oFrame, ".uno:Refresh", "", 0, Array())

それらをすべて更新するにはどうすればよいですか?

4

2 に答える 2

0

フォームをリロードしてもテーブルは更新されません。テーブル コントロールは、各列で .refresh を使用して更新されます。たとえば、

SUB refreshTables(oForm as object)
DIM cnt as integer, cnt2 as integer, tot as integer, tot2 as integer
DIM oFormObj as object

'get number of form object
tot = oForm.getCount - 1
IF tot > -1 THEN
    FOR cnt = 0 TO tot
        'next form object
        oFormObj = oForm.getByIndex(cnt) 
        'is object a table control AKA grid control
        IF oFormObj.ImplementationName = "com.sun.star.comp.forms.OGridControlModel" THEN
            'refresh each column
            tot2 = oFormObj.getCount - 1
            IF tot2 > -1 THEN
                FOR cnt2 = 0 TO tot2
                    oFormObj.getByIndex(cnt2).refresh
                NEXT
            ENDIF
        ENDIF
    NEXT
ENDIF
END SUB
于 2014-11-22T18:02:31.300 に答える