Problema Refresh Dati

martedì 08 maggio 2007 - 13.27

cloud85it Profilo | Newbie

Ciao ,
sto cercando di creare un apllicazione su vb.net , ora ho un problema :

nella mia applicazione ho una form nella quale faccio l'inserimento di dati in un db access che funziona perfettamente , e nella stessa form ho un DataGridView che visualizza i dati di questo database , il problema è che anche se faccio un refresh del DataGridView non vengono visualizzati i dati che ho inserito nell'ultima sessione , per vederli nel DataGridView devo chiudere e riaprire l'applicazione.

Volevo sapere se c'è un modo per "refreshare" e quindi poter rivedere subito i dati.

Grazie in anticipo a chi mi risponderà.

Ciao

Cteniza Profilo | Guru

Quello che segnali è un caso classico che capita a chi fa gli aggiornamenti nel database tramite comandi sql dati in modo diretto (con oledbcommand) e ha anche una datatable / dataset locali che sono la fonte dati del datagridview.
In questo caso gli aggiornamenti fatti nel database non si riflettono sui dati locali e diventa come se fosse stato un'altro utente ad inserire i dati.
Per "riavere" ci sono due possibilità:
- rileggere e rigenerare il dataset / datatable (fill del dataadapter)
- gestire i dati dal datagridview o dal datatable e poi dare il comando update del dataadapter

cloud85it Profilo | Newbie

Grazie , ho provato in tutti i modi , cmq scusa se approfitto della tua gentilezza , ma senza usare comandi sql diretti (oledbcommand) come potrei fare?

Grazie mille per l'aiuto.

Ciao.

Cteniza Profilo | Guru

Utilizzi i metodi del datatable / datagridview per aggiornare i dati

zami Profilo | Junior Member

Ciao,

Scusate se mi inserisco nella discussione, ho una situazione simile.

ho:

Un data table, caricato all'inizio, che contiene una struttura tipo "codice, oggetto, data, nominativo"

Una textbox a cui tramite data binding è stato assegnato "oggetto"

Un Datagridview a cui tramite databinding sono stati assegnati "codice" e "oggetto"

Le azioni sono queste

1) al load sto sulla riga 0 del datagridview: "oggetto" vale "primo" sia nella textbox che nel DGV

2) cambio il testo nella textbox, e di conseguenza nel datatable, assegnando a "oggetto" il valore "secondo"

3) clicco su una riga diversa del DGV

4) Al rowchanged del DataTable eseguo un AcceptChanges sul datatable e una update tramite comando SQL e ExecuteReader

5) risultato: nel DB, nel Datatable e nella Textbox "oggetto" vale "secondo", mentre nel DGV vedo ancora "primo"

Suggerimenti??

non posso eseguire l'update in modo diverso, questo è uno standard del progetto

Grazie mille ciao
Michela
"in questo mondo, noi non siamo i passeggeri... siamo l'equipaggio"

dibs79 Profilo | Newbie

Non riesco a refreshare il mio datagridview(Result_Ricerca) all'interno di un Controllo Utente ad ogni ricerca eseguita con un tasto.
In NESSUN forum su internet nessuno è ancora riuscito a dirmi dove sbaglio.

Io sono sicuro che l'associazione con il database è corretta perché clickkando su una riga mi si apre un form con gli stessi dati e anche se il datagridview non refresha i risultati sono quelli della query appena effettuata.
Ho provato con refresh, update del datagridview del Parent etc... ma NIENTE!
Dove sbaglio????

Considerando il testo che segue come la routine di evento di un tasto che aggiorna ed esegue la query v.cmd.CommandText

v.ds.Tables.Clear();
v.ds.Clear();
MySqlDataAdapter da = new MySqlDataAdapter(v.cmd.CommandText, v.conn);
da.Fill(v.ds, "TAB_SOFTWARE");
this.Result_Ricerca.AllowUserToAddRows = false;
this.Result_Ricerca.AutoGenerateColumns = true;
this.Result_Ricerca.DataSource = v.ds;
this.Result_Ricerca.DataMember = "TAB_SOFTWARE";
this.Result_Ricerca.Columns[0].HeaderText = "CODICE SOFTWARE";
this.Result_Ricerca.Columns[1].HeaderText = "TIPOLOGIA";
this.Result_Ricerca.Columns[2].HeaderText = "DATA DI CREAZIONE";
this.Result_Ricerca.Columns[3].HeaderText = "AUTORE";
this.Result_Ricerca.Columns[4].HeaderText = "DERIVA DA";
this.Result_Ricerca.Columns[5].HeaderText = "DESCRIZIONE";

da = null;
v.ds = null;
this.Result_Ricerca.Refresh();
this.Result_Ricerca.Update();

DomA Profilo | Expert

ti posto il codice che utilizzato per visualizzare i dati della tabella clienti in una datagridview:

'LA RUOTINE PROVVEDE A CARICARE I DATI NELLA GRIGLIA
'INFINE CHIUDE LA CONNESSI0NE

Dim strConnessione As String = "Data Source=" & NomePerc & "Provider = Microsoft.Jet.OLEDB.4.0;C:\...\dbRCF.mdb"
Dim Conn As OleDb.OleDbConnection
Conn = New OleDb.OleDbConnection(strConnessione)
Dim cmdClienti_b As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("SELECT ° FROM Clienti ORDER BY Denominazione", strConnessione)
Dim DSC As DataSet = New DataSet
cmdClienti_b.Fill(DSC, "Clienti")
Dim dvClienti As DataView = DSC.Tables("Clienti").DefaultView
With Me.DataGridView1
.DataSource = dvClienti
End With
dvClienti = Nothing
DSC = Nothing
Conn = Nothing
p.s. io utilizzo un db access
Buon Lavoro
Domenico Mancina

dibs79 Profilo | Newbie

Grazie mille!
Sono riuscito a risolvere il problema con questa riga:
if(v.ds.Tables.Count>0) v.ds.Tables[0].Clear();

Quando faccio la ricerca utilizzo solo la tabella 0 del dataset e poi voglio eliminarla.
Ho notato che se facessi più query, poi mi caricherebbe la tabella 1 poi 2 etc...
Inserendo questa riga credo che sia simile al tuo codice in cui la tabella la dichiari localmente.

Grazie ancora

DomA Profilo | Expert

un consiglio se qualcuno ti ha aiutato nel risolvere il tuo problema allora dovresti accettare la sua risposta. è solo un modo di ringraziare.

p.s. io no uso il c#

Domenico Mancina

dibs79 Profilo | Newbie

chiedo scusa.
non volevo offendere nessuno.
Non è un problema di linguaggio, credo sia comprensibile l'uno come l'altro anche se preferisco c#.

volevo solo dire che in questi giorni ero riuscito a risolvere il problema e al di là del codice credo di avere utilizzato lo stesso mezzo tuo, ovvero riaggiornare le tabelle del dataset..

Se non ti ho ringraziato abbastanza mi scuso ancora.

DomA Profilo | Expert

o.k.
alla prossima.
ciao
Domenico Mancina
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5