Déjà bonjour à tous.
Depuis le temps que je parcours ce forum, je viens pour la première fois vous poser une question (car vraiment, je ne trouve pas ...)
J'utilise VS2008pro en vb.net.
Je crée un projet avec un Form et un DataClasse.
Dans mon DataClasse, je mets 2 tables de SQLServeur2005, ces deux tables étant associées entre elle correctement.
(Dans la table fnc, le champ liée devrai se nommer "num_per", mais c'est quelqu'un d'autre qui à créer la table, et je ne peu plus le modifier.)
Mon but au final étant de pouvoir modifier directement les champs en visuel dans un datagridview, puis d'enregistrer en base les modifications apporté avec le simple appel de "SubmitChanges()"
Je fais ma requête (linq) sur FNC, en indiquant les champs que je souhaite voir :
La jointure ce fait bien automatiquement, les 3 colonnes apparaissent, mais le datagridview est alors automatiquement bloqué, je ne peux rien modifier en visuel. (Donc ce cas ne répond pas à mon besoin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Me.DataGridView1.DataSource = From a In bd.fnc _ Select numero = a.numi_fnc, nom = a.liste_personnel.nom_per, description = a.des_fnc
Après de nombreux tests, j'ai remarqué que mon datagridview reste modifiable uniquement si je ne fait pas un "select" dans ma requête linq. Dans ce cas, l'appel de SubmitChanges() permet bien d'enregistrer en base les modifications apportés.
Donc je refait la même requête sans le "select",Alors le datagridview est modifiable (et enregistre bien les modifications), mais problème : j'ai une colonne nommé "liste_personnel" qui contient dans chaque case : "test2.liste_personnel". Cependant en observant le log de LINQ, je vois bien que le programme est tout prés de réussir ! Dés que j'affiche en visuel la colonne "liste_personnel", linq requête ma base pour récupérer les infos (uniquement celle visible), et voici le log :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.DataGridView1.DataSource = From a In bd.fncC'est bien la bonne requête, mais il faudrait cependant que le select porte uniquement sur "nom_per" et pas sur tous les champs, afin je pense de correctement s'afficher dans mon datagridview.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT [t0].[num_per], [t0].[nom_per] FROM [dbo].[liste_personnel] AS [t0] WHERE [t0].[num_per] = @p0 -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [46] -- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.21022.8 SELECT [t0].[num_per], [t0].[nom_per] FROM [dbo].[liste_personnel] AS [t0]......
Quelqu'un aurai une solution ou une piste pour ce problème ? je sent que je ne suis pas loin, mais vraiment, je ne trouve pas...
Merci d'avance pour votre attention.
J'ai également essayé en utilisant une Vue dans SQLServ, une vue n'est pas bloqué dans mon datagridview, mais les modifications apportés ne sont pas enregistrés en base quand j'appel SubmitChanges() (alors que c'est possible de modifier un champ dans le résultat d'une vue sous SQLservManager, mais c'est une autre histoire)
Partager