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

Q&A集[?]

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

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

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

質問コーナー

サイト内検索

分類メニュー

関連サイト


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


メインフォームで新規追加するデータフィールドの値をサブテーブルから自動で入力したい。

ページOpenOffice.org FAQの登録ページ
投稿者もり
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2011-02-09 15:27:18 (水)
OSWindowsxp
依存するページ
バージョン
edit/refer

メッセージ

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

自動入力について検索してみたのですが、テーブルでIDなどの自動入力設定はヒットするのですが、やりたい事と違うので質問させて頂きます。

従業員のとある作業の集計、解析をしたいと思いBaseを立ち上げました。

集計をする際の項目に、所属課を採用したいのですが、この所属課は時折変更されます。

”月間の集計”などを”所属課毎”でクエリで出すことは、テーブルが二つあっても問題ないのですが、実績としては事実と異なります。

作業の当日の所属課での記録を残そうと思うのでデータを残すテーブルにも所属課を入力しなければなりません。
この作業を自動化出来る方法はあればご指南頂きたいです。


検証下さい

ike@九州 (2011-02-10 11:13:26 (木))

サンプルのフォーム設計では
新規入力時にはサブフォームは何も表示されないので

従業員ID の入力時に t_master テーブルから現在の 所属課ID をメインフォームへ自動入力したいと解釈しました。

フォームの編集から、以下を fmt従業員ID のイベント"テキストの変更時"に割り当て使い勝手を確認してください。

Sub inputID(oEvent)
 oCtrlID = oEvent.source.getModel
 sTextID = oCtrlID.Text
 oForm = oCtrlID.getParent
 
 '最終レコードか、文字が4桁かのチェック
 IF Not oForm.isLast or Len(sTextID) <> 4 then Exit Sub
 
 oCon = oForm.ActiveConnection
 oStatement = oCon.createStatement()
 sSQL = "Select ""所属課ID"" From ""t_master"" Where ""従業員ID"" = '" & sTextID & "';"
 oResultSet= oStatement.executeQuery(sSQL)
 
 '従業員IDのチェック
 IF oResultSet.next Then
 
   '所属課IDのチェック
   If oForm.getString(oForm.findColumn( "所属課ID" )) = "" then
    oForm.updateString( oForm.findColumn( "所属課ID" ), oResultSet.getString(1) )
   Else
    if msgbox("所属課IDにデータがあります" & chr(13) & "上書きしますか",4) = 6 then
      oForm.updatestring( oForm.findColumn( "所属課ID" ), oResultSet.getString(1) )
    end if
   End If
   
 Else
  
   msgbox("該当従業員IDがありません")
   oCtrlID.Text = ""
   
 End IF
 
End Sub

2つのテーブルを表示するフォーム

M.Kamataki (2011-02-10 17:28:11 (木))

ike@九州さん、いつもマクロのご提供、ありがとうございます。

さて、ご質問でサブフォームという言葉が使われています。サブフォームというのは、メインテーブル、サブテーブルでリンクを張り、メインフォームで表示したレコードに合わせサブフォーム側のテーブルを絞り込む、という動作をします。

たぶん、作成したいフォームとこの動作は異なるものではないでしょうか。添付していただいたサンプルを基に、わたしのほうでフォームを作成しなおしてみました。以下です。

filefaq6_141sample1.odb

こちらのフォームなら、t_master テーブルは常に全件表示されます。このフォームは、t_data テーブルだけのフォームをウィザードなどで作成し、MainForm と同じレベルのフォームを新たに作成、その中にテーブルコントロールで t_master テーブルの内容を表示しています(設定で読み込み専用にしています)。

このフォームとike@九州さんのマクロを組み合わせれば、わかりやすいフォームになると思います。

ike@九州さん、M.Kamatakiさんありがとうございます。

もり (2011-02-10 20:08:53 (木))

理想通りの動作が確認できました。
理解不足でタイトルが間違っていたようですので、自分で修正してみました。
問題があれば、お手数をお掛けしますが、指摘、訂正頂ければ幸いです。

メインフォームとサブフォームの考え方も目から鱗です。
勉強になります、ありがとうございます!

マクロの知識がおぼつかいので、実データで実施するのに躓く可能性は高いですが、
まずはやってみたいと思います。

お二方とも感謝します!
本当にありがとうございました!

お名前:
題名:


添付ファイル: filefaq6_141sample1.odb 1257件 [詳細] file回数.odb 523件 [詳細]