Date: prev next · Thread: first prev next last


福永様。
一応、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 users+unsubscribe@ja.libreoffice.org
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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.