ADO记录集中的最大字段

时间:2015-08-26 14:02:07

标签: excel vba field ado recordset

我正在尝试在访问中创建一个安全的数据库,在excel中创建一个userform。我理解从访问excel发送和接收数据的所有VBA和大部分语法。我的问题是我只能写入64个字段(0-63)我有超过75列我想在access和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(无限制),但我也尝试将其更改为我需要的记录数以及记录集中的字段数。

2 个答案:

答案 0 :(得分:1)

请在

之后将其添加到您的代码中
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

答案 1 :(得分:0)

感谢您的回复,但我能够弄清楚我遇到问题的原因。我是新手,当我构建表时,前64列被格式化为文本,但是当我添加更多列时,它们被格式化为日期...因此当我试图将文本或数字放入字段时它只会退出并表现得像是无法访问它。 HarveyFrench你的回答会帮助我解决这个问题,我希望我能早点提出这个问题......

再次感谢!我希望这有助于下一个有类似问题的人。