[VS2008] refresh di una tabella con molti record

sabato 04 aprile 2009 - 19.35

danpres Profilo | Newbie


salve a tutti,

devo leggere i dati di una tabella di sqlserver che ha 80/100mila records, e la normalissima FILL di un sqldataadapter anche se un pò lenta mi va benissimo all'inizio (apertura schermata).

Il problema si presenta quando altri utenti inseriscono/modificano i record di questa tabella.

In poche parole la mia griglia del mio form, dovrebbe auto refresharsi senza chiudere e riaprire la schermata.
Ci sono modi per prendere solo i record cambiati senza ripetere una FILL ?
Gli aggiornamenti della griglia devono avvenire in tempo reale (ogni 1 o 2 secondi), se ripeto la fill è troppo lento e perderei le informazioni del record correntemente visualizzato.

Ci sono soluzioni ?

Dampyr Profilo | Junior Member

>
>salve a tutti,
>
>devo leggere i dati di una tabella di sqlserver che ha 80/100mila
>records, e la normalissima FILL di un sqldataadapter anche se
>un pò lenta mi va benissimo all'inizio (apertura schermata).
>
>Il problema si presenta quando altri utenti inseriscono/modificano
>i record di questa tabella.
>
>In poche parole la mia griglia del mio form, dovrebbe auto refresharsi
>senza chiudere e riaprire la schermata.
>Ci sono modi per prendere solo i record cambiati senza ripetere
>una FILL ?
>Gli aggiornamenti della griglia devono avvenire in tempo reale
>(ogni 1 o 2 secondi), se ripeto la fill è troppo lento e perderei
>le informazioni del record correntemente visualizzato.
>
>Ci sono soluzioni ?

Certo che ci sono...
Al volo e, in parole povere, mi viene in mente che al posto di usare sqldataadapter come datasource del grid, potresti usare un dataset (o datatable) riempito con i record che hai caricato con la fill dalla tabella.
Questa tabella deve avere dei campi per poter controllare quando i record sono stati inseriti e quando sono stati modificati.
Ogni volta che devi fare l'update fai una query (forse anche LINQ ti può venire in aiuto) che ti recupera solo i dati inseriti dopo l'ultimo orario dell'update (che ti sei messo via in una variabile).
Con questi dati, se hanno la data di inserimento uguale a quella di update (cioè il record è nuovo) lo inserisci nel dataset, invece, se i due valori sono diversi (modifica), fai una bella ricerca nel dataset e ti modifichi i record.
Un bel refresh del grid e tutto dovrebbe funzionare.
Altra cosa è per i record eliminati, li dovresti implementare una funzioncina che faccia un minimo di controllo sui dati, magari tramite un id.

... cerca di essere il giocatore di scacchi, non il pezzo sulla scacchiera...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5