Bonjour

Voila mon problème :

Avec une application WPF j'affiche le résultat d'une requête SQL assez grosse dans un DataGrid.
Ce DataGrid est remplit grâce à un DataTable auquel j'ai passé la requête de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
_adapter = new SqlDataAdapter(sqlQuery, connection);
_dataTable = new DataTable();
_adapter.Fill(_dataTable);
dataGrid1.DataContext = _dataTable;
Voici la requête :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
 
with Orders_CTE ([ORDER], [SOrder], [Sales order desc], Name)
as
(
	select distinct [ORDER], [SOrder], [Sales order desc], Name
	from ZMD4C z4 inner join y_ko4_27000037 y on z4.[ORDER] = y.[Sales doc]
)
 
 
select [Plant], [MRP Area], [Purch. Group], [REQ No], [Material], [Short Text] as 'Iman Description',
[Unit of Measure], [Quantity], [Acct Assgt Cat.] as 'Account assignment',
[Item Category], [Cross-Plant Mat Stat], [Sales order desc] as 'Name of responsible Project controler',
[Requisn Date], [Release Date],[Delivery Date], [Fixed Vendor], [Exception codes], 
[Valuation Price], [Name] as 'Sold to Party', 
[Plant-Spec Mat Stat] as 'Plant-Spec Mat Stat (never purchased? Req)', 
[Pl. Deliv. Time], ["Fixed" Ind.], [Material Group], [PROJECT] as 'PROJECT (TA or multi)', 
[ORDER] as 'DEMAND', [SRM Bid], [SRM Contract], [SRM Vendor], [SRM Vendor Name], [SRM PO], [SRM PO Status]
from
	( select z.id, [Plant], [MRP Area], [Purch. Group], [REQ No], [Material], [Short Text],
			[Unit of Measure], [Quantity], [Acct Assgt Cat.],
			[Item Category], [Cross-Plant Mat Stat], [Sales order desc],
			[Requisn Date], [Release Date],[Delivery Date], [Fixed Vendor], [Exception codes], 
			[Valuation Price], [Name], 
			[Plant-Spec Mat Stat], 
			[Pl. Deliv. Time], ["Fixed" Ind.], [Material Group], [PROJECT], 
			[ORDER], [SRM Bid], [SRM Contract], [SRM Vendor], [SRM Vendor Name], [SRM PO], [SRM PO Status],
			ROW_NUMBER() OVER(PARTITION BY [REQ No] ORDER BY [ORDER] ASC) [RowNumber]
		from ZREQS z left outer join Orders_CTE d on z.[REQ No] = d.SOrder ) t
where RowNumber = 1;
Maintenant je voudrais pouvoir sauvegarder les changements effectués sur le datagrid (ajout, mise à jour, suppression).

j'ai donc voulu passer par le CommandBuilder avec quelque chose de ce genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SqlCommandBuilder scb = new SqlCommandBuilder(_adapter);
_adapter.UpdateCommand = scb.GetUpdateCommand();
_adapter.Update(_dataTable);
Et là BADABOUM ça plante parce que CommandBuilder ne prend pas en charge les requêtes dynamiques sur plusieurs tables

En cherchant un peu j'ai ensuite essayé de passer par le DataSet Wizard pour créé mon Dataset avec les bons TableAdapters (jamais utilisé d'ailleurs); mais le wizard ne prend pas en charge l'instruction "OVER" de ma requête

Je sèche un peu