Top > OOobbs2 > 110

OOobbs2/110 Edit

  • サマリ: Calc で作成した Form 上から updateString
  • 環境: Calc
  • 状態: 解決
  • 投稿者: ike@九州?
  • 投稿日: 2008-06-10 (火) 13:41:30

質問 Edit

sub test
oDoc = ThisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName("表1")
oDraw = oSheet.DrawPage
oForm = oDraw.getForms().getByName("Standard")

'現在のレコードの2番目に今日の日付を挿入
oForm.updateString(2,format(now(),"YYYY-MM-DD" )
'現在のレコードの2番目に現在の時刻を挿入
'oForm.updateString(2,format(now(),"HH:MM:SS"))

'カーソルを Form 上の "ComboBox2" に持ってくる 
oController = oDoc.getCurrentController() 
oShapeControl = oController.getControl(oForm.getByName("ComboBox2")) 
oShapeControl.setFocus()
end sub

ボタンに上記を割り当てました。updateString にて更新挿入できるのが分かったのですが、第一引数の Index を Form 上のフィールド名等から取得できないでしょうか?

回答 Edit

  • まず、フォームに配置したコントロールにフィールド名を割り振っておきます。もちろんフォームにはデータベース、表などの設定をしておきます。コントロールに設定したフィールド名を取得、com.sun.star.sdbc.XColumnLocate インターフェースの findColumn メソッドでフィールド名からフィールド ID が取得できます。行セット
 oDoc = ThisComponent
 oController = oDoc.getCurrentController()
 
 oForm = oDoc.getDrawPage().getForms().getByIndex(0)
 
 oField = oForm.getByName("TextBox")
 
 msgbox oForm.findColumn( oField.DataField )

execute した後でなければ findColumn はもちろん失敗します。インデックスは 1 からはじまるので、返り値がゼロの時には見つからなかった場合もしくは接続されていないことになります。

  • はにゃ? 2008-06-10 (火) 14:49:48
  • いとも簡単にできました orz 、ありがとうございます。 Form 上のフィールドにテキストとして挿入しても一向にデータソースに反映されなくて updateString で可能なのを知るのに思いっきり時間が掛かってしまいました。トホホ  いよいよBase関連へ突入のようで楽しみです -- ike@九州 2008-06-11 (Wed) 09:34:41

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes