Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con DB in rete

Salve,
ho questo problemino da esporvi.
Un DB access su un server contenente due tabelle,una per i dati  e l'altra
come appoggio (contiene un campo numerico che utilizzo come contatore).
Il programma che usa questo DB ha una funzioncina che, cliccando su un
pulsante incrementa il numero di 1 sulla tabella di appoggio;bene se due
utenti hanno aperto il DB e provano ad incrementare il contatore,questo non
è detto che avvenga sempre correttamente,ovvero,se l'utente A incrementa il
contatore al valore 1001 l'utente B cliccando non è detto che aggiorni il
valore a 1002,spesso si "becca" 1001.Come posso fare ?
Tenete presente che dovrei tenere il DB "aperto" ad altri per consultazioni.
Nota
Il db viene aperto sul Form_Load
Private Sub Form_Load()
On Error GoTo Errore_Apri
'Apre il Database.
Set dbs = OpenDatabase("R:\DOC\cartella\dbprova.mdb", False)
Set rst = dbs.OpenRecordset("SELECT * from T01Disegni WHERE T01Codice = '" &
textT01Codice.Text & "'")
Set rst2 = dbs.OpenRecordset("T02Numero")
Errore_Apri:
er = Err.Number
If er <> "0" Then
    Beep
    MsgBox Err.Description, vbExclamation, "Messaggio..."
    Unload Me
End If
End Sub
PS
Potrei forse bloccare temporaneamente il DB per il tempo necessario
all'incremento e poi sbloccarlo ? (come?)
Grazie a tutti
Zan
-- 
Posted from 
ro...@mail.ucina.it
 [194.184.172.7] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

pulsante incrementa il numero di 1 sulla tabella di appoggio;
Incrementa il numero di 1...di che?? Magari dirņ una fessata ma...se questa
cosa invece che gestirla te la fai gestire al db? Ora non so se la
pressione del tasto incrementa solo questo numero, scrive un record, scrivi
qualcosa da qualche parte...insomma non so che succede. Perņ se metti anche
quel campo come contatore, alla pressione del tasto si generara un numero
nuovo, progressivo, e non devi preoccuparti di bloccare niente.
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it
 

 nuovo, progressivo, e non devi preoccuparti di bloccare niente.
Potrebbe avere la necessitą di tenere sotto stretto controllo il contatore.
Da quanto ho visto la tabella viene aperta con un cursore dinamico. Prova ad
eseguire un requery prima di leggere il valore dalla tabella ...
Saluti

contatore.
A me non è mai capitata una cosa del genere...quando nelle
mie tabelline metto un contatore è proprio per non dover mettere nessun
controllo su quel numerino...in che caso uno potrebbe avere la necessità di
tenere sotto controllo un contatore?


 wrote in message
157Z29Z81Z46Y...@usenet.iol.it...


Tanto per cominciare grazie per l'interessamento,
questo numero generato,non è sempre detto che sia un numero progressivo 1+1
2+1,3+1 etc. ma devo avere la possibilità di inserire dei numeri "a
piacimento",dimenticavo inoltre, che associo una "A" prima del numero.
In parole povere,questo programmino non serve ad altro che a creare un
archivio di disegni codificati da un numero progressivo (es. A0001...)
generato dal pulsantino.
Non solo, ma deve dare la possibilità di inserire anche dei numeri pregressi
e non solo quelli creati ex-novo (inseriti a mano nella textbox).
Grazie nuovamente
Zan
-- 
Posted from 
ro...@mail.ac-carmagnani.it
 [194.184.172.7] 


 valore a 1002,spesso si "becca" 1001.Come posso fare ?
Dovresti fare questa operazione di aggiornamento e lettura sotto
locking:
- Imposti il locking pessimistico
- Apri la tabella
- Aggiorni il record
- Memorizzi il nuovo numero in una variabile
- Fai l'update
- Chiudi la tabella
- Ripristina il tipo di locking che utilizzi
- Restituisci il valore letto
EMG

 tenere sotto controllo un contatore?
Ad esempio quando non devono esserci buchi nella numerazione neanche in
caso di cancellazione di un record.
EMG

 caso di cancellazione di un record.
giustissimo, ma imho, salvo acrobazie tipo assegnarlo al momento
dell'update anziche' dell'addnew, e anche in questo caso non mi ci
affiderei troppo, questo esula dai compiti di un contatore tipo quello
di access.
io lo uso abbastanza tranquillamente, ma gia' una copia "struttura+dati"
di una tabella incasina tutte le relazioni, se puntano ai contatore.
nel caso che dici, in clipper mi tenevo conto a mano dei nuovi record.
non so se ci siano altri modi.
ciao, a.


Infatti: i contatori dovrebbero servire solo in casi "veramente"
elementari...
ciao
ugo


Da quel che ho capito, ti conviene usare la vecchia e collaudata tecnica
della tabella con il progressivo.
Ovvero:
B inserisce un record, legge la tabella progressivi "A001002" e ci scrive
"A001003" (o quello che risulta dalla tua funzione di incremento
progressivi) che diviene il "suo" numero id.
B inserisce un record, legge la tabella progressivi "A001003" e ci scrive
"A001004" che diviene il "suo" numero id...
(che direi essere una stringa più che un numero)
ecc...
ciao
ugo