MS Access查询产生无效的过程调用

时间:2018-11-14 13:26:59

标签: sql ms-access

如果我仅将以下查询与select语句一起使用,则访问中的查询工作正常。一旦成为追加查询,就会产生“无效过程调用”错误。

我将“ Publ”和“ PublLong”的问题列缩小了范围。两者都是长文本字符串。如果删除这两列,查询将更新而不会出现错误。

以下是在[Bezeichung]字段中找到的示例数据点:

  

publications.bank.com/publ-dl-ch/pdf/WhatsUp_20181113_en.pdf

我检查了要插入该表的表,并且数据类型相同,也没有看到任何其他设置会阻止插入。

我如何使其工作?

INSERT INTO tbl_MatomoRaw ( DownloadDate, IntExt, Publ, PublLong, 
                            PublDate, [Language], Download_Visits, PublMonth )
SELECT 
    Date() AS DownloadDate, 
    Left([Bezeichnung],InStr([Bezeichnung],".")-1) AS IntExt, 
    Nz(Mid([Bezeichnung],InStrRev([Bezeichnung],"/")+1,InStr([Bezeichnung],"_")-
        InStrRev([Bezeichnung],"/")-1),"") AS Publ, 
    Mid([Bezeichnung],InStrRev([Bezeichnung],"/")+1,InStrRev([Bezeichnung],"_")-
        InStrRev([Bezeichnung],"/")-1) AS PublLong, 
    Mid([Bezeichnung],InStr([Bezeichnung],"_")+1,8) AS PublDate, 
    Mid([Bezeichnung],Len([Bezeichnung])-5,2) AS [Language],
    xlsx_Output.[Eindeutige Downloads] AS Download_Visits, 
    Mid([Bezeichnung],InStr([Bezeichnung],"_")+1,6) AS PublMonth
FROM xlsx_Output
WHERE 
    (((Nz(Mid([Bezeichnung],InStrRev([Bezeichnung],"/")+1,InStr([Bezeichnung],"_")-
        InStrRev([Bezeichnung],"/")-1),"")) Not Like "#Func!"));

1 个答案:

答案 0 :(得分:1)

#Func!表示您的一个功能正在引起错误。

您的查询使用了多个函数,当您的输入不符合该格式时会遇到麻烦,请预先过滤而不是针对错误进行过滤,因为追加时无法针对错误进行过滤:

INSERT INTO tbl_MatomoRaw ( DownloadDate, IntExt, Publ, PublLong, 
                            PublDate, [Language], Download_Visits, PublMonth )
SELECT 
    Date() AS DownloadDate, 
    Left([Bezeichnung],InStr([Bezeichnung],".")-1) AS IntExt, 
    Nz(Mid([Bezeichnung],InStrRev([Bezeichnung],"/")+1,InStr([Bezeichnung],"_")-
        InStrRev([Bezeichnung],"/")-1),"") AS Publ, 
    Mid([Bezeichnung],InStrRev([Bezeichnung],"/")+1,InStrRev([Bezeichnung],"_")-
        InStrRev([Bezeichnung],"/")-1) AS PublLong, 
    Mid([Bezeichnung],InStr([Bezeichnung],"_")+1,8) AS PublDate, 
    Mid([Bezeichnung],Len([Bezeichnung])-5,2) AS [Language],
    [Eindeutige Downloads] AS Download_Visits, 
    Mid([Bezeichnung],InStr([Bezeichnung],"_")+1,6) AS PublMonth
FROM (SELECT * FROM xlsx_Output WHERE Len(Bezeichnung) > 5 AND Bezeichnung LIKE "*?.?*" AND Bezeichnung LIKE "*_????????*" AND Bezeichnung LIKE "*?\?*")
WHERE 
    (((Nz(Mid([Bezeichnung],InStrRev([Bezeichnung],"/")+1,InStr([Bezeichnung],"_")-
        InStrRev([Bezeichnung],"/")-1),"")) Not Like "#Func!"));

由于我不知道确切的错误发生位置,因此我无法编写适当的过滤器来识别它们,但根据您的查询判断,它们应在斜杠后加上一个斜杠和一个符号,一个下划线以及至少下划线后有8个符号,并且该点前后至少包含一个符号。