下松市のFS社から、Accessで作った「完成実績検索」システムで、「ある製造番号の実績が表示されない」という連絡を受けた。
全て表示されないのであればプログラムミス(プログラムが壊れた)であろうが、そうではないところから、「データに何らかの問題点がある」と思われるので、実績を表示する過程を追った。
フォームデザイン
サブフォームを3っ使っている。
- 親フォーム
- 名前: F_完成実績検索
- サブフォームk: sfm実績 ‥‥ 問題となっている実績を表示するフォーム
- ソースオブジェクト: F_完成実績検索実績
- レコードソース: Q_完成実績検索実績
- [D_作業受付]⇔≪受付No≫⇔ [D_作業日報]⇒≪作業者コード≫⇒[T_社員名簿]
- 抽出条件: is社員 = True
- [D_作業受付]⇔≪受付No≫⇔ [D_作業日報]⇒≪作業者コード≫⇒[T_社員名簿]
- レコードソース: Q_完成実績検索実績
- リンク子フィールド: ID
- リンク親フィールド: txtID
- ソースオブジェクト: F_完成実績検索実績
- 親フォームのテキストボックス: txtID
- サブフォームlの: sfm一覧
詳細部のサブフォーム: sfm明細(ソース:F_完成実績検索明細)の裏に隠れている。(重なっている)
親フォームの Form_Load() 時、下記モジュール F_SubForm(1) を call している。- ソースオブジェクト: F_完成実績検索一覧
- レコードソース: Q_完成実績検索一覧
- [D_作業指図]⇔≪受付No≫⇔[D_作業受付]⇔≪受付No≫⇔[W_is印刷]
- レコードソース: Q_完成実績検索一覧
- リンク: なし
- ソースオブジェクト: F_完成実績検索一覧
原因の推定
- クエリー:Q_完成実績検索実績 の抽出条件である“is社員 = True” が利いているのではないだろうか?
- この件につき、メールで問い合わせ中‥‥
この条件はFS社の強い要求で 2006/05/29 に改修したもの。
- この件につき、メールで問い合わせ中‥‥
モジュール
※ F_SubForm
Private Sub F_SubForm(argStatus As Integer) Dim mbTitle As String mbTitle = MYObjName & "/F_SubForm" Select Case argStatus 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