Funzione MAX - Select su DataTable e DataView

Ho sperimentato sulla mia pelle che la funzione MAX ha un piccolo problema.
Effettua il controllo sul dato "Original" ed emette un errore: System.Data.VersionNotFoundException nel caso vi siano dei nuovi dati aggiunti e che quindi le righe siano nello stato di Added.
Fare la prova è molto facile:
Si inserisce una DataGrid in una form
Si inserisce una DataView
Si Popola la DataGrid collegandola alla DataView
Si inserisce un nuovo record sul DataView
Si inserisce un TextBox su cui introdurre il filtro contenente MAX
Si applica il filtro (il textbox contiene il testo in rosa):
dvDati.RowFilter "(DataProva = MAX(DataProva))";
 
Se non ci sono righe inserite funziona, appena si inserisce qualche nuova riga nel dataset esce l'errore indicato.
Ovviamente lerrore scompare non appena si applica l'AcceptChanges.
 
Per la prova ho utilizzato un dataset / dataview cui ho aggiunto alcune righe:
 int j = LibCs.LibDataSet.DsDati.Tables["TabeProva"].Rows.Count;
 for (int k = 1; k < 11; k++)
 {
     DataRow dr = LibCs.LibDataSet.DsDati.Tables["TabeProva"].NewRow();
     dr["Codice"] = k + j;
     dr["Descrizione"] = "riga " + (k + j).ToString();
     dr["DataProva"] = System.DateTime.Now.AddDays(k + j);
     LibCs.LibDataSet.DsDati.Tables["TabeProva"].Rows.Add(dr);
 }
 dvDati = new DataView();
 dvDati.Table = LibCs.LibDataSet.DsDati.Tables["TabeProva"];
 LibCs.LibDataSet.DsDati.AcceptChanges();
 dvDati.RowFilter = "";
 filtro = "(DataProva = MAX(DataProva))";
}
dvDati.RowStateFilter = DataViewRowState.CurrentRows;
dvDati.RowFilter = filtro;
dataGrid1.DataSource = dvDati;
dataGrid1.Refresh();
Senza l'AcceptChanges va in errore, con l'AcceptChanges funziona
 

Print | posted on lunedì 4 luglio 2005 15:39

Feedback

# re: Funzione MAX - Select su DataTable e DataView

Left by Antonio "tdj" Catucci at 04/07/2005 15:27
Gravatar Ciao, l'errore che descrivi mi sembra strano.
Hai provato ad impostare la proprietà RowStateFilter?
Ho provato a fare un veloce test ma con una colonna Integer e non ho avuto nessun tipo di problema. Inoltre l'eccezione VersionNotFoundException viene restituita quando si fa riferimento ad una Row eliminata.

# Max in Dataset | hilpers

Left by Pingback/TrackBack at 21/01/2009 18:21
Gravatar Max in Dataset | hilpers

Your comment:





 
Please add 3 and 8 and type the answer here:

Copyright © Luciano Bastianello

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski