Microsoft Access 掲示板

クエリに、あるテーブルの該当する若い番号から4つ入れたい。 / 1

14 コメント
views
4 フォロー
1
どんぐりず 2021/02/07 (日) 18:02:30 f1ed8@e2de4

すみません、この質問の件について考えていて、改めて何がしたいのかわかりました‥。
フォームの中にサブフォームを作り、それを単票表示にして、その単票データをタブで切り替えるように見せることはできますでしょうか?
多くても4個くらいなのですが‥。

通報 ...
  • 2
    hiroton 2021/02/10 (水) 11:41:59 fc00d@f966d >> 1

    サブフォームを単票フォームにするのならばタブの選択に合わせてレコードが移動できるようにすればいいですね
    それと、親フォームのレコード移動時にサブフォームのレコード数に合わせてタブの表示/非表示を切り替えればよさそうです

    新たに作るサブフォームを[部署データ]とします
    タブコントロール[所属部署タブ]を設置します
    [所属部署タブ]にページコントロールを[ページ0]~[ページ3]まで設置します

    Private Sub Form_Current()
        Const max部署 = 3
        Dim cnt部署 As Long
        Dim i As Long
    
        cnt部署 = Me!部署データ.Form.Recordset.RecordCount
        cnt部署 = IIf(cnt部署 > max部署, max部署, cnt部署)
    
        me!所属部署タブ = 0
    
        For i = 1 To cnt部署 - 1
            Me("ページ" & i).Visible = True
        Next
        
        For i = cnt部署 To max部署
            Me("ページ" & i).Visible = False
        Next
    End Sub
    
    Private Sub 所属部署タブ_Change()
        Me!部署データ.Form.Recordset.Move 所属部署タブ - (Me!部署データ.Form.CurrentRecord - 1)
    End Sub
    
    
    3
    どんぐりず 2021/02/10 (水) 16:47:44 f1ed8@e2de4 >> 2

    回答がついてとてもうれしいです!明日確認してみます。

  • 4
    hiroton 2021/02/10 (水) 17:28:13 fc00d@f966d >> 1

    コード訂正

    Private Sub Form_Current()
        Const max部署 = 4 '//この行を訂正
        Dim cnt部署 As Long
        Dim i As Long
    
        cnt部署 = Me!部署データ.Form.Recordset.RecordCount
        cnt部署 = IIf(cnt部署 > max部署, max部署, cnt部署)
    
        me!所属部署タブ = 0
    
        For i = 1 To cnt部署 - 1
            Me("ページ" & i).Visible = True
        Next
        
        For i = cnt部署 To max部署 - 1 '//この行を訂正
            Me("ページ" & i).Visible = False
        Next
    End Sub
    
    Private Sub 所属部署タブ_Change()
        Me!部署データ.Form.Recordset.Move 所属部署タブ - (Me!部署データ.Form.CurrentRecord - 1)
    End Sub
    

    添え字(0~)と数(1~)の対応で処理に間違いがあったので修正しておきます

    5
    どんぐりず 2021/02/13 (土) 10:41:55 0029a@1c915 >> 4

    遅くなりましたが、できました!!素晴らしいです。
    追加で質問ですが、現在登録済みだった所属部署は表示されるのですが、新規で所属部署を登録する画面の作成方法がわからず…
    質問ばかりで申し訳ありませんが、ご教示願えませんでしょうか。

    6
    どんぐりず 2021/02/13 (土) 11:19:09 0029a@1c915 >> 4

    追伸:
    プロパティで「移動ボタン」を表示するときちんと2つ目の商品タブが表示されますが、表示しないを選択すると1つ目のタブしか表示されません。なぜでしょうね・・?

    9
    hiroton 2021/02/16 (火) 09:24:24 1ab75@f966d >> 4

    hirotonの環境では再現できませんでした。たとえばForm_Currentに追加したコードをすべて削除すると(ページの表示ON/OFF機能を削除すると)ページは常に表示されたままになっていますか?

    11
    どんぐりず 2021/02/17 (水) 13:31:59 0029a@1c915 >> 4

    コードを全て削除すると、1つ目のタブのみ表示される状態になりました。

    12
    どんぐりず 2021/02/17 (水) 13:33:09 0029a@1c915 >> 4

    ちなみにこのとき、「移動ボタン」を表示していると1つ目のタブの状態でレコード2へ移動可能です。

  • 8
    hiroton 2021/02/16 (火) 09:02:59 1ab75@f966d >> 1

    新規で所属部署を登録する画面

    新規登録用の画面自体は[部署データ]フォームですか?
    [所属部署タブ]タブに[ページ4]を追加します

    Private Sub 所属部署タブ_Change()
        If Me!所属部署タブ = 4 Then
            Me!部署データ.Form.Recordset.AddNew
        Else
            If Me!部署データ.Form.NewRecord Then Me!部署データ.Form.Recordset.MoveFirst
            Me!部署データ.Form.Recordset.Move 所属部署タブ - (Me!部署データ.Form.CurrentRecord - 1)
        End If
    End Sub
    

    [ページ4]を選択すると新規登録用のレコードに飛ぶようになります。少し手抜きな部分(新規登録から既存のレコードに移るとちらつくかも)がありますが、動作を確認してみてください

    ちなみに、このコードだけだと、実際に新規レコードが追加されてもタブの表示は変わりません。「新規で所属部署が登録されたとき」にページのON/OFFを見直す必要があります。親フォームとサブフォームを行ったり来たりな処理でちょっと大掛かりになるので、続きが必要な場合にいは改めて質問を立てなおしてください(大元の質問は、それはそれで続けているようなので)

    13
    どんぐりず 2021/02/17 (水) 13:34:43 0029a@1c915 >> 8

    結構大掛かりになってきたのですね。ちょっと一旦考え直してみます。ありがとうございます!