F社のシステム,【完成実績検索】フォームで、検索後のレコードの並びがおかしいので原因を調べた。
- フォームを[デザイン]で開く。
- サブフォームを新しいウィンドウで開き、
- レコードソースを調べる。
- レコードソースのクエリーをデザインで開き、
- 並び替え項目を調べる。
問題ない‥‥のだ。が、腑に落ちない。
- もう一度フォームを開く。
- ん? 並び替え項目がないじゃぁ?
- [列の再表示]しても、並び替え項目がない。
- サブフォームをデザインで開く。
- フィールドリストにも無いじゃん?
おかしいなぁ‥‥試行錯誤の繰り返し。
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)