OOobbs3/5
質問
baseのフォームでレコードが変化した時 or 設置したボタンを押した時に、月を指定するフォームから月を取得。 その月の収入・支出をbasic スクリプト内でクエリを利用して計算し、各々表示用のフォームに値を代入しようとしています。 Sub Btn_Push(ev) oForm = ev.Source.getModel().getParent() ev.Source.getModel().getParent().getByName("datDATE") 以前に教えていただいた方法を利用し、上記のようにして対象フォームを取得できたようなのですが、名前は取得できても値の取得や設定のやり方が分かりません。 任意のフォームにたいして情報を取得・設定をするにはどのようにすればよろしいのでしょうか? 利用したいフォームは「日付フィールド」と金額表示用の「書式設定されたフィールド」です。 回答
データベースに接続されたフォームから値を取得するには表示しているテーブルやクエリの構造、データ型などが分からなければいけません。 まず、ドキュメントからフォームを取得します。 oDoc = ThisComponent oForm = oDoc.getDrawPage().getForms().getByIndex(0) ここでの例では次のようなカラムを持ったテーブルです。これらのカラムの内部での ID を調べておきます。これらはデータの取得、更新に利用します。 nIDID = oForm.findColumn("ID") ' INTEGER nNameID = oForm.findColumn("NAME") ' VARCHAR nImageID = oForm.findColumn("IMAGE") ' LONGVARBINARY NAME カラムのデータを取得するには各種のメソッドが利用できますが、データ型に対応したものを利用します。NAME フィールドは VARCHAR 型のデータを保持しているので getString メソッドが利用できます。メソッドごとに利用できる型はドキュメント参照。
日付データであれば getDate メソッドを利用します。返り値は com.sun.star.util.Date です。 データの更新などはOOobbs3/7などを参照。com.sun.star.sdbc.XRowUpdate のメソッドで行いますが、他の操作も必要ですので…。
フォームでデータベースに関連付けられていない場合にはダイアログと同じ IDL が利用されていますので、ダイアログコントロール関連のページOOoBasic/Dialogの各種コントロールが参考になります。 日付フィールドでは Date プロパティに日付データを指定します。OOoBasic/Dialog/DateField このとき日付が 2010/06/14 であれば 20100614 を long 型で指定します。データベースから取得した日付は css.util.Date なので変換が必要です。 Function GetDate(aDate As com.sun.star.util.Date) As Long GetDate = aDate.Year * 10000 + aDate.Month * 100 + aDate.Day End Function
感想,コメント,メモ
|