Problema con ADO.NET nella lettura di contatori in tabelle Access ( e ...

martedì 06 giugno 2006 - 11.46

gilberto Profilo | Junior Member

Buongiorno a tutti.

Ho un form collegato a varie fonti dati ( tabelle Access ).
Queste tabelle hanno dei campi contatori.
Ora quando nel form chiamante premo il tasto "Nuovo" mi apre un form in cui inizializzo dei nuovi record all'interno delle tabelle.
Il mio problema a questo punto sarebbe sapere il valore di questi campi contatori.
Nell'operazione che ho descritto NON eseguo operazioni di Update nelle tabelle e ho notato che nel record che attualmente ho creato i contatori hanno valore zero.
La cosa non mi darebbe fastidio se l'ambiente fosse mono utente ma, non lo è!
In poche parole vorrei poter conoscere il valore del contatore successivo ( potrebbero esserci dei salti in quanto la tabella potrebbe avere avuto delle cancellazioni di record ) senza usare Update ( mi riferisco all'uso dei Dataadapter ).
C'è una risposta a questo bel casino?

Ringrazio in anticipo per possibili suggerimenti ( non so se sono stato chiaro ).
Gilbert SS4

Cteniza Profilo | Guru

Devi verificare il tipo di database che utilizzi ed in base a quello scegliere il comando sql più opportuno (anche in considerazione al momento in cui vuoi prendere il riferimento).
Se ad esempio hai generato il dataadapter per sql server (sqldataadapter) il numero di id viene aggiornato automaticamente durante la fase di update.
Se invece utilizzi il dataadapter oledbdataadapter su Access, Access non disponendo di query sql multiple (unico comando + query) non può recuperare automaticamente l'id, per fare questo devi intervenire nel codice nell'evento update del dataadapter.
Un esempio per access lo trovi nel mio blog:
http://community.visual-basic.it/lucianob/archive/2005/01/07/3062.aspx
Mentre questo esempio riguarda una situazione di master/detail
http://community.visual-basic.it/lucianob/archive/2005/08/06/16041.aspx

gilberto Profilo | Junior Member

Ti ringrazio della risposta!

Nel frattempo ho risolto il problema creando e andando a leggere il nuovo record con un trucco, infatti sul nuovo record gli metto un marcatore all'interno di un campo a mia scelta e quindi alla successiva lettura so quale nuovo record è stato creato ( dato che è completamente privo di dati! ). Siccome siamo in un ambiente multiutente non mi interessa chi se lo piglia, tanto è vuoto ed ha il campo contatore valido che tanto mi serviva!

Grazie a tutti!
Gilbert SS4

jack275 Profilo | Junior Member

ciao Gilberto, io sono un nuovo iscritto...ti volevo chiedere se mi potevi spiegare come si fa a fare la modifica, l'eliminazione e un nuovo inserimento su un datagridview connesso a un database di access...se magari hai anke qualche esempio in c# da potermi mostrare mi faresti un favorone!
grazie ciao ciao

gilberto Profilo | Junior Member

Degli esempi posso darteli ma, non in c#.
Sono un esperto in VB.
Gilbert SS4

jack275 Profilo | Junior Member

capito...ti espongo il mio problema
uso un datagrid collegato a un database di access e per salvare i dati uso il comando:
oleDbDataAdapter2.Update(carsDataSet.Proprietari);
dopo x essere sicuro faccio il load dei dati e lui mi mantiene i nuovi dati, poi se chiudo e riapro e' uguale a prima

Cteniza Profilo | Guru

Intanto dovevi aprire un nuovo thread e non continuare con un'altro che non c'entra nulla con il tuo problema.
Devi andare nel progetto e togliere l'impostazione copia ad ogni compilazione del database access oppure di provare il tuo programma dalla cartella bin e non l'avvia applicazione dell'ide.

jack275 Profilo | Junior Member

Hai ragione, scusa...ma visto ke mi sono iscritto da poco e la cosa era urgente non ci ho minimamente pensato, cmq ora ho capito, grazie di tutto e scusa ankora

gilberto Profilo | Junior Member

No ai problemo!


Gilbert SS4
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5