网站首页 > 知识剖析 正文
盟威Access快速开发平台由于采用Mdb格式不能直接使用附件功能,但是附件在日常操作中有很多作用,希望大家学会原理,提高办公效率。
如果附件匹配上折叠功能,即简单又实用,仅供大家参考。
本文在欧志华先生的原理文章基础上
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
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
'----------------------------------------------
'----------------------------------------------
Call Me.sfrAttachments.Form.SaveAttachmentData("商品照片", Me!商品ID, cnn) '附件功能添加的【保存作用】代码
'---------------------------------------------- ’“商品照片”的作用是给存放附件的名称 增加【前缀】作用
'---------------------------------------------- ’“商品照片”建议使用 对应窗体的关键名称当【前缀】
rst.Update
rst.Close
'cnn.CommitTrans
'blnTransBegin = False
RequeryDataObject gsfrList
MsgBoxEx LoadString("Saved Successfully."), vbInformation
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》原系统自动保存的附件文件,原存放路径只要不改变不会因为创建新的共享文件地址而失效。放心使用。
演示图:
示例下载:
猜你喜欢
- 2024-11-26 chrome系列-扩展程序开发学习-js内嵌
- 2024-11-26 HTML元素语义化,提升网页品质
- 2024-11-26 前端知识杂记(vite&webpack option&composition watch)
- 2024-11-26 那些你从不使用的且有趣的HTML属性
- 2024-11-26 javaScript-第三章
- 2024-11-26 怎么修改WordPress网站divi主题修改中文字体样式CSS?
- 2024-11-26 PDF开发工具Aspose.PDF功能推荐——在.NET中将PDF转换为HTML
- 2024-11-26 TinyMCE 编辑邮件模板 FineUICore
- 2024-11-26 Rust 代码风格 Tips
- 2024-11-26 HTML学习笔记(1)
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)