Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109

    [VB.NET] - Update in serie di tableAdapter non fungono.

    Ciao a tutti!
    E' normale che 2 tableadapter che lanciano l'update sul database di seguito non riescano ad eseguirlo?

    Mi spiego meglio:

    ta1.Update(myDataTable1)
    ta2.Update(myDataTable2)

    La tabella 1 si aggiorna nel DB, la 2 no!
    E' come se il secondo Update non aspettasse che si concluda il primo.
    Infatti se li divido (mettendoci in mezzo altre azioni) funziona...

    Sbaglio qualcosa io? A me serve averli così in serie (perchè col catch exception lancio tutti i rejectedChanges in caso di errore).

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Evinco dalle mancate risposte che non è normale che sta cosa succeda!

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Dalle ultime verifiche fatte su un progetto di esempio sembra quasi che la tabella figlio non registri le modifiche come "ancora da accettare"...
    Quindi quando si va in update non aggiorna nulla non avendo nessun record da aggiornare....

    E' come se da qualche parte venisse lanciato un acceptChanges() silente...

    Da che può dipendere? Dalla relazione creata nel Dataset tipizzato? Perchè nel progetto di prova altro non ho fatto....

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    AGGIORNAMENTO IMPORTANTE:

    Scusate se aggiungo a rate ma sto continuando a fare test!
    Ho capito cosa succede (ma non so come evitare che succeda).

    Come saprete il metodo UPDATE di una datatable lancia in automatico un acceptChanges() il che è anche utile direi.
    Io pensavo che l'acceptChanges() però riguardasse solo la tabella in oggetto di UPDATE mentre così non è...

    In sostanza nel momento in cui lancio il primo UPDATE l'acceptChange() silente rende anche tutte le altre righe delle altre tabelle marcate come "unchanged" e quindi non sottoposte al successivo UPDATE...

    Come si può ovviare a questo problema? Qualcuno ci si è mai scontrato?

    Grazie

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Quote Originariamente inviata da Veronica80 Visualizza il messaggio
    Come saprete il metodo UPDATE di una datatable lancia in automatico un acceptChanges() il che è anche utile direi.
    Io pensavo che l'acceptChanges() però riguardasse solo la tabella in oggetto di UPDATE mentre così non è...
    [...]
    Come si può ovviare a questo problema? Qualcuno ci si è mai scontrato?
    Direi che rientra perfettamente nel funzionamento del meccanismo. Il DataSet è progettato per contenere più tabelle replicando all'occorrenza i legami (foreign keys) presenti tra le stesse, scaricando una copia dei dati e disconnettendosi completamente dal database.

    A questo punto, questa copia di dati può essere modificata in tutti i modi, aggiungendo/modificando/eliminando righe da tutte le tabelle, in pratica modificando la fotografia scaricata in precedenza dal database.

    L'uso dell'Adapter e del metodo Update() consentono di aggiornare il database con tutte le modifiche apportate all'insieme dei dati che sono contenuti nel DataSet, in modo da portarle su DB e considerarle "accettate" nella copia locale in memoria rappresentata dal DataSet.

    Utilizzando lo stesso DataSet, o applicando un Fill() a un nuovo DataSet, teoricamente è possibile ripartire da capo con il ciclo.

    Questo è almeno quello che conosco del modello "briefcase" e di come è implementato in .NET, così come è presente in altri linguaggi (es. Delphi) con componenti similari (ClientDataSet, MemTable, ecc.).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Quote Originariamente inviata da alka Visualizza il messaggio
    L'uso dell'Adapter e del metodo Update() consentono di aggiornare il database con tutte le modifiche apportate all'insieme dei dati che sono contenuti nel DataSet, in modo da portarle su DB e considerarle "accettate" nella copia locale in memoria rappresentata dal DataSet.
    Si ma applicando l'update in realtà non mi porta tutte le modifiche su database...

    Se io ho 10 tabelle e ne modifico 2 lancio l'UPDATE solo per i tableAdapter di quelle tabelle giusto? Se no ogni mi risposta tutto e in caso di mole di dati cospiqua ruba tempo.

    Il problema è che qui devo fare UPDATE di 2 tabelle ma della seconda non me la fa perchè quando lancio il primo Update lui segna tutto il dataset come acceptChanges() e di conseguenza non trova più nulla da spostare!

    Non so se mi sto spiegando bene...

    In sostanza mi starebbe anche bene che mi sposti tutto il dataset ogni volta (anche se in realtà preferirei di no) però se lo facesse...invece qui non sposta ma marca comunque come accettato...

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Scusate ma mi è rimasto un dubbio che vorrei chiarire...
    Mi confermate che se io ho un dataset dove modifico più tabelle e poi voglio caricare i dati sul DB la cosa non funziona se non per la tabella per la quale lancio il primo update (che poi marca anche tutte le altre come unchanged anche se non ne ha caricato i dati?).

    Cioè e normale e giusto così? Perchè a sto punto allora mi serve un piccolo aiuto su quale sia la sintassi corretta da usare!

    Grazie (scusate è giusto perchè' son bloccata e non ho ben capito se il mio problema è tale o è la normalità)

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Forse potrebbe esserti d'aiuto il TableAdapterManager.UpdateAll:
    Procedura dettagliata: salvataggio dei dati dalle tabelle dati correlate (aggiornamento gerarchico)
    https://msdn.microsoft.com/it-it/library/bb384432.aspx

  9. #9
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Forse potrebbe esserti d'aiuto il TableAdapterManager.UpdateAll:
    Procedura dettagliata: salvataggio dei dati dalle tabelle dati correlate (aggiornamento gerarchico)
    https://msdn.microsoft.com/it-it/library/bb384432.aspx
    Ti ringrazio Gibra appena torno in ufficio provo! Anche se mi pare davvero assurdo che se modifico 2 tabelle devo eseguire l'update di tutto il dataset (che sono 23 tabelle piene di dati).
    Ti aggiorno dopo!

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    L'articolo precedente parla di aggiornamento gerarchico (non so sia il tuo caso).
    Questo invece è più generico:
    Salvataggio dei dati nei dataset
    https://msdn.microsoft.com/it-it/library/y2ad8t9c.aspx

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.