如何在access vba中的记录集中设置列值

Posted

技术标签:

【中文标题】如何在access vba中的记录集中设置列值【英文标题】:How to set column values in a record set in access vba 【发布时间】:2017-04-16 16:47:01 【问题描述】:

下面给出的是工作代码。以前我使用的 .Name 属性不起作用。 之前的代码:

      For Each s In rs.Fields
            word = Replace(strArray(count), """", "")
            count = count + 1
        'the below line shows error
            s.Name = word
        Next

新的完整的工作代码。它会打开一个对话框供用户选择 .csv 文件,然后将所有数据从该 csv 文件导入到表中。

    strMsg = "Select the file from which you want to import data"
mypath = GetPath(strMsg, True)
mypath = mypath

Dim strFilename As String: strFilename = mypath
Dim strTextLine As String
Dim strArray() As String
Dim count As Integer

Dim regex As New RegExp
regex.IgnoreCase = True
regex.Global = True
'This pattern matches only commas outside quotes
'Pattern = ",(?=([^"]*"[^"]*")*(?![^"]*"))"
regex.Pattern = ",(?=([^""]*""[^""]*"")*(?![^""]*""))"

Dim iFile As Integer: iFile = FreeFile
Open strFilename For Input As #iFile
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
count = 0

Do Until EOF(1)
    Line Input #1, strTextLine
    count = 0

'regex.replaces will replace the commas outside quotes with <???> and then the
'Split function will split the result based on our replacement
    On Error GoTo ErrHandler
    strTextLine = regex.Replace(strTextLine, "<???>")
    strArray = Split(regex.Replace(strTextLine, "<???>"), "<???>")
    Set rs = db("AIRLINES").OpenRecordset
    Dim word As Variant
    With rs
        .AddNew
        For Each s In rs.Fields
            word = Replace(strArray(count), """", "")
            count = count + 1
        'the below line shows error
            s.Value = word
        Next
        .Update
        .Close
    End With
lpp:
    Loop

db.Close
Close #iFile
MsgBox ("Imported Successfully")
Exit Sub
ErrHandler:
   Resume lpp

【问题讨论】:

也许s.Value = word ? 对我不起作用 错误是什么? @A.S.H 我没有增加计数变量。 【参考方案1】:

不要使用 Name 属性。使用价值。

你是如何填充数组的?如果它的基索引为 0,则在设置字段值后增加 Count。

【讨论】:

对我有用。会发生什么 - 错误消息,错误结果,什么都没有?编辑问题以发布整个过程。 它工作了谢谢我会粘贴完整的代码工作代码。 对不起,那天我赶时间。我必须赶上最后期限,所以我继续使用 long 方法,我必须指定所有 26 列的列名,然后为它们分配值。

以上是关于如何在access vba中的记录集中设置列值的主要内容,如果未能解决你的问题,请参考以下文章

将数组加载到记录集中以循环以增加值 vba 访问

使用 VBA 在 Access 2010 中的表单上显示记录集

如何从 VBA Access 中的查询中获取记录?

使用 Access VBA,如何计算选择查询中的输出记录数并将计数存储为 VBA 变量?

Access 2007 记录集问题

2010 Access vba如何将Excel中的displaygridlines设置为false?