Aggiornare datagrid in una rete lan

giovedì 28 aprile 2011 - 23.53
Tag Elenco Tags  Windows Server 2000  |  Windows XP  |  Visual Studio Express  |  Access (.mdb)

dario3 Profilo | Newbie

Ciao a tutti. Vi espongo subito il problema.
Ho fatto un piccolo applicativo con il quale inserisco dei record in un datagrid collegato ad un DB Access. Ho messo questo programma su un PC insieme al file .mdb, in una cartella condivisa, in modo da poter lavorare anche da altre tre postazioni collegate al server. Quello che vorrei conoscere è come fare per rendere visibili a tutti i PC, ogni inserimento fatto sul datagrid di ogni utente.
L'inserimento lo faccio sul recordset con AddNew --> elenco campi --> UpDate.
Ho usato ADODB con un recordset latoClient (anche per la possibilita di assegnarlo al datasource della griglia). Io pensavo di sfruttare gli eventi dei resordset per capire quando un nuovo record viene inserito... . Un evento generato da un recordset latoClient è visibile anche agli altri PC della rete?

Grazie per l'aiuto.
Dario

babbubba Profilo | Senior Member

>Quello che vorrei conoscere è come fare per rendere
>visibili a tutti i PC, ogni inserimento fatto sul datagrid di
>ogni utente.

L'evento vale per l'istanza dell'applicazione che ha eseguito l'insert al massimo puoi fare un refresh dei dati ogni tot secondi su tutti i client per avere i dati il più aggioranti possibile.

Altrimenti puoi complicarti la vita e facendo un'applicazione divisa in client e server... il client genera la richiesta di insert al server che inserisce e segnala la nuova riga a tutti i client connessi... molto molto complicato!!!

Buona fortuna... ma facci sapere come risolvi!!!!


Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

dario3 Profilo | Newbie

Ciao
ecco come come ho fatto:

rs.requery ' prima di aggiungere un nuovo record aggiorno il recordset
rs.AddNew
rs.fields("nomeCampo")= Nuovovalore
.....
.....
rs.upDate

In questo modo (del resto inevitabile per non complicarsi troppo la vita) ogni volta che
un utente aggiunge un record si ritrova sul suo DataGrid anche gli altri eventuali record
aggiunti dagli altri utenti.
D'altra parte se non si aggiorna il recordset prima dell' AddNew si corre il rischio di andare
ad inserire una nuova riga su un recordset che non rispecchia più la tabella (se altri hanno
inserito nuovi record).
Ora sono alle prese con il passaggio di una variabile ad un form il quale contiene due Frame
e vorrei rendere visibile uno oppure l'altro in funzione del valore che assume una variabile
esterna al form che imposto prima di fare il LoadFrm.
Sto pensando ad una cosa del tipo:

su FrmNote :

Private m_aggiorna As String

Public Property Get Aggiorna() As String
Aggiorna = m_aggiorna
End Property

Public Property Let Aggiorna(ByVal Valore As String)
m_aggiorna = Valore
End Property

If m_aggiorna="Prodotti" then: Frame1.Visible

dalla mia routine:
FrmNote.Aggiona="Prodotti"

Altre soluzioni ?
Grazie!
Dario

babbubba Profilo | Senior Member

Credo che visto che è una domanda nuova dovresti fare un nuovo tread... comunque...

Io avrei aggiunto nel form da aprire (quello che contiene gli oggetti da vedere o no) un proprietà del tipo:

public writeonly property Frame1Visible as boolean Set(value As boolean) frame1.visible = value End Set


e quando richiamo il form farò...

dim f as new FormDaAprire f.Frame1.visible = true 'così gli dico che voglio vedere il frame1 f.show

Certo, se hai inizializzato il controllo frame1 come pubblico o friend puoi accedere alla prorprietà visible direttamente senza fare una proprietà della classe form (anche se decisamente più elegante :-) )



Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

babbubba Profilo | Senior Member

ah per quanto riguarda l'insert... tu dici:

...D'altra parte se non si aggiorna il recordset prima dell' AddNew si corre il rischio di andare
ad inserire una nuova riga su un recordset che non rispecchia più la tabella (se altri hanno
inserito nuovi record)...

Allora se inserisci una nuova riga in una tabella con chiave primaria che si autoincrementa non è un problema... il nuovo id lo crea il database nel momento dell'insert... Per quanto riguarda le modifiche che altri han fatto a tabelle collegate a quella dove fai l'insert (magari hanno appena eliminato la categoria che tu hai scelto per il prodotto che stai inserendo) quello sarebbe un problema.
Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

dario3 Profilo | Newbie

Grazie mille e scusate per la nuova discussione, ci ho pensato solo dopo.....
Ora ho un problemino diverso che non riesco a risolvere. Apro un nuovo tread

babbubba Profilo | Senior Member

se risolvi con una soluzione che ti viene postata clicca su accetta sennò il tread rimane aperto senza motivo... se non hai risolto con una soluzione postata da un'utente sarebbe bello che postassi la soluzione per i posteri... risparmierai tempo a qualcun'altro che se credente dirà una preghierina per te scontandoti qualche anno di purgatorio :-)

Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5