【问题标题】:VBA find variable match in table to prevent duplicatesVBA 在表中查找变量匹配以防止重复
【发布时间】:2014-06-26 11:27:19
【问题描述】:

一个多月以来,我一直在寻找有关如何执行此操作的答案,但几乎没有任何帮助。

我想做什么:
我有一个 Access 2013 数据库 (accdb),需要将 Excel (CSV) 报告导入其中。我让导入 VBA 正常工作。我每周从一个站点获取报告,并希望通过访问更好地使用这些数据。我试图确保导入不允许导入相同的报告,以防止重复。我将尝试从多个报告中查询结果,并且所有导入都放入一个表中。我在表格中添加了一个字段用于导入日期/时间,默认为Now(),这样我就可以看到该记录属于哪个报告。我需要尝试使用日期 (20140625.csv) 的 CSV 报告文件名更新表格。我想我也让那部分工作正常,记录值为 20140625。

我遇到的问题:
我无法在表中搜索文件名记录,然后如果记录与文件名匹配则不允许导入。我试过 dlookup 和几个不同的东西。没有任何工作。

这是我目前所拥有的:

Sub ImportCSV()
'First add reference to Microsoft Office Object Library
Dim strfilename As String
Dim rptN As String
Dim rptF As String
Dim look As String


With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Select the CSV file to import"
    .AllowMultiSelect = False
    .Filters.Clear
    .Filters.Add "CSV Files", "*.csv", 1
    .Filters.Add "All Files", "*.*", 2
    If .Show = -1 Then
        strfilename = .SelectedItems(1)
        rptF = Right(strfilename, Len(strfilename) - InStrRev(strfilename, "\"))
        rptN = Left(rptF, InStrRev(rptF, ".") - 1)
        End If
  End With

'dlookup not finding anything but first record in table
 look = DLookup("[rptName]", "tblCSVlog", "[rptName] = 'rptN'")

 If rptN = look Then
 'If rptN = DoCmd.FindRecord("'rptN'") = True Then
    MsgBox "Report " & rptF & " Already Exists"
     GoTo Hell
 'End If
 Else

'Import Works
       DoCmd.TransferText acImportDelim, , "GlobalRptCSV", strfilename, True 

'Add FileName to Table Works
       DoCmd.RunSQL ("insert INTO tblCSVlog ([rptName])Values (" & rptN & ")") 
Hell:
'Else
        'Exit Sub
    End If
'End With

Exit Sub
End Sub

有什么想法吗?我用变量 rptN、“rptN”、“'rptN'”尝试了各种 dlookup 变体。没有在表中找到匹配项。

【问题讨论】:

  • 您似乎将变量与其名称混淆了。试试看:look = DLookup("[rptName]", "tblCSVlog", "[rptName] = '" & rptN & "'")

标签: ms-access variables vba import-from-excel


【解决方案1】:

您似乎将变量与其名称混淆了。试试:

look = DLookup("[rptName]", "tblCSVlog", "[rptName] = '" & rptN & "'")

【讨论】:

  • 起初它不起作用,因为它挂断了空结果。所以我添加了 NZ() ,它似乎工作得很好。太感谢了。最后的 vba 行是:look = Nz(DLookup("[rptName]", "tblCSVlog", "[rptName] = '" & rptN & "'"), "")
  • @user2997752 抱歉,我没有过多介绍代码的细节。但我很高兴我帮助找到了正确的解决方案。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多