Access快速开发基础教程
网站公告
·Access专家课堂QQ群号:239158550    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access开发平台

盟威Access快速开发平台2.6.5.547版本--★附件功能详细说明★

时 间:2022-02-18 14:13:08
作 者:张旭军   ID:72228  城市:杭州
摘 要:盟威平台★附件功能详细说明★。
正 文:

威Access快速开发平台由于采用Mdb格式不能直接使用附件功能,但是附件在日常操作中有很多作用,希望大家学会原理,提高办公效率。

如果附件匹配上折叠功能,即简单又实用,尽供大家参考。

注意:2022-3-14已经更新,保存时报警提示。
感谢hjc19841984的帮助。
请把代码复制粘贴覆盖原代码。
1》在引导加载前【初始数据】【Public Function InitData()中需要【加载附件代码】

2》在传递参数之后,需要再【加载附件代码】一次,否则保存时会报警。
3》在加载保存时,【附件的保存代码】必须放在保存完成之后,否则保存时报警。

点击图片查看大图

点击图片查看大图


本文在欧志华先生的原理文章基础上  

 Access快速开发平台2.6.5.547版本--附件及图片功能注意事项  [欧志华 2022/2/16 10:26:32]

对原著的代码上进行注解,供大家参考。没有讲清楚的地方,请见谅!

再次感谢欧志华先生!


复制以下代码覆盖  http://www.accessoft.com/article-show.asp?id=20188  的frm商品信息_Edit   所有代码  供大家慢慢研究    见谅!


以下绿色部分是附件代码的使用说明和附件的重点代码!

附件代码的位置,增加的位置一定看清楚!

其中一个是加载附件的代码    一个是保存附件的代码,不要看错!


'【使用须知】    -----------------------------------------------------------------
'只能在平台上使用------------------------------------------------------------------
'编辑窗体中添加一个子窗体控件,控件名修改为“sfrAttachments”,其“源对象”属性设为“SysFrmAttachments”,
'然后在加载和保存数据时,添加一行调用代码即可
'以下对附件功能的详细说明见具体步骤
'附件功能使用以下函数
'函数LoadAttachmentData   加载附件功能的函数
'函数SaveAttachmentData   保存附件功能的函数
'详细的函数的使用说明     http://www.accessgood.com/help/UniversalAttachment.html

Option Compare Database
Option Explicit

Public Function InitData()
    ClearControlValues Me

     '--------------------------初始数据时此处必须加载附件,否则保存时报警---------------------------------------------------------
    
    Call Me.sfrAttachments.Form.LoadAttachmentData("商品照片", Me!商品ID)                  '附件添加的【加载作用】的代码
End Function

Private Sub Form_Load()
    If CanViewVBACode() Then
        On Error GoTo 0
    Else
        On Error GoTo ErrorHandler
    End If

    ApplyTheme Me
    LoadLocalLanguage Me
    '-------------------------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------------------------
    Dim cnn As Object                             '附件添加的代码       申明变量
    Set cnn = CurrentProject.Connection    '附件添加的代码      设置变量
    
    '-------------------------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------------------------
    
    If Nz(Me.OpenArgs) <> "" Then
        LoadRecord Me, "Select * FROM [商品信息表] Where [商品ID]=" & Nz(Me.OpenArgs, 0)
     End If
    
    '-----------------------------------------------------------------------------------
    
    '-----------------------------------------------------------------------------------
    Call Me.sfrAttachments.Form.LoadAttachmentData("商品照片", Me!商品ID, cnn)                  '附件添加的【加载作用】的代码

                       ’不能放在传递数据的地方,必须放在传递数据之后,否则保存时报警
    
    '-----------------------------------------------------------------------------------       ’“商品照片”的作用是给存放附件的名称  增加【前缀】作用
    '-----------------------------------------------------------------------------------       ’“商品照片”建议使用  对应窗体的关键名称当【前缀】

    If Me.DataEntry Then
        Me![商品ID] = Null
    End If

    Me.btnSave.Enabled = Me.AllowEdits

ExitHere:
    Exit Sub

ErrorHandler:
    MsgBoxEx Err.Description, vbCritical
    Resume ExitHere
End Sub

Private Sub btnSave_Click()
    If CanViewVBACode() Then
        On Error GoTo 0
    Else
        On Error GoTo ErrorHandler
    End If

    If Not CheckRequired(Me) Then Exit Sub
    If Not CheckTextLength(Me) Then Exit Sub

    Dim strWhere As String
    strWhere = "[商品ID]<>" & Nz(Me![商品ID], 0) & " AND [商品编码]=" & SQLText(Me![商品编码])

    If ACount("*", "商品信息表", strWhere) > 0 Then
        MsgBoxEx "【商品编码】已存在,不允许重复录入。", vbCritical
        Exit Sub
    End If

    Dim cnn: Set cnn = CurrentProject.Connection  'ADO.Connection()

   'cnn.BeginTrans
   'Dim blnTransBegin As Boolean: blnTransBegin = True

    Dim strSQL: strSQL = "Select * FROM [商品信息表] Where [商品ID]=" & Nz(Me![商品ID], 0)
    Dim rst:    Set rst = ADO.OpenRecordset(strSQL, adLockOptimistic, cnn)
    If rst.EOF Then rst.AddNew
    UpdateRecord Me, rst
    '你的自定义代码
    'rst!Field1 = Me!Field1
    'rst!Field2 = Me!Field2
    
   

    rst.Update
    rst.Close

   'cnn.CommitTrans
   'blnTransBegin = False

    RequeryDataObject gsfrList
    MsgBoxEx LoadString("Saved Successfully."), vbInformation

  '-------------------------必须放在保存之后 ,否则保存时报警------------------------------------------------------------------------
    '-------------------------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------------------------
     Call Me.sfrAttachments.Form.SaveAttachmentData("商品照片", Me!商品ID)        '附件功能添加的【保存作用】代码
    '-----------------------------------------------------------------------------------       ’“商品照片”的作用是给存放附件的名称  增加【前缀】作用
    '-----------------------------------------------------------------------------------       ’“商品照片”建议使用  对应窗体的关键名称当【前缀】


    If Me.DataEntry Then
        Me.InitData
    Else
        DoCmd.Close acForm, Me.Name, acSaveNo
    End If

ExitHere:
    Set rst = Nothing
    Set cnn = Nothing
    Exit Sub

ErrorHandler:
   'If blnTransBegin Then
   '    cnn.RollbackTrans
   '    blnTransBegin = False
   'End If
    MsgBoxEx Err.Description, vbCritical
    Resume ExitHere
End Sub

Private Sub btnCancel_Click()
    On Error Resume Next
    DoCmd.Close acForm, Me.Name, acSaveNo
End Sub


这里大家就知道   前缀的作用     这里的名称为  织造工艺照片      

以下相同颜色字体为对应位置关系


织造工艺照片    8822-601 020      源源竹节详细规格2.jpg
    【前缀】   +【窗体唯一值】 +【附件对象的全称】          ←系统保留在共享文件夹里格式  

以上格式见下面截图。


【注意这里是把原图片复制到【共享文件夹】里,建议原文件不要放此共享文件夹内,随着时间变化使用量的增加共享文件夹必定膨胀不方便管理也不安全】【建议把共享文件夹的属性右键改成隐藏,防止误操作】【共享文件夹也要定期维护,当文件缺失时打开对应的窗体会报错】



注意:在平台里附件不需要单独设置对应的行来源,直接在原窗体上增加一个子窗体,把子窗体必须取名为sfrAttachments,其“源对象”属性设为“SysFrmAttachments”,即可。

【SysFrmAttachments】是平台自带的窗体,所以只要创建一个子窗体指定相同的窗体名称就能借用其已经设置好的构架

【限制附件的方法】

sfrAttachments是附件功能的子窗体的名称

Me.sfrAttachments.Enabled=True     激活附件的权限

Me.sfrAttachments.Enabled=False    取消附件的权限



增加或者删除附件对象时,

【前缀】   +【窗体唯一值】 +【附件对象的全称】的命名原则上不会匹配紊乱的问题。

注意:附件的记录修改保存时与其他窗体工作原理不同 。

当在窗体里删除附件的内容时,共享文件夹也会同步自动删除对应的文件,放心使用。


关于共享文件夹的使用进阶

1》养成每年创建年份共享文件夹名称的习惯,集中收纳管理。

2》共享文件夹的主目录,根据水平采用隐藏手段,防止误删除发生

3》在共享文件夹内必须手动建立相应的年份的目录,否则系统报错。

4》原系统自动保存的附件文件,原存放路径只要不改变不会因为创建新的共享文件地址而失效。放心使用。


点击图片查看大图


常出的问题:

1》找不到附件    如果是局域网使用   在【系统设置】里设置本地的共享的文件夹】,其他用户是看不到附件内容。

2》如果DataID   在使用不是ID数字型  保存是没有问题的。  但是保存记录时有出错警告。因为DataID是平台自带的数字格式,

3》平台的根目录有一个【Attachments】文件夹是系统存放附件的,在【Attachments】还有一个文本文件UpdateFlag.ini。如果任意一个被清理,系统的附件的内容提示“找不到附件”。此文件夹最好把属性也改成隐藏,防止误操作。


窗体唯一值】尽量设置成数字类型。





示例学习:

盟威Access快速开发平台V2.6.5版(32位)附件示例


示例图示:

点击图片查看大图



Access快速开发平台QQ群 (群号:115180141)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助