Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] ordinamento casuale datagrid

Ciao a tutti,
sto imparando a usare .net ma sono in difficoltà. L'ultimo problema in
ordine cronologico è questo: Utilizzo un datagrid per visualizzare un db
access che aggiorno in run time (aggiornando automaticamente il
datagrid). Un requisito fondamentale per l'applicazione è potere
visualizzare il database ordinato secondo la data e ora di inserimento
dei dati. Quindi, ordinando con questo criterio funziona tutto
perfettamente, fino alla 15a riga inserita. Quando inserisco la 16a riga
l'ordine precedentemente visualizzato nel datagrid si scombina e invece
di avere l'ordinamento atteso 16a, 15a, 14a, 13a, ..., 1a ottengo un
ordinamento tipo casuale: 9a, 3a, 4a, 5a, 6a, 8a, 16a, 10a ..., 7a, 1a,
2a.
Ho effettuato diversi tentativi, ma non cambia nulla.
Qualcuno sa darmi una spiegazione?
grazie
luigi
PS nel db access l'ordine rimane corretto.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sto imparando a usare .net ma sono in difficoltà...
ok... proviamo a ragionare...
a che cosa è collegata la datagrid per visualizzare i dati?
a un dataview, per caso?
hai provato ad utilizzare la proprietà order (o come diavolo si chiama) del
dataview?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 dataview?
Il Dataview non l'ho mai usato.
Nel Dataadaper uso questa istruzione:
SELECT tabella1.colonna1, tabella1.colonna2, tabella2.colonna1
FROM (tabella1 INNER JOIN tabella2 ON tabella1.colonna1=
tabella2.colonna1)
ORDER BY tabella1.colonna_Data DESC
La data viene assegnata automaticamente con l'istruzione:
Dim d1 As DateTime = Date.UtcNow
NewRowDataBase("Data") = d1
ciao
luigi


 come fai a "provare" a scriverla...
Dim d1 As DateTime = Date.UtcNow
NewRowDataBase("Data") = d1


 wrote in message
news:443c6b7e8bd540082d3...@mygate.mailgate.org

Probabilmente (cioè, sicuramente) hai ragione sui datatable e i
dataview: penso però che nella mia incompetenza sono riuscito a fare
funzionare quasi tutto, ma ho individuato un problema che ancora non ho
risolto.
Perchè la data e l'ora non vengono inserite correttamente nel database?
l'ora è sempre 0.00.00!
secondo me la chiave è nella messa a punto di questo input.
ciao
luigi


 l'ora č sempre 0.00.00!
beh, questo diventa un problema diverso.
effettivamente, se le cose stanno cosě, anche l'uso del dataview non ti
porterebbe molto lontano.
per sapere come mai la data non viene scritta nel database bisogna vedere
come fai a "provare" a scriverla...
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 sia.
e invece il dataset si?
il dataset è un "contenitore" di dati che puoi associare (con tutte le
imprecisioni di una analogia) ad un database. i dati sono contenuti in
"tabelle", che si chiamano datatable, e il dataadapter serve a "spiegare"
al programma come trasferire i dati dalle "tabelle" del database alle
"tabelle" del dataset.
prova a postare il codice che utilizzi, vedrai che, anche se non fai
esplicitamente uso di un datatable, questo oggetto sarà presente, magari
come valore restituito da una funzione.
il dataview non è altro che una "vista" su una datatable. in realtà,
quando associ una datatable ad una grid, fai uso della sua defaultview, ma
qui temo che cominceremmo a divagare...


 almeno, provaci :-)
Ho tanta buona volontà ma devo capire cosa sia prima di rifare tutto!


 Il Dataview non l'ho mai usato.
usalo :-)
almeno, provaci :-)


 NewRowDataBase("Data") = d1
questo lo avevi già scritto.
ma cosa è newrowdatabase?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 ma cosa è newrowdatabase?
Scusa, mancava un pezzo:
Dim NewRowDataBase As DataRow = DataSet.tabella1.NewRow


 NewRowDataBase("Data") = d1
e a questo punto tu hai una bella riga nuova.
la aggiungi alla tabella?
cioè, fai
dataset.tabella1.rows.add (newrowdatabase)
occhio che quella riga ha "valorizzato" solo il campo "data"...
nota a margine: spero che il tuo dataset abbia un nome diverso da
"dataset".


 punto.
se ho capito bene, sei semplicemente fuori strada.
hai una parte di codice, che probabilmente non hai scritto tu, che inserisce
una nuova riga in una tabella.
tu pensi che l'istruzione
Dim NewRowDataBase As DataRow = DataSet.tabella1.NewRow
ti restituisca questa riga appena aggiunta, in modo da poter modificare il
campo data.
sei in errore. l'istruzione di cui sopra restituisce una riga "vuota" ma con
i campi della tabella. bada bene: questa riga č, al momento della
generazione, "scollegata" dalla tabella; per "collegarla" devi popolare i
suoi campi e poi aggiungerla esplicitamente all'insieme rows della tabella
con il metodo add descritto qualche post fa.
il tuo problema si risolve andando a cercare, nell'insieme rows della tua
tabella (non dirmi che usi un dataset, scrivere dataset.tabella1 vuol dire
fare riferimento ad una datatable), quella che devi modificare (in base a
quale criterio effettuare la ricerca č una cosa che puoi sapere solo tu) e
quindi modificarla.
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 NewRowDataBase("Data") = d1
Non so perchč usi UtcNow, ma non č sufficiente un DateTime.Now?
Poi, la DataColumn associata (DataTable.Columns("Data")) di che tipo č?
Ciao

 quindi modificarla.
-- 


 "dataset".
Ho una serie di OleDbDataAdapter e relativi Dataset: ciascuno č nominato
con il nome di default
(Dataset21, Dataset31, ...). Per sapere a cosa sono riferiti c'č una
parte di listato dove vengono elencati.
Per quanto riguarda l'aggiornamento del database, ripeto: funziona tutto
e tutti i campi vengono aggiornati
nel modo corretto. L'unico problema č l'assegnazione della data.
Probabilmente č il formato della variabile d1 a dover essere messo a
punto.
Il problema č: come?
ciao
luigi


 Ciao


 ha scritto nel messaggio

Qualcuno mi sa dire come definire il tipo di colonna corretto?
luigi
