Newsgroup: it.comp.lang.visual-basic
Titolo: Aggiornare DataGrid

Salve a tutti!
Ho un problema con un datagrid:
Ho una form (form1) contenente un datagrid (datagrid1) ed un pulsante di
aggiungi(button1) che quando viene premuto apre un'altra form(form2) con una
maschera per l'inserimento dei dati.
Quando chiudo la  form2 l'inserimento č avvenuto ma per poter visualizzare
le modifiche sul datagrid1 devo chiudere e riaprire la form1 perchč?

 ha scritto nel messaggio
news:JmPW7.372849$sq5.18...@news.infostrada.it...


 > funziona......
anche io avevo provato con un pulsante, ma anche a me non da nessun
risultato...purtroppo no, non ho nessun trucchetto... chiudo e riapro la
form....

 ha scritto nel messaggio
news:a0hdrf$60r$1...@pegasus.tiscalinet.it...

perche' la form1 e' quella principale penso.....
un metodo (che non ho provato) e' quello di creare un form principale dal
quale caricare le altro 2 form, in questo modo puoi caricare e scaricare le
form senza chiudere il programma...non so se funziona ma potrebbe essere
un'idea......

 ha scritto nel messaggio
news:JmPW7.372849$sq5.18...@news.infostrada.it...

hai provato a fare un refresh prima del recordset e poi della griglia?
Devi sempre pensare che quando carichi i dati in una datagrid fai come una
fotografia alla tabella, se cambi il contenuto della tabella devi rifare la
fotografia.
Davide

 ha scritto nel messaggio
news:a0henm$n9h$1...@fe1.cs.interbusiness.it...


 uffa....
Io ho provato adesso e ti giuro che sul mio pc funziona.
Controllo adodc associato ad un controllo microsoft datagrid
faccio una modifica sulla tabella
non è necessario neppure fare il refresh del datagrid
basta farlo per il solo controllo ado.
dopo un'update è sufficente scrivere
adodc1.refresh
Provato ora, funge.
Davide

forse ho sbagliato qualcosa....
riprovo e poi oggi pom ti faccio sapere ok?
Cmq grazie mille!

 ha scritto nel messaggio
news:a0hk9q$9rv$1...@pegasus.tiscalinet.it...


 funziona :)
Vorrei sapere, quando manovri i dati, dalla seconda form, lo fai con lo
stesso controllo della form1 oppure con un controllo a parte posizionato
nella form2?
comunque ho provato in entrambi i casi e a me funziona, però le mie prove si
riferiscono alla tabella authors del database biblio(quello che c'è in
visual studio per fare le prove e al quale sono dedivati gli esempi
dell'msdn)
il mio codice è questo
sulla form 1
Adodc1.Recordset.AddNew
Adodc1.Recordset("au_id") = 20500
Adodc1.Recordset("author") = "ciccio"
Adodc1.Recordset.Update
Adodc1.Refresh
sulla form2
Form1.Adodc1.Recordset.AddNew
Form1.Adodc1.Recordset("au_id") = 20500
Form1.Adodc1.Recordset("author") = "ciccio"
Form1.Adodc1.Recordset.Update
Form1.Adodc1.Refresh
oppure
sulla form2
Adodc2.Recordset.AddNew
Adodc2.Recordset("au_id") = 20505
Adodc2.Recordset("author") = "ciccio"
Adodc2.Recordset.Update
Form1.Adodc1.Refresh
Tenendo conto che i campi sono solo 3 in + il mio pc è molto veloce (un
p800mhz 512mega di ram hd di tipo ultraveloce).
Mi viene da pensare che se nel tuo caso i campi sono di più e magari la
macchina è più lenta lui non riesca a fare completamente l'update prima
dell'aggiornamento quindi l'aggiornamento non tira su i dati.
Io tenterei innanzitutto a rifare la prova come ho fatto io con il database
biblio che trovi con visual studio così abbiamo già una cosa in + in comune
e se il problema fosse quello dell'update "troppo lento" IMHO ci sarebbero 2
possibilità una bella e una brutta.
BRUTTA:
provare a ritardare l'aggiornamento del recordset che so'...di 500ms
(tramite un timer) però corri il rischio che sul tuo pc non dia problemi ma
su quello di pinco pallino che è un po' sfigato e ha solo un p75 con 16 mega
di ram oppure in una qualsiasi particolare condizione a te non nota nè
prevedibile 500ms non siano sufficenti e comunque così facendo significa
castrare il programma
BELLA:
inserire un bel DoEvents dopo l'update in modo tale che lui prima aspetta
che l'update sia completamente finito e poi prosegue con le operazioni e
quindi aggiorna il recordset correttamente.
Fammi sapere
Sono curioso
Davide
:-)

Ciao io mi sono creato un progetto di prova da parte e mi funziona così come
funziona anche a te....
Ciò che non capisco è come mai nel progetto originale il refresh dell'adodc1
non funziona...
Io quando apro la form 2 imposto anche form1.enabled = false e quando chiudo
la form2 reimposto la proprietà = true. Subito pensavo che fosse quello il
motivo però poi nel progetto di prova ho ripetuto lo stesso procedimento e
mi funzionava ugualmente.... non so più cosa fare!
Il problema della velocità del PC non credo che possa esistere dato che ho
un Athlon 1.2GHz con 756 MB RAM.....
Quaindi non so....
Ho ancora una cosa da farti notare.... le queri di interrogazione dei due
recordset nel progetto originale sono diverse una dall'altra mentre nel
progetto di prova opero sullo stesso recordset....
Ciao e Grazie!

 Quaindi non so....
Quindi anche con il doevents niente da fare...

 progetto di prova opero sullo stesso recordset...
Sei sicuro che non capiti che inserisci dei dati che poi vengono filtrati
dalla query che te li fà vedere?
Davide

 "
niente....ripensandoci mi sono accorto di aver detto una ca??ata, visto che
hai anche scritto che uscendo e rientrando i dati ti venogno mostrati...
Ma hai provato usando do events?
Magari il problema sta nel fatto che il pc è troppo veloce ed esegue update
e refresh troppo ravvicinati....
Davide

Ciao ora sono riuscito a farlo aggiornare utilizzando un solo controllo
nella mia form1
Il problema è che quando clicco all'interno del datagrid e voglio spostare
il cursore dalla prima riga alla seconda terza o quarta ecc... per scorrere
i vari record devo farmi restituire i valori delle colonne corrispondenti...
ma mi da solo quelli della prima linea, cosa devo usare?
non ci sono metodi tipo getrow :(
Grazie!
PS Scusa ma con i datagrid proprio non ne avevo ancora avuto a che fare

non ci sono metodi tipo getrow :(
Non ho una gran dimestichezza con i controlli databound, ma perche'
non usare il recordset ado sottostante ?
-- 
ciao, hal

 Grazie!
Puoi usare il controllo associato alla griglia, cioè quando l'utente
seleziona un records ulla griglia adodc1.recordset("NOMECAMPO") ti
restituisce il valore selezionato dall'utente.
almeno, io uso questo sistema, poi se ce ne sono di migliori che qualcuno si
faccia avanti.

 ha scritto nel messaggio
news:X1JX7.7362$s04.3...@news.infostrada.it...


 Ruggero
č inutil eimpostare 2 ms, tanto la velocitą minima č 50ms...


Dipende dal controllo timer che usi...
guardati intorno.

 guardati intorno.
;-)