VBA在表中查找变量匹配以防止重复

时间:2014-06-26 11:27:20

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

我一直在寻找一个月来如何做到这一点的答案,现在几乎没有帮助。

我想做什么:
我有一个Access 2013数据库(accdb),我需要将Excel(CSV)报告导入。我让导入VBA正常工作。我每周从一个站点获取报告,并希望通过访问更好地使用数据。我试图确保导入不允许导入相同的报告,以防止重复。我将尝试查询来自多个报告的结果,并且导入都将进入一个表。我在表中添加了一个字段,用于导入日期/时间,默认为Now(),因此我可以看到该记录属于哪个报告。我需要尝试使用CSV报告文件名(20140625.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变体。没有什么能在表中找到匹配。

1 个答案:

答案 0 :(得分:1)

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

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