2013-05-23 6 views
1

У меня есть 3 таблицы в одной форме, они используют SQL-запросы для выбора данных. Мне нужно как-то их обновить, но ничего не работает.Как обновить все таблицы в форме? LibreOffice Base

E.g. это не работает на всех:

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()) 

Как обновлять их все?

ответ

1

Боже мой, это было так просто, немой теперь я чувствую:

Sub reloadAllTables 
    Dim Forms : Forms = ThisComponent.DrawPage.Forms 
    Dim i% 
    For i = 0 To Forms.getCount()-1 
     Forms.getByIndex(i).reload() 
    Next 
End Sub 
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 
+1

'.refresh' метод, похоже, применим только к списку и комбинированному ящику, а не к другим типам элементов управления таблицами. – Salvador