Newsgroup: it.comp.appl.access
Titolo: Funzionamento DataEntry

Dall'help in linea:
"E' possibile utilizzare la proprietà DataEntry per specificare se una
maschera associata viene aperta per consentire *SOLO* l'immissione dei
dati. La proprietà DataEntry non determina la possibilità di aggiungere
record, ma *solo la visualizzazione dei record esistenti*
Sì --> La maschera viene aperta e visualizza *SOLO* un record vuoto"
Mi accorgo oggi che quanto scritto sopra e' valido solo al momento
dell'apertura di una maschera, in quanto tutti gli eventuali record
successivamente inseriti rimangono "visibili" nella maschera stessa
(sinceramente leggendo l'help io mi aspettavo che, dopo un inserimento,
  la maschera si riproponesse nelle stesse condizioni in cui si presenta
  all'apertura e cioe' "visualizzando solo un record vuoto").
Nel mio DB per inserire i dettagli di un ordine uso due maschere,
basate entrambe sulla tabella DettagliOrdini:
- la prima visualizza i dettagli presenti nell'ordine
   (Maschere continue, AllowAdditions = False)
- la seconda permette di inserirne uno nuovo
   (Maschera singola, DataEntry = True)
In questo caso il comportamento sopracitato puo' creare dei fastidi
(l'utente "scivola" sulla rotellina del mouse mentre il cursore
  si trova nella maschera di inserimento, vedendo apparire i record
  precedentemente inseriti).
Come mi consigliate di risolvere la cosa?
Grazie
leo_duca
-- 
Bisogna credere nelle cose buone,
anche quando non esistono

 ha scritto nel messaggio
news:bqkbd4$24ff7u$1...@ID-98670.news.uni-berlin.de...

Prova a gestire l'evento "dopo inserimento":
es.
Private Sub Form_AfterInsert()
Me.DataEntry = True
End Sub
Ciao.
--
Sergio MAZZA

 
Funziona.
Pero' la cosa mi rode perche' ho fatto tutta una serie di prove prima di 
rivolgermi al NG (se posto di rado non e' perche' sono diventato un guru
ma perche' tra debug, libri, Google e Sitocomune i problemi li risolvo).
Una verifica e' stata (..perche', visto il comportamento della maschera,
il sospetto che DataEntry cambiasse di stato mi era sorto..):
Private Sub Form_AfterInsert()
   Debug.Print " Form_AfterInsert : " & Me.DataEntry
End Sub
Private Sub Form_BeforeInsert(Cancel As Integer)
   Debug.Print "Form_BeforeInsert : " & Me.DataEntry
End Sub
Private Sub Form_Current()
   Debug.Print "     Form_Current : " & Me.DataEntry
End Sub
Con il seguente risultato:
      Form_Current : Vero
Form_BeforeInsert : Vero
  Form_AfterInsert : Vero
      Form_Current : Vero
Questo mi portava a pensare che il problema risiedesse altrove
(certo il comportamento di Access in questa situazione non e'
  molto ortodosso).
Cmq... grazie per la dritta!


 leo_duca
Eh! Eh! So' forte eh??!!!
Ciao.
--
Sergio MAZZA

 Eh! Eh! So' forte eh??!!!
Allora approfitto! :PP
*SITUAZIONE*
Una maschera frmMain con due controlli sottomaschera (sbf1 e sbf2)
sbf1: RigheOrdini  (maschere continue, AllowAdditions = False),
sbf2: DatiProdotti (maschera
*SCOPO* (poco ma spesso :))
sbf2 visualizza i dati relativi al profotto selezionato in sbf1
Private Sub Form_Current() 'sbf1
   sbf2.SourceObject = "frmSbfDatiProd"
   'porto sbf2 sul record giusto
   Dim rst As DAO.Recordset
   Set rst = Forms!frmMain!sbf2.Form.RecordsetClone
   rst.FindFirst "IdProd=" & Me.IdProd
   Forms!frmMain!sbf2.Form.Bookmark = rst.Bookmark
End Sub
Private Sub Form_Delete(Cancel As Integer) 'sbf1
   sbf2.SourceObject = "" 'per quando elimino l'ultimo record
End Sub
*PROBLEMA*
Errore dopo richiesta di conferma eliminazione record di sbf1:
risposta = No  --> Access si chiude
risposta = Si  --> "Si e' tentato di eseguire il commit o il rollback di
                     una transizione senza prima iniziarla."
Idee????
Rigrazie!


 Una maschera frmMain 
non associata


 anche quando non esistono
Idee?! Più che idee una domanda: perchè non filtri "sbf2" invece di
associargli il sourceobject? Oltretutto se cancelli il record "padre" in
sbf1 dovresti cancellare (prima) gli eventuali "figli" in sbf2 o no?
Vabbè erano due le domande...
Ciao.
--
Sergio MAZZA

 Vabbè erano due le domande...
spero si essere riuscito a chiarire.
Ciao


 anche quando non esistono
No, so' proprio de coccio e anche veccio...
Provo a riepilogarti cosa ho capito io:
Form:
sbf1 - dettagli di un ordine;
sbf2 - mostra i dati della categoria inserita nel record di sbf1;
Come vado? Spero bene.
La visualizzazione dei dati della categoria avviene in tempo reale è per
questo che gestisci l'evento Form_current?
Hai provato a non azzerare il sourceojbect di sbf2 nell'evento Form_Delete?
Ciao.
--
Sergio MAZZA

 Hai provato a non azzerare il sourceojbect di sbf2 nell'evento Form_Delete?
Ci provo (per vedere se il problema arriva da li') ma...
che succede se elimino l'ultimo elemento dai dettagli (sbf1)?
In questo caso l'evvento Current non si verifica perche'
AllowAdditions = False quindi per pararmi il fondoschiena
quando cancello azzero il sourceojbect di sbf2
(anzi, ora gli associo una maschera non associata DatiEmpty)
Grazie Ser!



Facci sapere...
Ciao.
--
Sergio MAZZA

 recordsuorce.
Ho cambiato un po' le cose.
Ora faccio cosi':
   If Status = acDeleteOK Then
     If Me.RecordsetClone.RecordCount = 0 Then NoProd
   End If
dove NoProd assegna a sbf2 una maschera vuota.
Questo migliora qualcosina ma non risolve il problema.
L'impiccio sta nel fatto che vado ad aggiornare sbf2
da Current di sbf1 durante l'operazione di cancellazione.
