ページ 11

よろしくお願いします。

Posted: 10月 31, 2012, 10:08 pm
by tomshifor
OpenOfficeのVr3.2.1を使用しています。

OOoのbaseに挑戦している初心者ですが、フォーム上のテキストボックス1、2、3があるとして、テキストボックス3に1、2のテキストボックスに入っている数字をかけた結果を表示させ、レコードに記入したいのですが、同じような質問も見つけましたが、今ひとつ理解できずに投稿しました、よろしくお願いします。

他の似たような質問の答えに、
Sub Main
Dim oDoc As Object, oDrawPages As Object, oDrawPage As Object
Dim oForms As Object, oForm As Object
Dim oTextBox1 As Object, oTextBox2 As Object, oTextBox3 As Object
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oDrawPage = oDrawPages.getByIndex(0)
oForms = oDrawPage.getForms()
oForm = oForms.getByName( "Standard" )
oTextBox1 = oForm.getByName( "テキストボックスA" )
oTextBox2 = oForm.getByName( "テキストボックスB" )
oTextBox3 = oForm.getByName( "テキストボックスC" )
oTextBox3.text = CDbl( oTextBox1.text ) * CDbl( oTextBox2.text ) '※
End Sub

上のようなプログラムを書いてありました。
素人考えっで、上のプログラムをコピペしてテキストボックス名などは変更して、使ってみたのですがエラーが出ました。
上のプログラムを簡単に説明してもらえると助かります。
勝手なことばかりかいていますが、分からなくて困っています、よろしくお願いします。

Re: よろしくお願いします。

Posted: 11月 2, 2012, 10:39 am
by ike@九州
各カテゴリへ投稿されないと埋もれてしまいます。ご注意ください

フォームの名前や各コントロールの名前はフォームナビゲータから確認しましょう。
(フォームデザインツールバー内の方位磁石のあるボタン)

フォーム上にボタンを配置してボタンの実行時にマクロを割り当ててみます
フォーム上から実行しないと ThisComponent はフォームドキュメントを確実に取得しません。

Sub Main
oDoc = ThisComponent
oDrawPage = oDoc.getDrawPage
oForms = oDrawPage.getForms()
oForm = oForms.getByName( "フォームの名前" )
oTextBox1 = oForm.getByName( "テキストボックスAの名前" )
oTextBox2 = oForm.getByName( "テキストボックスBの名前" )

'テキストボックスC にリンクしたフィールドの列インデックス取得
nIndex = oForm.findColumn("リンクしたフィールドの名前")
'該当フィールドに書込み、結果テキストボックスC に表示される
oForm.updateDouble(nIndex,CDbl( oTextBox1.text ) * CDbl( oTextBox2.text ))
'現在のレコード行の保存
oForm.updateRow
'次のレコード
oForm.next
End Sub