J'ai cherché longtemps avant de comprendre ce qui coinçait car c'était une erreur d'exécution.

Voila le problème :

J'ai, dans SQL Server 2012, une vue qui fonctionne sans souci. Je décide de prendre juste la partie SELECT... et l'intégrer dans une appli Windows Form. J'ai déjà fait ce type d'appli avec un programme exemple du Coach Microsoft. Mais dans mon cas ça coince et l'erreur se ramasse sur le nom du champ.

D'abord voici ma requête SQL de ma vue SQL Server sans reproche

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
SELECT Auteurs.Nom, Auteurs.Prénom, Ouvrages.Titre, 
    Ouvrages.[Sous-titre], Catégories.[Nom de la catégorie], 
    Editeurs.Nom AS Editeur, Collections.[Titre de collection]
FROM Catégories INNER JOIN
    Auteurs INNER JOIN
    Editeurs INNER JOIN
    Collections ON 
    Editeurs.éditeurID = Collections.éditeurID INNER JOIN
    Ouvrages ON Editeurs.éditeurID = Ouvrages.éditeurID AND 
    Collections.collectionID = Ouvrages.collectionID ON 
    Auteurs.auteurID = Ouvrages.auteurID ON 
    Catégories.catégorieID = Ouvrages.catégorieID
GROUP BY Auteurs.Nom, Auteurs.Prénom, Ouvrages.Titre, 
    Ouvrages.[Sous-titre], Catégories.[Nom de la catégorie], 
    Editeurs.Nom, Collections.[Titre de collection]
Collée dans une variable string (en supprimant les retours à la ligne que C# n'aime pas, même si ça fait un code moche comme tout) ça ne fonctionne pas et ExecuteReader se ramasse avec ce qu'il considère comme un dépassement de capacité sur le premier champ rencontré. Erreur pas évidente et j'ai séché longtemps. Mettre des crochets [Auteurs].[Nom] de résout rien. En fait c'est le nom de la table (Auteurs) qui précède qui ne va pas. Simplifiant ma requête à l'extrême aux fins de débogage ça ne fonctionnait pas mieux avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT Auteurs.Prénom, Auteurs.Nom FROM Auteurs
et parfaitement avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT Prénom, Nom FROM Auteurs
Pourquoi donc ne pas pouvoir préfixer le nom du champ avec le nom de la table comme c'est une bonne habitude prise en SQL ? D'autant plus conseillé que lors d'un SELECT à rallonge avec des JOIN en pagaille le moteur SQL risque de grimacer sur des ambigüités.

Question subsidiaire : Peut-on utiliser directement une vue dans un code Windows Form de la même façon qu'on utilise une procédure stockée (en l'appelant par son nom) ?

Merci à tous de vous pencher sur mes petites misères.