Newsgroup: it.comp.appl.access
Titolo: aspettare il caricamento dei record in una maschera ADP - MSDE

Ciao a tutti,
ho il problema di aspettare che la maschera carichi tutti i record dopo un
requery da codice prima di proseguire, qual e' il modo piu' semplice e
corretto?
poi ho un altro piccolo problema, ho una maschera che viene aperta filtrata,
e ogni volta che inserisco un record mi dice che il record e' stato inserito
ma non lo mostra perche' non corrisponde ai criteri, ed effettivamente non
lo motra. Inutile dire che invece il record corrisponde perfettamente ai
criteri tanto e' vero che se chiudo e riapro la maschera con lo stesso
filtro il record inserito magicamente compare, un bel fastidio. Cosa posso
fare?
Grazie a tutti
Ciao
Sib


Per la prima domanda non mi è chiaro, ma se Access sta caricando i dati 
mica puoi interromperlo o no?
Per la seconda, credo sia sufficiente fare il Tua_Form.requery 
sull'evento click (? se usi un pulsante) con cui inserisci il record.

 sull'evento click (? se usi un pulsante) con cui inserisci il record.
Questo non impedisce la visualizzazione del messaggio (sbagliato tra
l'altro)
Ciao
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:n65Ba.10754$g92.2...@news2.tin.it...

Ciao Sib
Per risolvere i due problemi che esponi io utilizzo questo metodo:
1 ) Creare una funzione in un modulo BAS che restituisce il recordset.
--------------------------------------
Function Apri_Tb(ByVal Nome_Tb) As ADODB.Recordset
    Dim Tb1 As ADODB.Recordset
    Dim Cn As ADODB.Connection
    Set Tb1 = New ADODB.Recordset
    Set Cn = CurrentProject.Connection
    Cn.CommandTimeout = 0
    Tb1.CursorLocation = adUseClient
    '------ Il Tipo di cursore adUseClient carica tutti i recordset sul lato
client
    Tb1.LockType = adLockOptimistic
    Tb1.Open Nome_Tb, Cn
    Set Apri_Tb = Tb1
    Set Tb1 = Nothing
    Set Cn = Nothing
End Function
---------------------------------------
2) Ammettiamo di utilizzare il form dei clienti dove nella proprietà
RecordSource c'è
    SELECT * From Clienti WHERE ...... Order By ....
    Sostituisci la select con
    SELECT TOP 0 * From Clienti
    In questo modo in fase di apertura non verranno inviati record al form e
in fase di progettazione vedi i nomi dei campi nelle proprietà origine
controllo.
    Nel form dichiari la variabile
--------------------------------------
    Dim Rs As ADODB.Recordset      'Recordset x origine record del form
--------------------------------------
    E nell'evento Form_Load() inserisci ...
---------------------------------------
    Set Rs = Apri_Tb("SELECT * FROM Clienti WHERE .....  Order By ....")
    Set Me.Recordset = Rs
---------------------------------------
Questo metodo è valido solo per i form principali e non per i subform che
hanno altre problematiche.
Ciao Giorgio.

 ---------------------------------------
in che modo questo evita la visualizzazione del messaggio quando inserisco
un record?
Sib

 Sib
Ciao Sib
A mio parere c'è un bug nelle maschere dei progetti ADP dove in presenza del
filtro WHERE passano al server l'opzione
WITH CHECK OPTION (vedi book on line di Sql Server) o proprietà della vista.
Opzione che non viene passata con l'apertura di un recordset via VBA.
Ciao Giorgio.

 Opzione che non viene passata con l'apertura di un recordset via VBA.
Capisco,
questo pero' non spiega ancora la cosa perche' il record che inserisco
rispetta perfettamente il filtro impostato.
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:tvFBa.25359$g92.5...@news2.tin.it...

Ciao Sib
Non saprei cosa dirti, non ho mai approfondito il problema in quanto ho solo
una maschera che lavora caricando tutto il recordset (circa una ventina di
record) dal server per tutte le altre (nella prospettiva di lavorare con
reti lente tipo Vpn ecc.) prelevo solo un record alla volta tramite pulsanti
di spostamento personalizzati.
Ciao Giorgio.

 Ciao Giorgio.
Certo il tuo e' un buon metodo, soprattutto nel caso che descrivi.
Io in effetti ho adottato l'architettura degli adp piu' per un problema di
solidita' che di prestazioni.
grazie lo stesso.
Ciao
Sib