代码之家  ›  专栏  ›  技术社区  ›  rohrl77

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

  •  0
  • rohrl77  · 技术社区  · 6 年前

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

    我已经把冒犯的专栏缩小为“Publ”和“PublLong”。两者都是长文本字符串。如果删除这两列,查询将更新,不会出现错误。

    [Bezeichung] 字段:

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

    我怎样才能让它工作?

    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 回复  |  直到 6 年前
        1
  •  2
  •   Erik A    6 年前

    #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个符号,以及点前后至少有一个符号的点。