まりふのひと

サブフォームを重ね Visible プロパティで切り替えていた

F社のシステム,【完成実績検索】フォームで、検索後のレコードの並びがおかしいので原因を調べた。

  1. フォームを[デザイン]で開く。
  2. サブフォームを新しいウィンドウで開き、
    • レコードソースを調べる。
  3. レコードソースのクエリーをデザインで開き、
    • 並び替え項目を調べる。

問題ない‥‥のだ。が、腑に落ちない。

  1. もう一度フォームを開く。
    • ん? 並び替え項目がないじゃぁ?
    • [列の再表示]しても、並び替え項目がない。
  2. サブフォームをデザインで開く。
    • フィールドリストにも無いじゃん?

おかしいなぁ‥‥試行錯誤の繰り返し。
VBのソースを見ていたら、サブフォームが2っあることに気が付いた。

Private Sub F_SubForm(intStatus As Integer)
Dim mbTitle As String
    mbTitle = MYObjName & "/F_SubForm"
    Select Case intStatus
      Case 1
        With Me.sfm一覧
            .Width = 1440
            .Height = 1440
            .Top = 0
            .Left = 0
            .Width = CLng(200 * PC_constMtoT)
            .Height = CLng(60 * PC_constMtoT)
            .Visible = True
        End With
        With Me.sfm明細
            .Width = 1440
            .Height = 1440
            .Top = 0
            .Left = 0
            .Width = CLng(200 * PC_constMtoT)
            .Height = CLng(60 * PC_constMtoT)
            .Visible = False
        End With
      Case 2
        Me.sfm一覧.Visible = False
        Me.sfm明細.Visible = True
      Case 3
        Me.sfm一覧.Visible = True
        Me.sfm明細.Visible = False
     Case Else
        MsgBox PC_msgSystemError, vbCritical, mbTitle
        Exit Sub
    End Select
End Sub

2っのサブロームの大きさを揃え、Visible プロパティを True/Flase で切り替えていた。
その後、フォームをデザインで開いた時に、理解しやすいように、サブフォームをばらして保存するようにした。

※反省

自分で作ったのだから、文句も言えない。こんなので2時間費やしても、お金を貰えないョ。
VBはわかり易いようにコーディングしている積りだが、変わったフォームを作った時も、メンテしやすい形で保存しておかなくてはいけないことを痛感した。

(追加キーワード:Fors2)