4

最初我很高兴发现 Access 2010 中的附件字段。从美学上看,我的内心数据库纯粹主义者对此感到厌烦,但我内心懒惰的草皮在这里负责,从表面上看,它确实可以使我目前的项目更容易/更简单。令人高兴的是,它会在表单和报告上自动显示图片/图标,但是(为什么总是有一个但是啊!)它只显示第一个,我需要它来显示所有这些。

您当然可以一次滚动浏览附件,但我很确定我的客户不会穿上它,尽管他要求我在 MS-Access 中完成该项目,似乎只有非常基本的内置选项显示:/但是...

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

所以,盲目地进入虚空,我最初的策略是……

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

  1. 在该表中查询属于相关记录的所有附件
  2. 将这些字段显示/格式化为某种列表
  3. 动态地将新的附件字段附加到该列表的末尾,以便用户可以在某个地方上传下一个附件
  4. 每当添加附件时,请刷新表单页面,以便有一个免费的。

所以,我的问题是...

  1. 我在 Access 中描述的内容是否可行?
  2. 我错过了一个更简单/更好/规范的解决方案吗?
  3. Access 的脚本语言在显示方面有多强大?即笨重或像素完美?
  4. 它还不是 Visual Basic 是吗?(不!;)
  5. 如果是这样,我可以在表单/报告中使用任何其他脚本语言吗?

抱歉,我知道这是一个有点冗长的问题,但我在这里是一条没有水的鱼!

谢谢,

罗杰

4

2 回答 2

8

假设我有一张带有附件的表格:

附表

假设我在希望显示的附件字段之一中有三张图像。我可以创建一个查询:

附件查询

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

附件表格

于 2012-12-16T19:40:33.280 回答
0

我搜索了这个类似的问题。我每个字段有多个附件。我打算使用该字段来存储两个图像控件的 .jpg 和 .pdf 文件,这两个图像控件是通过将字段从属性拖到表单中创建的。我将它们命名为 ctlImage 和 ctlFeatures。我将此表单用作产品目录表单上更多信息按钮的非模态弹出窗口。到目前为止,我能够在产品目录中搜索记录并使用选定的列表框搜索结果打开带有 where 子句的表单,以将详细信息表单设置为当前记录。当我尝试操纵 ctlImage 寻找图像类型时,在智能感知中显示的唯一属性是 ctlImage.value。我希望将 ctlImage 分配给 jpg 并将 ctlFeatures 分配给 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 则记录集将返回到第一行。除了您上面的回答之外,我几乎没有看到有关操纵附件对象的信息,而且帮助一直很困难,因为它甚至不包括在附件字段内的访问。在这个话题上,我会做更多的提问而不是回答,我非常感谢你们中的许多人花时间来制定答案。罗林格言:在需要时寻求帮助,在被要求时提供帮助,并记住你来自哪里。

于 2014-10-10T04:21:23.737 回答