フォーム上のテーブル |
---|
戻 る |
フォーム上のデータをリフレッシュ | |
Baseを始めた当初、Basicマクロでテーブルにデータを追加したり、修正したとき、
フォーム上のテーブルに表示されるデータに変化はなく、フォームを再表示すると、データはちゃんと反映されて表示され、???状態でした。 マクロでデータを処理した後、結果をフォーム上の表に反映させるには、フォームをリロードする必要があるとのことでした。 Form.Reload() | |
フォーム上の表を見やすくする | |
「行間」を適度に設定します。 フォームの編集で、「テーブルコントロール」を開き、 フォントのサイズと「行の高さ」を調整すると、「行間」をあけることができます | |
フォーム上のテーブルに検索条件や整列条件を設定して表示する | |
検索条件は、Filterプロパティ、整列条件は、Orderプロパティを使う。 [例] Form.Filter = "RecID > 100 and RecID < 200" Form.Order = "RecID" Form.ApplyFilter = True Form.Reload() | |
フォーム上の一覧表からマウスで選択したデータを取得する | |
選択行のフィールド情報は、 Columns = Form.getColumns()
マクロを作成し、テーブルコントロールで、 「マウスボタンを押した時」の「...」ボタンを押して、作成したマクロが呼び出されるように設定します。 [例] Sub GetCurXXXData (略) Rem フィールド情報を取得 Columns = Form.getColumns() for i = 0 to Columns.count-1 Rem フィールド名取得 fldname = Columns(i).Name fldstr = Ucase(fldname) Rem フィールドデータ取得 dstr = Columns(i).getString Select Case fldstr Rem テーブルに応じて Case "RECID" RecID = CLng(dstr) Case "YMD" YMD = dstr ~ End Select next (略) End Sub 注)フィールドのデータ型は、Columns(i).Typeで取得可能 | |
カレント行の変更 | |
データを編集した後、Form.Reload()でフォームをリフレッシュすると、レコードの先頭から表示されます。 データが多い場合、編集していたレコード近くを表示したいものです。 指定したレコード番号をカレントレコードにするマクロを利用します。 Rem 選択行のレコード番号を取得する RecNo = Form.Row() (Form.Reload()でフォームをリフレッシュ) Rem 先ほど選択したデータの近くに移動 Call GotoRecordNo(Doc, RecNo) |
[OpenOffice.org Q&A faq/6/53参照] Sub GotoRecordNo(oDoc As Object, nRecNo As Long) | |
Dim aProp(0) As New com.sun.star.beans.PropertyValue aProp(0).Name = "Position" aProp(0).Value = nRecNo createUnoService("com.sun.star.frame.DispatchHelper").executeDispatch( _ oDoc.CurrentController.Frame, ".uno:AbsoluteRecord", "", 0, aProp) | |
End Sub |