福永様。
一応、Vlookupっぽいものができましたので報告させていただきます。
ただ、エラー処理などはしていませんので、あしからず。
1.動作環境
Ubuntu16.04 32bit LibreOffice5.3.1.2 HSQLDB(埋め込み)
2.概要
テキストボックス1に「001」と入力するとテキストボックス2に「リンゴ」がひょうじされる。
そのためのマクロを作成します。
テキストボックス1の値を検索値としてsqlを発行し、取得したレコードをwhile文で取り出し、それをテキストボックス2にセットする。
3.手順
(1)データベース作成
適当にbaseでつくります。ファイル名はtestでもなんでもよいです。
(2)テーブル作成
テーブル名 t_test
ID 商品名 単価
001 リンゴ 200
002 みかん 100
プライマリーキーはIDにしておきます。
(3)フォーム作成
フォーム名はf_textとし、実際に作成されるフォーム名をformとして区別します。
※ここが肝です。フォームの名前が2種類あるように見えますが、f_testはフォームの入れ物のようなもので最初に作成されるものです。実際にフォームをデザインするとそのときに実体ができます。それがform(フォームと表示されている)です。デザインウィザード内のコンパスのアイコンをクリックすると配置されているテキストボックス等を含むフォームなどの名前が表示されます。カタカナでフォームとなっているのをformに書き換えておきます。これがフォームの実体です。
テキストボックス1(名前はtextbox1)とテキストボックス2(名前はtextbox2)としてformに配置します。(ラベルは見分けるために適当に作ってください。)
一応保存。(まめに保存しておきましょう。)
(4)マクロ作成
① f_testを右クリック>編集 から開きます。上のメニューバーの ツール>マクロ>マクロの管理>LibreOffice
Basic をクリックします。
②
左枠内のマクロの記録先にtestというデータベースがあります。クリックするとstandardが見えます。それをクリックして、右側の「新規作成」をクリックします。Module1と表示されます。この名前は適当にわかりやすく変更してもよいです。mod_testとしてみました。
③ このmod_testが開くので、そこに、下記のマクロをコピペしてください。
REM ***** BASIC *****
Option Explicit
Sub set_value
Dim sSql As String
Dim oDraw As Object
Dim oForm As Object
Dim oResult As Object
Dim sValue As String
Dim oTextbox2 As Object
oDraw=ThisComponent.getDrawPage()
oForm=oDraw.getForms().getByName("form")
sSql ="select ""商品名"" from ""t_test"" where ""ID"" = '" &
oForm.getByName("textbox1").text & "';"
oResult =
ThisDataBaseDocument.DataSource.getconnection("","").createstatement.executequery(sSql)
' msgbox(sSql)
While oResult.next()
sValue = oResult.getString(1)
Wend
' msgbox( sValue)
oTextbox2 = oForm.getByName( "textbox2" )
oTextbox2.Text = sValue
End Sub
④ このマクロを保存します。もし、保存ボタンがグレーアウトしているばあいは、base本体を上書き保存してください。そうするとマクロの保存ボタンも有効になります。
⑤
form上のtextbox1をダブルクリックして「イベント」タブをクリックします。「フォーカスを失った時」の右にある「…」ボタンをクリックし、割当の下の「マクロ」ボタンをクリックします。先ほどコピペしたマクロが表示されます。set_valueを選択し、「OK」をクリックします。
※ test>mod_test>set_valueとたどります。
⑥ 念の為にベースを上書き保存します。
⑦ f_testをダブルクリックで開いて、
textbox1に「001」を入力しエンターキーを押してフォーカスをtextbox1から外します。textbox2に「リンゴ」と表示されれば成功です。
失敗する場合は、何らかのメッセージがでます。
がんばってみてください。
以上
On 2017年04月01日 20:25, 福永ケンセイ wrote:
よろしくお願いします。
下記のようにテーブル名「果物コード表」を作成
県コード 県名
1 メロン
2 バナナ
テキストボックスに果物コード
「1」を入力すると隣のボックスに「メロン」と出るようにしたい。
どなたかわかる方がいれば教えていただきませんか。
--
/////////////////////////////
志義どっとPC
(志義ゼミナール)
堀 正和
〒838-0141
福岡県小郡市小郡630-62
TEL/FAX:0942-73-1710
直通(堀):090-8379-6113
/////////////////////////////
--
Unsubscribe instructions: E-mail to [email protected]
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted