2016-10-25 32 views
0

我有一個運行大查詢的存儲過程(SP),當我使用默認值執行或調試時它工作正常參數,在Microsoft SQL Server Management Studio 2014中。問題在於下一個。當該SP它是從SSRS執行在VS 2008的報表服務工具選項卡「預覽」,我設置相同的默認參數,這個錯誤出現。'+ replicate('。在字符串'後面的未封閉引號')順序錯誤1'

附近「+複製(」閉合的引號的語法不正確之後的字符串')按1排序。

這是我的全部代碼:

set @vlcc_condicitmp = 'where (dfechamovi between convert(datetime,'''[email protected]_dfechainic+''',103) and convert(datetime,'''+ @vlcc_dfechafina+''',103))' 
set @vlcc_condici6 = ' order by '[email protected]_orden 

set @sentsql1_expresion = 'SELECT inmovinven.cnumproduc,Cast ('' '' as char) as nconsresol,inmovinven.ccodmovinv,'+ 
         'inmovinven.ctipodocum,inmovinven.cllavedocu,'+ 
         'inmovinven.dfechamovi,inmovinven.cunimedida,'+ 
         'inmovinven.ncantidad,inmovinven.ccodbodega,'+ 
         'inmovinven.ccodbodego,inmovinven.npreciouni,'+ 
         'inmovinven.npreciotot,inmovinven.nexistante,'+ 
         'inmovinven.nexistdesp,inmovinven.nprecioant,'+ 
         'inmovinven.npreciodes,inmovinven.ctipasient,'+ 
         'inmovinven.cnumasient,inmovinven.ccuentacon,'+ 
         'inmovinven.cdescripci,cpdocument.cnumdocume,inproducto.cnumeserie,'+ 
         'inproducto.cnomproduc,inproducto.ccateprodu,inproducto.clocalizac,'+ 
         'fadocument.cnumdocume as cnumfactur,intipmovin.ctipoperad, '+ 
         'inmovinven.ccodigousu,intipmovin.cdesmovimi,inmovinven.cconseajus,'' '' as cnomunidad '+ 
         'FROM #inmovintmp as inmovinven LEFT JOIN '[email protected]+'.dbo.'+'cpdocument ON '+ 
         'inmovinven.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
         [email protected]+'.dbo.'+'inproducto ON inmovinven.cnumproduc = inproducto.cnumproduc '+   
         'LEFT JOIN '[email protected]+'.dbo.'+'fadocument on inmovinven.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fadocument.nconsdocum))+ltrim(str(fadocument.nconsdocum)) '+ 
         'inner join '[email protected]+'.dbo.'+'intipmovin on inmovinven.ccodmovinv = intipmovin.ccodmovinv '+ @vlcc_condicitmp + @vlcc_condici1 +' and inmovinven.ncantidad > 0' 

       set @sentsql2_expresion = 'SELECT inhmovinve.cnumproduc,Cast ('' '' as char) as nconsresol,inhmovinve.ccodmovinv,'+ 
         'inhmovinve.ctipodocum,inhmovinve.cllavedocu,'+ 
         'inhmovinve.dfechamovi,inhmovinve.cunimedida,'+ 
         'inhmovinve.ncantidad,inhmovinve.ccodbodega,'+ 
         'inhmovinve.ccodbodego,inhmovinve.npreciouni,'+ 
         'inhmovinve.npreciotot,inhmovinve.nexistante,'+ 
         'inhmovinve.nexistdesp,inhmovinve.nprecioant,'+ 
         'inhmovinve.npreciodes,inhmovinve.ctipasient,'+ 
         'inhmovinve.cnumasient,inhmovinve.ccuentacon,'+ 
         'inhmovinve.cdescripci,cpdocument.cnumdocume,inproducto.cnumeserie,'+ 
         'inproducto.cnomproduc,inproducto.ccateprodu,inproducto.clocalizac,'+ 
         'fahdocumen.cnumdocume as cnumfactur,'+ 
         'intipmovin.ctipoperad,inhmovinve.ccodigousu,intipmovin.cdesmovimi,inhmovinve.cconseajus,'''' as cnomunidad '+ 
         'FROM #inhmovitmp as inhmovinve LEFT JOIN '[email protected]+'.dbo.'+'cpdocument ON '+ 
         'inhmovinve.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
         [email protected]+'.dbo.'+'inproducto ON inhmovinve.cnumproduc = inproducto.cnumproduc '+ 
         'LEFT JOIN '[email protected]+'.dbo.'+'fahdocumen on inhmovinve.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fahdocumen.nconsdocum))+ltrim(str(fahdocumen.nconsdocum)) '+ 
         'inner join '[email protected]+'.dbo.'+'intipmovin on inhmovinve.ccodmovinv = intipmovin.ccodmovinv ' + @vlcc_condicitmp + @vlcc_condici2 +' and inhmovinve.ncantidad > 0' 

       IF (@vlcc_ctipoperad = 'I' OR @vlcc_ctipoperad = 'T') 
        BEGIN 
         SET @sentsql3_expresion = 'SELECT inmovinven.cnumproduc,Cast ('' '' as char) as nconsresol,inmovinven.ccodmovinv,'+ 
          'inmovinven.ctipodocum, inmovinven.cllavedocu,'+ 
          'inmovinven.dfechamovi, inmovinven.cunimedida,'+ 
          'inmovinven.ncantidad as ncantida,inmovinven.ccodbodega as ccodbodega,'+ 
          'inmovinven.ccodbodego, inmovinven.npreciouni,'+ 
          'inmovinven.npreciotot, inmovinven.nexistante,'+ 
          'inmovinven.nexistdesp, inmovinven.nprecioant,'+ 
          'inmovinven.npreciodes, inmovinven.ctipasient,'+ 
          'inmovinven.cnumasient, inmovinven.ccuentacon,'+ 
          'inmovinven.cdescripci, cpdocument.cnumdocume,inproducto.cnumeserie,'+ 
          'inproducto.cnomproduc, inproducto.ccateprodu,inproducto.clocalizac,'+ 
          'fadocument.cnumdocume as cnumfactur, intipmovin.ctipoperad,'+ 
          'inmovinven.ccodigousu,intipmovin.cdesmovimi,inmovinven.cconseajus,'' '' as cnomunidad '+ 
          'FROM #inmovintmp as inmovinven LEFT JOIN '[email protected]+'.dbo.'+'cpdocument ON '+ 
          'inmovinven.cllavedocu = cpdocument.cllavedocu INNER JOIN ' 
          [email protected]+'.dbo.'+'inproducto ON inmovinven.cnumproduc = inproducto.cnumproduc '+ 
          'LEFT JOIN '[email protected]+'.dbo.'+'fadocument on inmovinven.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fadocument.nconsdocum))+ltrim(str(fadocument.nconsdocum)) '+ 
          'inner join '[email protected]+'.dbo.'+'intipmovin on inmovinven.ccodmovinv = intipmovin.ccodmovinv '+ 
          + @vlcc_condicitmp + @vlcc_condici3+' AND inmovinven.ccodbodego <> '' '' and inmovinven.ncantidad < 0' 
        END 
       ELSE 
        BEGIN 
         SET @sentsql3_expresion = 'SELECT inmovinven.cnumproduc,Cast ('' '' as char) as nconsresol,'[email protected]+'.dbo.'+'inmovinven.ccodmovinv,'+ 
          'inmovinven.ctipodocum, inmovinven.cllavedocu,'+ 
          'inmovinven.dfechamovi, inmovinven.cunimedida,'+ 
          'inmovinven.ncantidad * -1 as ncantidad, inmovinven.ccodbodego as ccodbodega,'+ 
          'inmovinven.ccodbodego, inmovinven.npreciouni,'+ 
          'inmovinven.npreciotot, inmovinven.nexistante,'+ 
          'inmovinven.nexistdesp, inmovinven.nprecioant,'+ 
          'inmovinven.npreciodes, inmovinven.ctipasient,'+ 
          'inmovinven.cnumasient, inmovinven.ccuentacon,'+ 
          'inmovinven.cdescripci, cpdocument.cnumdocume, inproducto.cnumeserie,'+ 
          'inproducto.cnomproduc, inproducto.ccateprodu, inproducto.clocalizac,'+ 
          'fadocument.cnumdocume as cnumfactur, intipmovin.ctipoperad,'+ 
          'inmovinven.ccodigousu, intipmovin.cdesmovimi,inmovinven.cconseajus,'''' as cnomunidad '+ 
          'FROM #inmovintmp as inmovinven LEFT JOIN '[email protected]+'.dbo.'+'cpdocument ON '+ 
          'inmovinven.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
          [email protected]+'.dbo.'+'inproducto ON inmovinven.cnumproduc = inproducto.cnumproduc '+ 
          'LEFT JOIN '[email protected]+'.dbo.'+'fadocument on inmovinven.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fadocument.nconsdocum))+ltrim(str(fadocument.nconsdocum)) '+ 
          'inner join '[email protected]+'.dbo.'+'intipmovin on inmovinven.ccodmovinv = intipmovin.ccodmovinv '+ 
          [email protected]_condicitmp + @vlcc_condici1 +' AND inmovinven.ccodbodego <> '' ''' 
        END 
       IF (@vlcc_ctipoperad = 'I' OR @vlcc_ctipoperad = 'T') 
        BEGIN 
         SET @sentsql4_expresion ='SELECT inhmovinve.cnumproduc,Cast ('' '' as char) as nconsresol, inhmovinve.ccodmovinv,'+ 
           'inhmovinve.ctipodocum, inhmovinve.cllavedocu,'+ 
           'inhmovinve.dfechamovi, inhmovinve.cunimedida,'+ 
           'inhmovinve.ncantidad as ncantidad, inhmovinve.ccodbodega as ccodbodega,'+ 
           'inhmovinve.ccodbodego, inhmovinve.npreciouni,'+ 
           'inhmovinve.npreciotot, inhmovinve.nexistante,'+ 
           'inhmovinve.nexistdesp, inhmovinve.nprecioant,'+ 
           'inhmovinve.npreciodes, inhmovinve.ctipasient,'+ 
           'inhmovinve.cnumasient, inhmovinve.ccuentacon,'+ 
           'inhmovinve.cdescripci, cpdocument.cnumdocume, inproducto.cnumeserie,'+ 
           'inproducto.cnomproduc, inproducto.ccateprodu, inproducto.clocalizac,'+ 
           'fahdocumen.cnumdocume as cnumfactur,'+ 
           'intipmovin.ctipoperad, inhmovinve.ccodigousu, intipmovin.cdesmovimi, inhmovinve.cconseajus,'' '' as cnomunidad '+ 
           'FROM #inhmovitmp as inhmovinve LEFT JOIN '[email protected]+'.dbo.'+'cpdocument ON '+ 
           'inhmovinve.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
           'inproducto ON inhmovinve.cnumproduc = inproducto.cnumproduc '+ 
           'LEFT JOIN '[email protected]+'.dbo.'+'fahdocumen on inhmovinve.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fahdocumen.nconsdocum))+ltrim(str(fahdocumen.nconsdocum)) '+ 
           'inner join '[email protected]+'.dbo.'+'intipmovin on inhmovinve.ccodmovinv = intipmovin.ccodmovinv '+ 
           + @vlcc_condicitmp [email protected]_condici4 +' AND inhmovinve.ccodbodego <> '' '' AND inhmovinve.ncantidad < 0' 
        END 
       ELSE 
         BEGIN 
          SET @sentsql4_expresion = 'SELECT inhmovinve.cnumproduc,Cast ('' '' as char) as nconsresol, inhmovinve.ccodmovinv,'+ 
           'inhmovinve.ctipodocum, inhmovinve.cllavedocu,'+ 
           'inhmovinve.dfechamovi, inhmovinve.cunimedida,'+ 
           'inhmovinve.ncantidad * - 1 as ncantidad, inhmovinve.ccodbodego as ccodbodega,'+ 
           'inhmovinve.ccodbodego, inhmovinve.npreciouni, '+ 
           'inhmovinve.npreciotot, inhmovinve.nexistante, '+ 
           'inhmovinve.nexistdesp, inhmovinve.nprecioant, '+ 
           'inhmovinve.npreciodes, inhmovinve.ctipasient, '+ 
           'inhmovinve.cnumasient, inhmovinve.ccuentacon, '+ 
           'inhmovinve.cdescripci, cpdocument.cnumdocume, inproducto.cnumeserie,'+ 
           'inproducto.cnomproduc, inproducto.ccateprodu, inproducto.clocalizac,'+ 
           'fahdocumen.cnumdocume as cnumfactur,'+ 
           'intipmovin.ctipoperad, inhmovinve.ccodigousu, intipmovin.cdesmovimi, inhmovinve.cconseajus,'' as cnomunidad '+ 
           'FROM #inhmovitmp as inhmovinve LEFT JOIN '[email protected]+'.dbo.'+'cpdocument ON '+ 
           'inhmovinve.cllavedocu = cpdocument.cllavedocu INNER JOIN '+ 
           [email protected]+'.dbo.'+'inproducto ON inhmovinve.cnumproduc = inproducto.cnumproduc '+ 
           'LEFT JOIN '[email protected]+'.dbo.'+'fahdocumen on inhmovinve.cllavedocu = ''VE''+ replicate('''+'0'+''',15-len(fahdocumen.nconsdocum))+ltrim(str(fahdocumen.nconsdocum)) '+ 
           'inner join '[email protected]+'.dbo.'+'intipmovin on inhmovinve.ccodmovinv = intipmovin.ccodmovinv '+ 
           + @vlcc_condicitmp + @vlcc_condici2 + ' AND inhmovinve.ccodbodego <> '' ''' 
         END 
       IF(@vlcc_chkmovdestino ='S') 
        BEGIN 
         SET @sentsql_expresion = @sentsql1_expresion + ' union all (' + @sentsql2_expresion + ')' + @vlcc_condici6       
        END 
       ELSE 
        BEGIN 
         SET @sentsql_expresion = @sentsql1_expresion + ' union all (' + @sentsql2_expresion + ') union all (' + @sentsql3_expresion + ') union all (' + @sentsql4_expresion + ')' + @vlcc_condici6 
        END 

       SET @sentsql2_expresion = 'DROP TABLE #inmovintmp' 
       SET @sentsql3_expresion = 'DROP TABLE #inhmovitmp' 

       exec sp_executesql @sentsql_expresion      
       IF @@ROWCOUNT <= 0 
       BEGIN 
        exec sp_executesql @sentsql2_expresion     
        exec sp_executesql @sentsql3_expresion 
        set @vlci_errorState=1 
        SET @vlci_errorSeverity=16 
        SET @cMensajeExc ='No se puede mostrar el reporte' 
        SET @nIdLogExcAG = -1 
        RAISERROR (@cMensajeExc,@vlci_errorSeverity,@vlci_errorState) 
        return                  
       END 

       exec sp_executesql @sentsql2_expresion     
       exec sp_executesql @sentsql3_expresion 

請幫助我,我嘗試一切,錯誤仍然存​​在。我嘗試播放跳過的引號('),認爲我錯過了一些東西,但沒有。謝謝

+0

我會嘗試改變每一個'「」 VE「」 +複製(「」「'與'」「VE」「」 +複製(「」'' – Lamak

+1

你真的應該清理爲什麼你不能直接擁有''foobar'? –

+0

@拉馬克,我嘗試着不斷的嘗試,現在我找到了解決方案。 –

回答

0

該解決方案發送正確的參數,不要忘記任何人。我在做下一個:

  1. 在SQL Server Management Studio的選項卡「工具」中打開Profiler工具。
  2. 在「預覽」選項卡中運行報告。
  3. 抓住用它的參數和值調用的sql語句。
  4. 運行與該SP的參數

之後,SQL Server Management Studio中顯示了相同的錯誤SSRS和我想通了,問題是在參數。然後,我檢查參數,看到我將其中一個空字符串。這是一個example image

感謝您的快速回答

相關問題