在Microsoft Access 2010表单和报表中显示多个附件

时间:2012-12-16 15:29:56

标签: ms-access access-vba ms-access-2010

我最初非常高兴地发现Access 2010中的附件字段。这是一个美学上让我的内部数据库纯粹主义感到烦恼的功能,但我内心懒惰的草皮在这里充电,它看起来就像它可能一样使我当前的项目之一更容易/更简单。令人高兴的是,它会在表格和报告上自动显示图片/图标,但是(为什么总是有一个但是呃!)它只显示第一个,我需要它来显示所有这些。

你当然可以一次滚动一个附件,但我很确定我的客户不会佩戴它,尽管他要求我在MS-Access中完成项目,似乎只有非常简陋的内置在显示选项中:/ BUT ......

我可能错了,我几乎没有MS-Access经验。我的编码背景是LAMP堆栈和网络,所以我对Windows / Access生态系统中提供的内容一无所知。我怀疑有优秀的第三方报告工具可以提供非常灵活的布局,但我需要查看表单上的所有附件,而不仅仅是报告。

所以,盲目地陷入虚空我最初的策略就是这个......

为附件创建单独的表,其中每个字段都是仅包含单个项目的“附件”。然后在表单和报告中使用脚本编写...

  1. 查询属于该问题记录的所有附件的表格
  2. 将这些字段显示/格式化为某种列表
  3. 动态地将新附件字段附加到该列表的末尾,以便用户可以在某处上传下一个附件
  4. 只要添加了附件,就可以刷新表单页面,这样就可以免费提供附件。
  5. 所以,我的问题是......

    1. 我在Access中描述的是否可行?
    2. 我错过了一个更简单/更好/规范的解决方案吗?
    3. Access的脚本语言参考显示有多强大?即笨重或像素完美?
    4. 它还不是Visual Basic吗? (noooooo!;)
    5. 如果有,我可以在表格/报告中使用任何其他脚本语言吗?
    6. 对不起,我知道这是一个长长的毛茸茸的问题,但我这里的水是一条鱼!

      谢谢,

      罗杰

2 个答案:

答案 0 :(得分:7)

我们说我有一张带附件的表格:

attachment table

让我们说我希望显示的其中一个附件字段中有三个图像。我可以创建一个查询:

attachment query

之后我可以创建一个连续的表单:

attachment form

答案 1 :(得分:0)

我搜索了一个类似的问题。我每个字段都有多个附件。我打算使用该字段为两个图像控件存储.jpg和.pdf,我通过将字段从属性拖动到表单来创建。我已将它们命名为ctlImage和ctlFeatures。我使用此表单作为产品目录表单上的更多信息按钮的非模态弹出窗口。到目前为止,我能够搜索产品目录中的记录并使用选定的列表框搜索结果打开带有where子句的表单,以将详细信息表单设置为当前记录。当我尝试操纵ctlImage寻找图像类型时,在intellisense中显示的唯一属性是ctlImage.value。我希望将jt和ctlFeatures的ctlImage分配给pdf这里是frmProducts btnMoreInfo_Click代码和frmCatalogDetails代码,以防一方弄乱另一方。

Private Sub btnMoreInfo_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim str As String
    Dim row As Long
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblProducts", dbOpenSnapshot)

        If Me.lstSearchResults.ItemsSelected.Count > 0 Then

            ' Debug.Print Me.lstSearchResults.Column(0)
            row = Me.lstSearchResults.Column(0)
            rs.MoveFirst
            rs.FindFirst "ProductID=" & row
            Debug.Print rs("Description")
            DoCmd.OpenForm "frmCatalogDetails", acNormal, , "ProductID=" & Me.lstSearchResults.Column(0, Me.lstSearchResults.ItemsSelected), acFormReadOnly, acWindowNormal

        Else
            MsgBox "You must select a product"
            Exit Sub
        End If
End Sub

和目录详情

Option Compare Database
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fld As DAO.Field

Private Sub Form_Load()

    Set db = CurrentDb

    'Set rs = db.OpenRecordset("tblProducts", dbOpenSnapshot)


    'Set fld = rs("image")

    Debug.Print rs("ProductID")
    Debug.Print rs("Description")
    'me.ctlImage.ControlSource =

    'Me.ctlImage.CurrentAttachment = fld.Value    
End Sub

rs语句已被注释掉,因为我无法使用此表单从父表单中识别rs。我得到一个未设置的块变量,但如果我执行rs.openRecordSet,则记录集将返回第一行。除了你上面的回答,我看到很少关于操纵附件对象,并且帮助很难,因为它甚至不包括在附件字段内访问。我正处在一个问题上,而不是回答这个问题,我非常感谢你们许多人采取的时间来制定答案。 罗林 座右铭:在需要时寻求帮助,在被问及时给予帮助,并记住你的来源。