Newsgroup: it.comp.appl.access
Titolo: Problema concettuale: campo num. vs n campi si/no

Ciao a tutti,
sono alle prese con una richiesta del cliente che non
vorrei assolvere.
Il dato in questione ha tre alternative A,B,C (per il
momento).
Senza pensarci un attimo creo un campo numerico nella tab.
ed una tab. di codifica (1-A,2-B,3-C) per le descrizioni;
per l'editing creo una combobox nella form.
Dimenticavo, la tab. e' in relazione uno a molti con la
tab. principale, quindi per l'editing uso una sottomaschera
tipo foglio dati. Nulla di particolare.
Il cliente, dopo aver testato il tutto, mi chiede di usare
delle checkbox al posto della combobox!!
Lo scopo e' quello di velocizzare l'editing (un click sul
pulsantino) e di avere costantemente una visione globale
della situazione (foglio con tante X in colonna)
Non sono daccordo (nuove opzioni comportano la modifica
della form), ma visto che e' lui che paga...
Premesso che non uso quasi mai il controllo option group,
ci provo.
Qui nascono i problemi!
Passo dal foglio dati alle maschere continue e sostituisco
la combo con l'option group:
- se il campo e' vuoto le tre checkbox sono grigie, va a
farsi friggere la leggibilita'
- non e' possibile eliminare il dato
Per risolvere il problema potrei aggiungere un valore
(predefinito) nella tab di codifica (4-vuoto) e aggiungere
la chechbox relativa al gruppo, ma questo naturalmente non
mi piace.
Cosa ne pensate?
L'altra alternativa, che al cliente andrebbe benissimo, ma
a me non piace proprio, e' sostituire il campo numerico con
tre campi del tipo si/no.
Non mi piace perche' lo ritengo concettualmente errato,
inoltre nuove opzioni comporterebbero, oltre la modifica
della form, anche la modifica della struttura dati.
Cosa ne pensate?
Grazie
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

 mi piace.
Se ho capito bene (sai il mio ital...;-) un problemo é di mettere Null
di nuovo se ha sbagliato ecc. Al solito io lo faccio nel OnMouseDown
di ogni checkbox nel gruppo:
' OnMouseDown del checkbox con valore 1
If Me!Group = 1 Then Me!Group = Null: Refresh
' OnMouseDown del checkbox con valore 2
If Me!Group = 2 Then Me!Group = Null: Refresh
ecc.
--> Un click per scieglere un checkbox, un altro click al checkbox
scelto per annulare. É facile a capire per l'utente.
--
HTH
Karl
*********
Scusate il mio malissimo Italiano. Faccio solo esercizi qui.
Access-FAQ (Tedesco): 
http://www.donkarl.com
APP: 
http://www.AccessProfiPool.com

 scelto per annulare. É facile a capire per l'utente.
 
Ciao Karl,
il tuo italiano e' molto meglio di quello di molti italiani
:-)
Il problema, naturalmente, non e' solo quello, ma la tua
soluzione mi piace e l'ho gia' generalizzata in una questa
funzione:
Private Function setGrpNull(strNomeCtrl As String)
    Dim strGroupName As String
    Dim intGroupValue As Integer
    strGroupName = Left(strCtrl, Len(strCtrl) - 1)
    intGroupValue = CInt(Right(strCtrl, 1))
    If Me(strGroupName) = intGroupValue Then
Me(strGroupName) = Null
End Function
cosi' mi basta scrivere 
=setGrpNull(nomeControllo)
nella finestra delle proprieta' della checkBox all'evento
OnMouseDown.
Grazie
PS
Se sei daccordo la metto nel Sito Comune


 Se sei daccordo la metto nel Sito Comune
Si certo.
--
cu




In questo caso pero' Screen.ActiveControl ritorna il nome dell'option group e
non della checkbox cliccata.


 non della checkbox cliccata.
Certo. Sono 'minimalista' --> stesso principio e una volta nel db:
Public Function Fct_OGToNull(strCtrl As String)
If Screen.ActiveControl = CByte(Right(strCtrl, 1)) Then Screen.ActiveControl
= Null
End Function


Non mi piace perche' lo ritengo concettualmente errato,
appunto.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 End Function
Sei un vero minimalista :-)))
Grazie
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access


 null, i tre pulsantini resteranno bianchi.
infatti penso di fare cosi', in piu' con il giochino di
Karl ho risolto anche l'altro problema.
in genere non uso lo zero per indicare il campo vuoto,
perche' puo' generare problemi (per l'utente) in fase di
elaborazione dati (0, null), ma per questa volta faro' un
eccezione :-)


 Sei un vero minimalista :-)))
Sotto questo aspetto ho ancora uno. ;-)
Public Function Fct_OGToNull(CB As Byte)
If Screen.ActiveControl = CB Then Screen.ActiveControl = Null
End Function
=Fct_OGToNull(1) ecc.


 =Fct_OGToNull(1) ecc.
E' il massimo dell'ottimizzazione! :-))
