Newsgroup: it.comp.appl.access
Titolo: aggiornare tutti i record di una tabella mostrati una maschera

Ciao a tutti.
Ho una maschera  in visualizzazione maschere continue, che mostra i percorsi 
di alcune tabelle collegate al database. Il controllo che mostra i dati si 
chiama "TXTpercorso". Queste informazioni vengono prese da una tabella 
"elenco_tabelle"
Nella maschera ho messo una check "copia_percorso" e vorrei fare in modo 
che, se spuntata, quando inserisco il nuovo percorso nella prima textbox, 
questo venga copiato in tutte le altre.
Ho due problemi:
1) Sull'evento AfterUpdate di TXTPercorso ho messo:
If Me.copia_percorso = -1 Then
    Dim dbs As Database, rst As Recordset
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("select * from elenco_tabelle")
    Do Until rst.EOF
    rst.Edit
    rst!percorso.Value = Me.TXTPercorso
    rst.Update
    rst.MoveNext
    Loop
End If
Appena seleziono un'altra textbox compare un messaggio: "Durante la corrente 
sessione di modifica il record è stato modificato da un altro utente...." se 
faccio "salva il record", tutti gli altri si aggiornano correttamente. 
Vorrei evitere la comparsa di questo messaggio.
2) accanto a TXTpercorso ho aggiunto un pulsante che apre una Common Dialog 
che permette all'utente di selezionare la nuova posizione della file con la 
tabella collegata. La scelta fatta dall'utente viene scritta in TXTpercorso, 
ma l'evento AfterUpdate non si verifica. Come mai?
Grazie a tutti in anticipo.
Giancarlo 

 ha scritto nel messaggio news:dfopcq$12f$1...@fata.cs.interbusiness.it...

Se il codice che hai inviato è tutto lì, manca la chisura e distruzione degli oggetti dbs e rst...
Ciao.
-- 
Sergio MAZZA 

 Giancarlo
Dovresti gestire anche l'eventuale errore per distruggere gli oggetti creati.
Es.
sub ...
on error goto sub_err:
...
If ...
...
End if
rst.close
dbs.close
Set rst = nothing
Set dbs = nothing
exit sub
sub_err:
    Set rst = nothing
    Set dbs = nothing
    msgbox err.number & ", " & err.description
end sub
Ciao.
-- 
Sergio MAZZA 


Allora..scusa se continuo, ma non ne esco fuori...
Ho modificato il codice in questo modo:
On Error GoTo sub_err
If Me.copia_percorso = -1 Then
    Dim dbs As Database, rst As Recordset
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("select * from elenco_tabelle")
    Do Until rst.EOF
    rst.Edit
    rst!percorso.Value = Me.TXTPercorso
    rst.Update
    rst.MoveNext
    Loop
End If
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
Exit Sub
sub_err:
    Set rst = Nothing
    Set dbs = Nothing
    MsgBox err.Number & ", " & err.description
ora la maschera continua si aggiorna, però non appena seleziono un qualunque 
oggetto della maschera, compare il messaggio "Durante la corrente
sessione di modifica il record è stato modificato da un altro utente...."
Grazie per la tua pazienza....
Giancarlo 

 ha scritto nel messaggio news:dfpiqo$2v6$1...@balena.cs.interbusiness.it...

Forse c'è qualcosa che non mi è chiaro ma da quanto vedo tu devi aggiornare un campo in una tabella. Se è così perché non fai una 
query di aggiornamento?
Es.
If Me.copia_percorso = -1 Then
    docmd.setwarnings false
    DoCmd.RunSQL "Update elenco_tabelle set percorso = '" & me!TXTPercorso & "';"
    docmd.setwarnings true
end if
Ma è probabile che non abbia capito...
Ciao.
-- 
Sergio MAZZA 

 Dico una cavolata?
Forse rimane appesa la modifica (proprietà Dirty della form).
Prova così:
'---
If Me.Dirty Then Me.Refresh '<-- scrivo eventuali modifiche appese
If Me.copia_percorso = -1 Then
    docmd.setwarnings false
    DoCmd.RunSQL "Update elenco_tabelle set percorso = '" & me!TXTPercorso & "';"
    docmd.setwarnings true
end if
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:dfpnc5$98r$1...@area.cu.mi.it...

Funziona!
Grazie 1000
