「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:2346
現在:2


リストボックスの値の取得について

ページOpenOffice.org FAQの登録ページ
投稿者NAWA33
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-12-10 15:30:04 (金)
OSWindowsXP
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

BASEもマクロも初心者です.
イベントマクロでリストボックスの値を取得したいのですが,どのようなコードで実現できるのでしょうか?
よろしくお願いします.
ファイル添付しましたので,よろしくお願いします.


マクロの目的

M.Kamataki (2010-12-10 18:07:16 (金))

サンプルを拝見しました。下図の「所持形態」をリストボックスで選んだら、「単位」フィールドに「所持形態」の値に関連する値を自動的に挿入しよう、というのがマクロの目的でしょうか。

faq6_97_01.jpg

いちおう、こんな感じで画像を添付するなどして、補足していただけるとわかりやすいご質問になるかと思います。次回以降、ご質問の際はご検討ください。(というわけで以下の回答が間違った解釈によるものでしたら、すみません)

さて、過去のご質問faq/5/10「内容が変化するリストボックスの設置方法」が参考にならないでしょうか。

2つサンプルを紹介していますが、1番目のサンプルなら添付いただいたサンプルファイルの「基本T」テーブルはそのままの設計で流用できそうです。ただし、リストボックスではなく、コンボボックスで実現していますし、「単位」フィールドへ入力するためのテーブルを新しく作成する必要があります。

2番目のサンプルは、サンプルファイルのテーブル設計を見なおさないといけません。「基本T」テーブルに格納されるのはコード番号になるとか、ですね。2番目のサンプルのほうがわかりやすいかな。

早速のご返事ありがとうございます

NAWA33 (2010-12-10 21:12:10 (金))

ご推察のとおり,リストボックスで選んで自動入力をしようとしたものです.参考として提示していただいたfaq/5/10のサンプルで,テキストボックスに表示させることができましたが,フィールドに格納するには初心者ゆまだ見えてこない状態で,ソースコードを読み解くのにしばらく時間がかかりそうです.できれば長い目で見てやってください.お願いいたします.

Re: 早速のご返事ありがとうございます

M.Kamataki (2010-12-11 11:40:38 (土))

>できれば長い目で見てやってください.お願いいたします.

はい、よく読み解いた上でコーディングしてみるとOpenOffice.orgのマクロへの理解が深まると思います。

エラーの原因はちょっとした勘違いの場合も多いですね。その場合でもサンプルのodbファイルをアップしていただければ、添削可能です。思い悩むよりも、チェックしてもらったほうが早いような気がします。

こういうのもありでしょうか.

NAWA33 (2010-12-11 16:58:59 (土))

サンプルマクロをよみとくのみに苦労しています.

合間合間に,他の質問を当っていますと,質問 faq/6/37 「リストボックスの選択位置をBasicで操作したい 」がありました.

短いコードだったので,とりあえず組み込んでみました.
[所持形態]で携帯を選択すると,[単位]欄に,対応する単位が表示され,プルダウンの下三角を2回クリックするだけで,自動とはいかないにしろ,入力の手間が少々避けられそうです.また,いまのところ不具合も無いようですが,おかしな点や不具合につながりそうなところがございましたら,よろしくご批評ください.サンプルファイルは StampDB_Sample2.odb です.挿入場所は最後の2行です.

Re: こういうのもありでしょうか.

M.Kamataki (2010-12-13 10:13:25 (月))

ちょっとわたしの勘違いもありましたね。「単位」フィールドに入力するためのコントロールは、リストボックス/コンボボックスではなくテキストボックスですから、faq/5/10のサンプルそのままではなく、応用が必要でした。

faq/6/37のサンプルを基にすると、添付された fileStampDB_Sample2.odb でもちろん問題はないです。マクロに正解はないと思いますので。

ただ、わかりやすさからすると、テキストボックスのまま「単位」フィールドに入力されるのがベターでしょう。ちょっと時間がないのでサンプルの提示は、今できませんが、検討してみます。もしくはサンプルが提示できる方、コメントをお願いします。

始めに戻って

NAWA33 (2010-12-13 12:50:36 (月))

M.Kamataki様 コメントありがとうございます.
どうにかして自動入力に近づけるかで,faq/6/37 の方法でリストボックスを使ったものの,やはり入力ミスを避けるためテキストボックスの方が良いのではないかと考えていました.
これとは別に,[所持形態]は,コンボボックスを利用していましたが, faq/5/10 の二つ目のサンプル faq5_10sample_2.odb の一部コードをを使って,コンボボックスからリストボックスに変更しました.(StampDB_Sample3.odb)
お忙しい中ごありがとうございます.

テーブル設計について

M.Kamataki (2010-12-13 23:25:45 (月))

最初に確認すべきことだったのですが、「所持形態」フィールドの値によって「単位」フィールドの値が決まるということは、「基本T」テーブルに「単位」フィールドは不要という選択もあり得ます。

例えば、「所持形態」テーブルがありますが、ここに「単位」フィールドを設けます。すると、クエリーを用いれば以下のように、「基本T」テーブルと「所持形態」テーブルをリンクさせ、「所持形態」テーブルの「単位」フィールドを表示できます。

SELECT "基本T"."MasterID", "基本T"."所持形態", "所持形態"."単位" FROM "基本T", "所持形態"
WHERE "基本T"."所持形態" = "所持形態"."所持形態"

フォームもサブフォームを用いれば、上記クエリーと同様の表示は可能です。以下にサンプルを用意しました。マクロは用いず、サブフォームの機能だけで実現しています。

filefaq6_97sample5.odb

すでに入力済みのレコードでは「単位」フィールドは自動で表示されます。追加中のレコードでは、まだレコード内容が保存されていないので表示されませんが、保存後は表示されます。なお、サンプルの「単位」フィールドのテキストボックスは読み取り専用の設定とし、誤入力を防いでいます。

クエリーで表示可能なフィールドをテーブルに持つということは、データベースでは無駄という考えがあります。また、このようなフィールドを省くことで、結果的にデータベースのデータ容量を抑えることができるので、大きなデータを保持する必要があるときには検討すべき事項だと思います。

確かに,

(2010-12-14 09:35:58 (火))


>クエリーで表示可能なフィールドをテーブルに持つということは、データベースでは無駄という考えがあります。
と,思います.

また,

>追加中のレコードでは、まだレコード内容が保存されていないので表示されませんが、保存後は表示されます。なお、サンプルの「単位」フィールドのテキストボックスは読み取り専用の設定とし、誤入力を防いでいます。

ので,提示された方法どちらかで作成したいと思います.
いっそのこと入力フォームと閲覧フォームに分けて使った方が無難かなと思います.

ただ,これから手をつけるサブフォームやサブサブフォームでもフィールドの値を基にして別フィールドに納める必要があるので,
fileDisp_faq6_97.bmp
値の取得方法と,格納方法を知りたかったのです.

遅くまで当方の質問にお付き合いいただき,只々頭が下がる思いです.大変ありがとうございます.

ありがとうございました

NAWA33 (2010-12-17 07:02:12 (金))

サブフォームを用いて設計しなおしました.
大変遅くなりましたが,完了とします.
重ねてありがとうございました.

お名前:
題名:


添付ファイル: fileDisp_faq6_97.bmp 918件 [詳細] filefaq6_97sample5.odb 1087件 [詳細] fileStampDB_Sample3.odb 477件 [詳細] fileStampDB_Sample2.odb 1095件 [詳細] filefaq6_97_01.jpg 435件 [詳細] fileStampDB_Sample.odb 477件 [詳細]