VB 2010 problema Sql CE 3.5 e Dataset

venerdì 21 settembre 2012 - 22.02
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

alsa Profilo | Junior Member

Salve ragazzi,
sono nuovo del forum per cui spero di postare nella stanza giusta.
Oltre che nuovo del forum però, sono nuovo anche nello sviluppo di applicazioni che interagiscano con un database Sql.
In particolare sto sviluppando un applicazione nella quale sto implementando un database con Sql Compact Edition 3.5, e ho un problema che ormai da giorni non riesco a risolvere.
In un form ho inserito un controllo BindingNavigator per il quale ho impostato la proprietà "BindingSource" su una tabella specifica del dataset, ho associato dei controlli textbox in modo da visualizzare i dati e la visualizzazione funziona correttamente.
Il problema nasce quando voglio inserire una nuova riga nella tabella, al click sul tasto salva del BindingNavigator ho associato questo codice:

Me.Validate()
Me.ContiCorrentiBindingSource.EndEdit()
Me.ContiCorrentiTableAdapter.Update(Me.MMMDataSet.ContiCorrenti)
MMMDataSet.AcceptChanges()

con il risultato che il dataset viene aggiornato correttamente ma, per qualche motivo a me oscuro, le modifiche non vengono passate al Database.

Spero che possiate aiutarmi, intanto vi ringrazio.

totti240282 Profilo | Guru

Sicuro che non hai messo l'opzione che deve rigenerare il database ad ogni compilazione ?
C'è solo un capitano !!!!!!

alsa Profilo | Junior Member

Perdonami,
come faccio a verificare questa cosa?
Intanto grazie per l' interessamento.

totti240282 Profilo | Guru

Selezioni il DB e c'è l'opzione copia ad ogni compilazione o copia se più recente.
C'è solo un capitano !!!!!!

alsa Profilo | Junior Member

Allora, ho controllato e l' opzione impostata è: "Copy if newer".
Ho anche provato a seguire queste istruzioni:

http://msdn.microsoft.com/it-it/library/ms233812.aspx

ma nulla. Seguendo questo articolo mi dice che sto tentando di inserire un indice già esistente in un indice univoco, ma la tabella che voglio aggiornare ha solo 3 campi (NumCc, intestato e commissione) di cui nessuno è chiave primaria e solo NumCc non accetta valori duplicati.
Inoltre ho anche provato a istanziare l' oggetto insert del tableadapter ma anche con quello mi dice che c'è un indice duplicato.
L' aggiunta funziona se mi collego direttamente al database bypassando il dataset, ma in questo modo se chiudo e riapro il form della visualizzazione non visualizzo gli ultimi record inseriti.
Davvero, sto impazzendo, non può non funzionare.

Spero di non aver creato confusione elencando tutte le prove che ho fatto.

alsa Profilo | Junior Member

Allora Totti o chiunque voglia darmi una mano, finalmente sono riuscito ad ottenere qualche risultato grazie al tuo consiglio ma, purtroppo, data la mia scarsa esperienza mi sono un pò confuso le idee.
La situazione è questa: mi sono reso conto che se l' opzione da te indicata la imposto su "copy if newer" il database non viene minimamente sfiorato dalle modifiche, se invece imposto l' opzione su "Do not copy" e copio il file sdf nella cartella debug, mi aggiorna quest' ultimo senza aggiornarmi il file originale, il che è un problema perchè nel Server Explorer il database punta al file sdf originale e non riesco a vedere le modifiche tramite l' opzione "Show table Data".
A questo punto la mia domanda è questa: Potete gentilmente spiegarmi come si utilizza quell' opzione in modo da, aggiornare correttamente il database e contestualmente verificarne le modifiche tramite il Server Explorer?
Grazie ancora a chi vorrà aiutarmi.

totti240282 Profilo | Guru

In teoria è giusto cosi , perchè il file originale non deve essere toccato.
Quando finirai il programma e compilerai, lui sposterà il db nella cartella Release del progetto e aggiornarà sempre e solo quello, senza resettarlo come avviene in questo momento.
C'è solo un capitano !!!!!!

alsa Profilo | Junior Member

Ok, e questo mi sta bene, ma nel frattempo come faccio a verificare le modifiche "in tempo reale"?
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