Newsgroup: it.comp.appl.access
Titolo: Campo per definire quale sia il record predefinito.

Ciao a tutti. Il mio problema č piuttosto semplice, ma non riesco a capire 
dove diavolo sia l'errore che commetto!
Dunque: voglio poter definire quale sia il mio SPEDIZIONIERE predefinito, 
nella mia applicazione che gestisce diverse anagrafiche. Lo spedizioniere 
predefinito puň ovviamente essere uno solo.
Per far questo, nella mia tabella tblSpedizionieri, c'e' un campo sě/no 
chiamato "default". Se questo campo vale 1, allora lo spedizioniere č quello 
di default.
ORBENE: nella mia maschera singola che uso per modificare i record della 
tabella tblSpedizionieri, ho una checkbox associata a questo campo 
"default". Sull' evento "click" ci ho piazzato una bella query "UPDATE 
tblSpedizionieri SET default = 0;", in modo che nel momento in cui l'utente 
seleziona lo spedizioniere corrente come quello di default, azzero il flag 
su TUTTI gli altri spedizionieri.
Il problema č che la query fallisce, dicendo che c'e' un problema di 
violazione di condivisione su tutti gli N record presenti nella tabella!!!
Dove cavolo sbaglio?
Grazie e ciao!
A.- 


Ciao Mister Magoo,
per prima cosa io farei queste operazioni nell'after update della maschera:
if me.default then
        CurrentDb.Execute "UPDATE tblSpedizionieri SET default = 0 where
idSpedizioniere <> " & me.idSpedizioniere
end if
In questo modo aggiornerai il campo default di tutti gli spedizionieri,
tranne quello che hai appena modificato
con la tua query avresti impostato a falso anche il record correntemente
selezionato
-- 
Cinzia
---------------------------------------
|  
http://www.riolab.org
  |
---------------------------------------

 selezionato
Ciao Cinzia, grazie per la risposta. Si', questo sarebbe ovviamente stato il 
passo successivo, ma per prima cosa volevo provare a vedere se riuscivo ad 
eseguire la query "al volo", sulla stessa tabella sulla quale è aperta la 
maschera corrente (è qui, secondo me, il problema: la tabella è "bloccata" 
dalla maschera corrente, e forse è questo il motivo per cui la query "non ce 
la fa"). Cosi' ho eseguito semplicemente la cancellazione di tutti i flag, e 
questa semplice operazione mi va in errore.
Premetto che la query la eseguo col vecchio DoCMD.RunSQL <istruzione query>. 
Ho provato ad eseguirla con CurrentDB.Execute come suggerivi tu: stavolta 
non mi ha dato messaggi di errore... ma la query NON ha azzerato i flag!
Ciao!
Angelo.-

 Angelo.-
Ciao,
uso in diversi posti quanto descritto da Cinzia e funziona,
solo due cose:
->Strumenti->Opzioni->Avanzate
    Come sono impostati i blocchi ?
        (Nessun Blocco e Utilizza Blocco a Livello di Record
        dovrebbero essere attivati)
->Il fatto che nessun flag venga azzerato lo verifichi in maschera
        dopo il comando o direttamente in tabella ?
        In maschera l'effetto  e ritardato, ovvero dopo un refresh
        dei dati.
--
Lorenzo

        dei dati.
Controllo la proprietà dbs.RecordsAffected dopo l'esecuzione della query, e 
se eseguo la query dall'interno della maschera mi dà 0, se invece la eseguo 
da un'ALTRA maschera mi dà un numero diverso da zero, corrispondente al 
numero di record modificati dalla query. Ho anche controllato la tabella "a 
mano", stesso risultato (ovvero nessun record modificato!).
In ogni caso, ho risolto così: prima di eseguire la query, imposto la 
proprietà me.recordlocks a 0 ( = nessun  record bloccato).
Dopo la query, reimposto la proprietà a 2 ( = blocco sui soli record 
modificati).
Cosi' funziona! Ancora non mi spiego, però, come mai a VOI funzioni... siete 
sicuri di eseguire questa funzione dall'interno di una maschera associata 
alla tabella che desiderate modificare?
Grazie per l'aiuto!
Ciao,
Angelo.- 

 Angelo.-
Ciao
--
Lorenzo

 Angelo.-
--
Lorenzo

 gestire all'impostazione globale di cui si parlava prima.
A dire il vero io ho lasciato le impostazioni di default, che Access assegna 
quando crea una maschera basata su una tabella... dici che quel blocco è 
inutile ed è sufficiente quella impostazione delle Opzioni Avanzate? La mia 
applicazione è divisa in BE e FE, quindi ci sono utenti concorrenti ed è 
possibile che due o più utenti accedano in modifica allo stesso record. 
Quindi il problema dell'impedire porcherie dovute ad un accesso condiviso è 
particolarmente importante...
Grazie!
Ciao,
Angelo.- 

 Angelo.-
--
Lorenzo