Newsgroup: it.comp.appl.access
Titolo: Asincronia? (anche per x Antonio Bisio)

Solo 4 punti! Dai, non sono poi tanti, sembrano lunghi ma e' solo per
essere chiaro.
1.
Faccio delle modifiche ad uno o piu' record (update e addnew) di una
tabella; subito dopo, nel programma, c'e'l'istruzione di requery della
lista di riepilogo di tutta la tabella (piccola) o di una
sottomaschera col suo  foglio dati. Ebbene, la riscrittura parte, e
mentre viene completata parte anche in parallelo l'istruzione di
requery, con evidenti esiti di sfasamento (ad es. mi compare tutta la
lista riepilogo con scritto "#Eliminato" in tutte le colonne e in
tutte o in parte delle righe). Succede sia in locale (CurrentDb) sia
in client-server.
Altro caso: il click su un bottone esegue DoCMD.OpenForm di una
mascherina, seguito da un IF su un campo della maschera di partenza in
cui, da dentro la maschera aperta,  immetto dall'esterno un valore. La
maschera da aprire parte (inizia il caricamento) ma contemporaneamente
(o con insignificante ritardo) parte anche l'IF, che ovviamente non
trova ancora il valore da testare.
Come posso eliminare queste asincronie? Voglio semplicemente  che il
Sistema Operativo termini PRIMA le operazioni che fa partire in
parallelo, e solo POI prosegua nel programma; o almeno conoscere un
parametro da testare per sapere quando ha finito.
Ho provato SetOptions ma i parametri citati (dbEsclusiveAsyncDelay,
dbSharedAsyncDelay, dbImplicitCommitSync, ammesso siano quelli che
servono) non sono riconosciuti dal mio Access (eppure credo di avere
la versione 97). 
Ho anche provato a modificare i parametri di Jet 3,5 sul registro di
configurazione di W95, ma - salvo errori - non ho ottenuto risultati
(a meno che non dovessi chiudere e far ripartire W.). 
Ho anche provato Begin/End Transaction, dbFlashCache e Idle,  ma
niente. 
Mi resta solo da provare alla neuro, dove finiro' se non mi aiutate,
giacche'  queste asincronie mi stanno stremando! Possibile che non
abbiate di questi problemi? Datemi pure dell'ignorante.
2.
Per BISIO: ti ringrazio molto per la risposta che mi avevi dato sulla
citazione di una casella di un FD sottomaschera. Non mi hai pero'
detto - se hai ancora pazienza - come posso fare, partendo dalla
casella puntata, tornare a programma col mouse a fuoco da dove ero
partito, in risposta al click su un bottone . Se rido' il fuoco alla
sottomaschera, si posiziona all'inizio-alto-sinistra, facendo nel caso
scorrere orizzontalmente le colonne per portarsi  li' (e facendo
cadere fuori dai limiti della finestra la colonna da cui ero partito).
Il nome della casella da cui ho cliccato sul bottone e' corrente,
cioe' non fisso, per cui non posso citarlo in modo esplicito (o no?).
In pratica: al click dell'utente sul bottone, il programma deve
spostare il contenuto della casella (che sulla sottomaschera era
puntata) in un campo della maschera, mettere nella casella un altro
valore e ripuntarla. 
3.
Visto che l'appetito vien mangiando, ecco subito un problema
correlato: come posso far scorrere a programma il fuoco su tutte le
caselle di un foglio dati, colonna per colonna, e - all'interno di
essa - riga per riga?
4.
 Lavorandone la struttura, un mdb (praticamente un cliente di solo
software) mi si e' ingolfato a 51megabyte; compattato si e' ridotto a
10mega. Allora ho aperto un nuovo mdb e pazientemente (un po' come voi
che siete arrivati a leggere fin qui), maschera per maschera, report
per report etc., ci ho copiato dentro tutto. Risultato 2mega e mezzo.
Secondo voi, in questa copia puo' mancare qualcosa? Non c'e' una
opzione di Access con cui eliminare in modo piu' rapido
l'ingolfamento, "lo sporco" (presumo tenuto solo per avere la
possibilita' di ripristino del database -  o no?). 
Grazie mille agli intervenuti.
LG

 valore e ripuntarla.
Non ricordo bene il problema e non so se ho capito. Però in un caso simile
una volta risolsi così:
Al clic su uno dei campi mi salvavo in un controllo nascosto un riferimento
alla riga univoco, magari l'ID. A questo punto, al clic del pulsante, per
tornare a quella riga, da codice mi posizionavo sul primo record con
docmd.gotorecord acfirst. Quindi facevo un ciclo sui record fino a trovare
quello col valore ID salvato. A questo punto ero sulla riga giusta. Il ciclo
lo facevo coll'echo disattivato se no si vedeva lo sfarfallio, poi rimettevo
l'echo...
Antonio