2011-03-21 155 views
2

我有一個問題做一個查詢我的軟件...SQL查詢工作的管理工作室,但不是在C#

我有我的建立查詢的功能,然後執行它來填充一個gridview。但它一直拋出一個例外:「多部分標識符」「不能綁定」幾列。

當我在SQL Management Studio中嘗試查詢時,它只是正常工作。我真的不明白。這是查詢。

SELECT DISTINCT [NonConformite].[Numero], 
CAST ([NonConformite].[Numero] AS varchar (255)) AS Champ1, 
CAST ([NonConformiteDonneesComplementaires177_4].[Texte2] AS varchar (255)) AS Champ2, 
CAST (NonConformite.dbo.[NonConformiteStatut].[Libelle] AS varchar (255)) AS Champ3, 
CAST ([NonConformite].[Description] AS varchar (255)) AS Champ4 FROM [NonConformite].[dbo].[NonConformite] 
LEFT JOIN NonConformite.dbo.[NonConformiteDonneesComplementaires] as NonConformiteDonneesComplementaires177_4 
ON [NonConformite].[Numero] = [NonConformiteDonneesComplementaires177_4].[Numero] 
LEFT JOIN NonConformite.dbo.[NonConformiteStatut] 
ON [NonConformite].[CpteurStatut] = NonConformite.dbo.[NonConformiteStatut].[Cpteur] 

我使用Visual Studio 2008,SQL Server 2008和ASP.NET C#在Windows 7 Pro上工作。

謝謝你的回答!

+1

這是非常難以閱讀......你知道你可以使用別名來幫助使查詢健全,是嗎? – 2011-03-21 09:17:00

+0

您可以嘗試使用此查詢創建過程,並嘗試從代碼執行過程。 – buda 2011-03-21 09:25:32

回答

2

我會開始將查詢分解爲別名 - 看看是否有幫助;除非你是故意做跨數據庫的工作(通常是一個壞主意),刪除數據庫標識符,並且只使用當前的DB:

SELECT DISTINCT nc.[Numero], 
CAST (nc.[Numero] AS varchar (255)) AS Champ1, 
CAST (dc.[Texte2] AS varchar (255)) AS Champ2, 
CAST (st.[Libelle] AS varchar (255)) AS Champ3, 
CAST (nc.[Description] AS varchar (255)) AS Champ4 
FROM dbo.[NonConformite] nc 
LEFT JOIN dbo.[NonConformiteDonneesComplementaires] dc 
ON nc.[Numero] = dc.[Numero] 
LEFT JOIN dbo.[NonConformiteStatut] st 
ON nc.[CpteurStatut] = st.[Cpteur] 
+1

添加別名使程序更易於理解,您所做的方法有一些引發Exception的方法。根據@Marc Gravell的說法,跨數據庫工作將成爲此類問題的主要原因 – 2011-03-21 09:27:03

+0

不幸的是,我必須做跨數據庫工作,因爲我正在將標準應用程序轉換爲Web應用程序。我必須使用相同的數據庫。 – Pixayl 2011-03-21 09:32:03

+1

@Pixayl - 不知道該聲明如何使跨DB的工作成爲必需... – 2011-03-21 09:33:37

1

嘗試運行以下,並從底部向上刪除評論直到您可以確定問題所在。

SELECT * 
--DISTINCT [NonConformite].[Numero], 
--CAST ([NonConformite].[Numero] AS varchar (255)) AS Champ1, 
--CAST ([NonConformiteDonneesComplementaires177_4].[Texte2] AS varchar (255)) AS Champ2, 
--CAST (NonConformite.dbo.[NonConformiteStatut].[Libelle] AS varchar (255)) AS Champ3, 
--CAST ([NonConformite].[Description] AS varchar (255)) AS Champ4 
FROM [NonConformite].[dbo].[NonConformite] 
-- LEFT JOIN NonConformite.dbo.[NonConformiteDonneesComplementaires] as NonConformiteDonneesComplementaires177_4 
    ON [NonConformite].[Numero] = [NonConformiteDonneesComplementaires177_4].[Numero] 
-- LEFT JOIN NonConformite.dbo.[NonConformiteStatut] 
    ON [NonConformite].[CpteurStatut] = NonConformite.dbo.[NonConformiteStatut].[Cpteur] 
相關問題