Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Dataset e primi passi.....
mercoledì 19 gennaio 2005 - 12.35
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
d@dora
Profilo
| Senior Member
338
messaggi | Data Invio:
mer 19 gen 2005 - 12:35
ciao a tutti, sto muovendo i primi passi con i dataset (prima utilizzavo accessi diretti), ma mi ritrovo con un errore che non capisco :Error: Eccezione lanciata da un componente esterno.
il codice e' :
Dim a As OleDbDataAdapter = New OleDbDataAdapter(sSql, strASConn)
Dim s As DataSet = New DataSet
a.Fill(s, "Ancox")
Dim t As DataTable = s.Tables("Ancox")
Dim NewRec As DataRow
NewRec = t.NewRow
NewRec(campi1) = rs.Item(campi1)
.......
t.Rows.Add(NewRec)
a.Update(s, "Ancox")
istruzione che da l'errore !
NN capisco dove sbaglio .
Ciao e grazie
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
dom 23 gen 2005 - 15:02
Una cosa da sistemare che noto nel codice è la seguente:
dopo l'istruzione
a.Fill(s, "Ancox")
credo che dovresti eseguire l'istruzione
s.AcceptChanges()
in questo modo si dice al DataAdapter di considerare le modifiche sul dataset solo da qui in avanti (viene resettato il RowState di ogni DataRow caricato nel Dataset); diversamente quando invochi il metodo Update il dataadapter considererà come modifiche da applicare anche le righe lette con il metodo Fill e quindi, genererà degli statement INSERT anche per le righe già presenti nel database.
Se non sono stato sufficentemente chiaro chiedi ancora.
Ciao, Michele.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
dom 23 gen 2005 - 15:48
Sicuramente inserire AcceptChanges non sortisce nessun effetto.
Il dataadapter in caso di update che va a buon fine genera automaticamente il comando AcceptChanges.
Secondo me potrebbe funzionare dare EndCurrentEdit prima dell'update del dataadapter oppure ricercare in qualche oggetto collegato la causa dell'errore
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
dom 23 gen 2005 - 16:09
Sono d'accordo sul fatto che se Update va a buon fine viene eseguito AcceptChanges; il problema che evidenziavo io è a monte. Dopo la chiamata al metodo Fill tutte le righe caricate nel Dataset hanno RowState = Added e quindi senza AcceptChanges dipo il Fill il Dataadapter proverebbe a reinserirle nuovamente nel database.
Certo non è detto che sia questa la causa dell'eccezzione segnalata comunque mi sembrava il caso di segnalarla.
Ciao, Michele.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
dom 23 gen 2005 - 16:47
Quello che dici (dopo Fill le righe hanno lo stato inserted) non corrisponde al vero.
Fill, al pari di Update fa automaticamente l'acceptchanges lo stato dopo il fill o l'update è unchanged.
Se vuoi fare una prova popola un dataset e subito dopo prova a fare il test
if myDataset.HasChanges then MessageBox.Show("modifiche")
vedrai che in nessun caso dopo fill o update che sia andato a buon fine il messaggio comparirà
micto27
Profilo
| Senior Member
385
messaggi | Data Invio:
dom 23 gen 2005 - 16:58
hai ragione (ero sicuro che fosse come avevo scritto per un problema che avevo avuto tempo fa) facendo ora delle prove confermo invece la tua versione. Devo essermi confuso e quindi mi scuso.
Michele.
Torna su
Stanze Forum
Elenco Threads
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 !