1

ソースがフォームで、nullではないフィールドのみを出力するレポートを生成しようとしています。

そのために、フィールドごとに2つのテキストボックスがあります。それらは両方ともresizealbeです(縮小/拡大できます)。最初のテキストボックスはキャプション用で、そのソースは

=IIf([record] Is Null,"","Caption:")

2つ目は、レコード値自体です。recordがnullの場合、両方のテキストボックスの値は ""とnullであり、フォームに表示されたり、スペースを使用したりすることはありません。

2つの質問:

  1. これは、それを行うための最も賢い方法のようには思えません。誰かもっと良いアイデアがありますか?
  2. レポートにはチェックボックスも含まれています。この方法は、レポートを生成する前に少なくとも1つのチェックボックスをオン/オフにした場合にのみ機能します。それ以外の場合は、とにかくすべてのキャプションが表示されます。これは非常に奇妙です-なぜそれが起こるのか誰かが知っていますか?
4

1 に答える 1

1

これは、MS Access 2010 レポートまたはレイアウト ビューではなく、印刷プレビューでのみ正しく機能します。ギャップを閉じるには、コントロールに Can Shrink が必要です。Access 2010 では、"*_Label" がコントロールのラベルに割り当てられる既定の名前です。

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Dim ctl As Control

    For Each ctl In Me.Controls
        If ctl.ControlType = acLabel And ctl.Name Like "*_Label" Then
            ctl.Visible = Not IsNull(ctl.Parent)

            ''Bound checkboxes are never null, so hide false
            If ctl.Parent.ControlType = acCheckBox Then
                ctl.Visible = ctl.Parent
                ctl.Parent.Visible = ctl.Parent
            End If

        End If
    Next

End Sub
于 2013-01-08T13:33:54.933 に答える