ADO 记录集中的最大字段
Max fields in ADO recordset
我正在尝试在访问中创建一个安全数据库,在 excel 中创建一个用户表单。我了解所有 VBA 以及通过访问 excel 发送和接收数据的大部分语法。我的问题是我只能写入 64 个字段 (0-63) 我有超过 75 个列我想在访问和 excel 之间来回移动。这是我的一些代码,它不清楚。
' open the database based on type of save
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ace.OLEDB.12.0; Data Source=" & DBFullName & ";"
Set rs = New ADODB.Recordset
With rs
' open the recordset
'.MaxRecords = 70
.Open "SELECT * FROM " & TableName & " WHERE [Task_Number] = '" & MyCriteria & "'", cn, adOpenKeyset, adLockOptimistic
countfields = .Fields.Count 'Returns 132
.Fields(60).Value = "60" 'Works
.Fields(61).Value = "61" 'Works
.Fields(62).Value = "62" 'Works
.Fields(63).Value = "63" 'Works
.Fields(64).Value = "64" 'Does not work
.Fields(65).Value = "65" 'Does not work
.Fields(66).Value = "66" 'Does not work
.Fields(80).Value = "80" 'Does not work
.Update ' stores the new record
End With
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
.MaxRecords 设置为 0(无限制),但我也尝试将其更改为我需要的记录数以及我的记录集中有多少字段。
请在
之后将此添加到您的代码中
countfields = .Fields.Count 'Returns 132
看看会发生什么
Dim intLoop as long
For intLoop = 0 To (.fields.Count - 1)
With rs.fields.Item(intLoop)
Debug.Print .Name, .value, .type, .DefinedSize
End With
Next
感谢您的回复,但我能够弄清楚我遇到问题的原因。我是访问新手,当我构建 table 时,前 64 列被格式化为文本,但是当我添加更多列时,它们被格式化为日期......因此当我试图将文本或数字放入字段它会退出并表现得好像无法访问它。 HarveyFrench 你的回答会帮助我解决这个问题,我希望我能早点问这个问题...
再次感谢!我希望这可以帮助下一个遇到类似问题的人。
我正在尝试在访问中创建一个安全数据库,在 excel 中创建一个用户表单。我了解所有 VBA 以及通过访问 excel 发送和接收数据的大部分语法。我的问题是我只能写入 64 个字段 (0-63) 我有超过 75 个列我想在访问和 excel 之间来回移动。这是我的一些代码,它不清楚。
' open the database based on type of save
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ace.OLEDB.12.0; Data Source=" & DBFullName & ";"
Set rs = New ADODB.Recordset
With rs
' open the recordset
'.MaxRecords = 70
.Open "SELECT * FROM " & TableName & " WHERE [Task_Number] = '" & MyCriteria & "'", cn, adOpenKeyset, adLockOptimistic
countfields = .Fields.Count 'Returns 132
.Fields(60).Value = "60" 'Works
.Fields(61).Value = "61" 'Works
.Fields(62).Value = "62" 'Works
.Fields(63).Value = "63" 'Works
.Fields(64).Value = "64" 'Does not work
.Fields(65).Value = "65" 'Does not work
.Fields(66).Value = "66" 'Does not work
.Fields(80).Value = "80" 'Does not work
.Update ' stores the new record
End With
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
.MaxRecords 设置为 0(无限制),但我也尝试将其更改为我需要的记录数以及我的记录集中有多少字段。
请在
之后将此添加到您的代码中countfields = .Fields.Count 'Returns 132
看看会发生什么
Dim intLoop as long
For intLoop = 0 To (.fields.Count - 1)
With rs.fields.Item(intLoop)
Debug.Print .Name, .value, .type, .DefinedSize
End With
Next
感谢您的回复,但我能够弄清楚我遇到问题的原因。我是访问新手,当我构建 table 时,前 64 列被格式化为文本,但是当我添加更多列时,它们被格式化为日期......因此当我试图将文本或数字放入字段它会退出并表现得好像无法访问它。 HarveyFrench 你的回答会帮助我解决这个问题,我希望我能早点问这个问题...
再次感谢!我希望这可以帮助下一个遇到类似问题的人。