如何使用ADO获取记录集字段的Required和AllowZeroLength属性
ADO实现读取字段Required和AllowZeroLength属性方案
实现说明
ADO没有像DAO一样直接暴露这两个字段属性,需要通过Field对象的Properties集合读取对应属性值,以下是对应你现有DAO逻辑的改造代码:
早绑定实现(需提前引用ADO库)
操作步骤:在VBA编辑器点击「工具」→「引用」,勾选Microsoft ActiveX Data Objects x.x Library(x.x为版本号,选最高可用版本即可)
Dim CampoRS As String Dim Requerido As Boolean Dim Zero As Boolean Dim rs As ADODB.Recordset Dim conn As ADODB.Connection With frmCurriculum ' 初始化ADO连接,连接字符串替换为你实际的数据库连接配置 Set conn = New ADODB.Connection conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\你的数据库路径.accdb;" Set rs = New ADODB.Recordset ' 打开记录集参数对应原DAO的打开配置 rs.Open "SELECT * FROM tblCurriculum", conn, adOpenKeyset, adLockPessimistic, adCmdText For n = 0 To .Controls.Count - 1 CampoRS = .Controls.Item(n).Tag ' 读取Required属性 Requerido = rs.Fields(CampoRS).Properties("Required") ' 读取AllowZeroLength属性,注意属性名中间有空格 Zero = rs.Fields(CampoRS).Properties("Allow Zero Length") ' 后续原有逻辑保持不变 ...
晚绑定实现(无需引用,兼容性更强)
不需要提前引用ADO库,直接通过CreateObject创建对象即可:
Dim CampoRS As String Dim Requerido As Boolean Dim Zero As Boolean Dim rs As Object Dim conn As Object With frmCurriculum Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\你的数据库路径.accdb;" Set rs = CreateObject("ADODB.Recordset") ' 参数对应:adOpenKeyset=1, adLockPessimistic=2, adCmdText=1 rs.Open "SELECT * FROM tblCurriculum", conn, 1, 2, 1 For n = 0 To .Controls.Count - 1 CampoRS = .Controls.Item(n).Tag Requerido = rs.Fields(CampoRS).Properties("Required") Zero = rs.Fields(CampoRS).Properties("Allow Zero Length") ' 后续原有逻辑保持不变 ...
注意事项
- 仅Access数据库支持
Allow Zero Length属性,如果你连接的是SQL Server、MySQL等其他数据库,该属性不存在,需根据对应数据库的字段规则调整逻辑 - 你原DAO代码中的
rs.MoveFirst是多余操作,读取字段元数据属性不需要移动记录指针 - 原代码里的
Zero As Bollean为拼写错误,正确写法为Zero As Boolean
内容的提问来源于stack exchange,提问作者jmcl0000
相关产品推荐
相关产品推荐

