Newsgroup: it.comp.lang.visual-basic
Titolo: [VB2008] Concurrency Violation - db con unico utente...

Buongiorno,
sto cercando di realizzare un piccolo programma che deve gestire una 
anagrafica di clienti.
E' la prima volta che tento la strada in VB2008. Sto utilizzando un 
dataAdapter contenuto in una classe da me creata, in cui ho configurato 
i comandi di select, insert, update, delete.
Con il dataAdapter popolo un dataset.
Nessun ho nessun problema ad utilizzare select, insert e delete. Ma con 
Update ricevo degli errori di Concurrency Violation. Il fatto ï¿œ che sto 
sviluppando e il db ï¿œ accessibile solo da me.
Cosa puï¿œ essere a creare il problema?
Descrivo brevemente cosa faccio per modificare il record.
1) apro un form di zoom in cui presento i dati del db e faccio scegliere 
il record da modificare.
2) chiuso lo zoom popolo un datarow con la funzione row.find del dataset.
3) con il datarow compilo i campi a video per la modifica
4) per salvare la modifica procedo come segue:
  drCliente.BeginEdit()
  drCliente.Item("an_codice") = txtCodice.Text
  drCliente.Item("an_nome") = txtNome.Text
  drCliente.Item("an_cognome") = txtCognome.Text
  drCliente.Item("an_indirizzo") = txtIndirizzo.Text
  drCliente.Item("an_indirizzo2") = txtIndirizzo2.Text
  drCliente.Item("an_cap") = txtCAP.Text
  drCliente.Item("an_citta") = txtCitta.Text
  drCliente.Item("an_provincia") = txtProvincia.Text
  drCliente.Item("an_nazione") = drCliente.Item("an_nazione")
  drCliente.Item("an_telefono") = txtTelefono.Text
  drCliente.Item("an_cellulare") = txtCellulare.Text
  drCliente.Item("an_email") = txtEmail.Text
  drCliente.EndEdit()
  AnagraficaClienti.Adapter.Update(dsClienti, "an_clienti")
  dsClienti.AcceptChanges()
  drCliente = Nothing
quando viene eseguito il comando update del datatadapter mi da l'errore...
Dove Sbaglio?
Grazie.


Non sai quanto tempo ci ho sbattuto la testa.....
Comunque, se ricevi l'errore Concurrency Violation significa che c'è stato 
un disallineamento fra db e datatable. Magari stai modificando un record che 
non eiste + o non è mai esistito.
Un errore potrebbe derivare dalla chiave primaria.( proprietà 
autoincrementatnte sia su datatable che su db)
Dovresti studiare prima bene come funziona il tutto e fare semplici prove: 
se chiami AcceptChanges() tutti i flags che indicano i record come 
modificati, aggiunti o rimossi verranno settati "a non cambiati".
Se chiami update non serve chiamare acceptchanges.
In bocca al lupo
 

Il problema era proprio banale, ma non molto...
Non sapevo che i parameters del comando dovevano essere scritti nella 
stessa sequenza con cui sono elencati nella stringa SQL...
Infatti spostando il parametro utilizzato nella WHERE al fondo tutto a 
cominciato a funzionare.
Ma a questo punto mi chiedo: a cosa serve indicare l'etichetta "@pippo" 
con cui battezzo il parametro??
Mistero...



Ma che db è? Access???
In Access non conta il nome ma solo l'ordine di inserimento!


Si è proprio Access...
In verità pensavo che il DataAdapter filtrasse la query prima di 
passarla al DB, e quindi che non avesse importanza il tipo di origine 
dati. Visto che nella stringa della query mi fa inserire il segnaposto 
con il nome del parametro "@..." e visto che i parametri che aggiungo 
vengono anche "battezzati", mi sembrava logico che il dataadapter 
filtrasse la query prima di inviarla al DBRMS...
Invece a quanto pare NO...
Grazie, ne so una più di ieri... ehehehe
Giuliano.

 In Access non conta il nome ma solo l'ordine di inserimento!
Si sa se altri DB hanno il "problema"?

 Giuliano.
Prova a quotare DOPO il testo cui rispondi, eliminando ciň che non serve 
(indicando che hai eliminato qualcosa).
Si fa fatica a seguirti.
-- 
-> GbC|
www.gbcweb.com
www.chiappori.com