2013-07-02 31 views
1

我有一個現有的應用程序在運行SQL Server CE的Windows Mobile上運行,並且正在使用C#語言進行內聯查詢。這是我的查詢Management Studio中正常工作:解析SQL Server CE中的查詢時出錯

command = @"SELECT 
       P_InspectionStep.InspectionStepID, 
       P_InspectionStep.Sequence AS Sequence, 
       P_InspectionStep.Title AS Title, 
       P_InspectionStep.Body AS Body, 
       P_InspectionStep.Photo AS Photo, 
       P_Inspection.RevisionID 
      FROM 
       P_InspectionStep 
      LEFT JOIN 
       P_Inspection ON P_Inspection.InspectionID = P_InspectionStep.InspectionID 
      WHERE 
       P_Inspection.InspectionID = '" + mInspectionID + "'" + 
       @"AND P_Inspection.CreateDate = (SELECT MAX(P_Inspection.CreateDate) FROM P_Inspection) 

      UNION ALL 

      SELECT 
       C_InspectionStep.InspectionStepID, 
       C_InspectionStep.Sequence AS Sequence, 
       C_InspectionStep.Title AS Title, 
       C_InspectionStep.Body AS Body, 
       C_InspectionStep.Photo AS Photo, 
       C_Inspection.RevisionID 
      FROM 
       C_InspectionStep 
      LEFT JOIN 
       C_Inspection ON C_Inspection.RevisionID = C_InspectionStep.RevisionID 
      WHERE 
       C_Inspection.InspectionID = '" + mInspectionID + "'" + 
       @"AND C_Inspection.CreateDate = (SELECT MAX(C_Inspection.CreateDate) FROM C_Inspection) 
      ORDER BY 2;"; 

但在應用程序返回此​​運行它:

有解析查詢時出現錯誤。 [令牌行號= 10,令牌行偏移= 132,令牌出錯=選擇]

我已經做了很多搜索,但無法找出如何解決這個問題。

回答

0

從提前運行另一個查詢提供

(SELECT MAX(P_Inspection.CreateDate) FROM P_Inspection) 

值。

+0

該解決方案還使我下@Alex k中描述的機異常解決方案。 – Blaze

0

你不能有一個子查詢返回標值,但你可以返回一組如此使用IN,而不是一個平等的測試:

... C_Inspection.CreateDate IN (SELECT MAX(C_Inspection.CreateDate) FROM C_Inspection) 
+0

我試過這個,我在應用程序exe中得到了一個本機異常,我無法用調試器趕上它。看起來像讀者移動方向的東西。我將命令值複製到一個sql查詢窗口中,並返回數據正常。 – Blaze