Newsgroup: it.comp.appl.access
Titolo: Maschera parametrica

Ragazzi un consiglio,
ho 5 tabelle composte da Id e Descrizione. Potrei creare 5 maschere, ma
vorrei invece crearne solamente una giocando sull'origine del form e dei
controlli. Secondo voi e' una strada percorribile ?
Ciao e grazie
--------------------------------
Inviato via 
http://usenet.libero.it

 controlli. Secondo voi e' una strada percorribile ?
Decisamente sì.
Hai tante possibilità e dipende dal tuo skill di programmazione.
Inoltre dipende se tu devi modificare i dati o solo visualizzarli.
Per esempio una possibilità è quella di appoggiare la maschera ad una
tabella d'appoggio. Quando devi aprire la maschera accodi tutti i record
nella tabella d'appoggio (dopo averla svuotata) dalla tabella prescelta.
Diventa però un problema se devi modificare anche se si potrebbe gestire il
tutto con un aggiornamento dei record già esistenti ed un accodamento dei
nuovi (se hai anche aggiunto record).
Oppure puoi usare quello che avevi accennato tu.
Su apertura della maschera cambi la recordsource della form con la tabella
selezionata.
Per i controlli non avresti problemi se le tabelle hanno la stessa struttura
con gli stessi nomi di campo...
Antonio

 Ciao e grazie
E' sicuramente una ipotesi percorribile, ma forse è più semplice duplicare
la prima maschera cambiando il nome, l'origine record e se necessario
l'origine controllo dei suoi controlli.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Grazie delle risposte,
ho optato per la seconda soluzione. Ho gestito quindi le 5 tabelle con una
unica maschera, impostando da codice il recordsource del form e dei
controlli. Pero', andavo un po' di fretta perche' dovevo consegnare. Ora mi
piacerebbe riprendere in mano il tutto per dargli una sistemata.
La filosofia e' che mi ritrovero' molto spesso, lavorando in access, con
tabelle di 'sistema' composte da un Id, Descrizione, e qualche altro campo.
Le operazioni consentite saranno sempre le stesse (ins, mod, canc...) e
molto semplici.
L'idea e' di creare una maschera che inserita in un qualsiasi progetto si
gestisca tali tabelle senza dover intervenire minimamente, al massimo
gestendo una tabella di definizione.
Ho abbastanza chiaro in testa quello che voglio e penso di avere tutti gli
elementi per realizzarlo ma accetto qualsiasi consiglio, suggerimento o idea
Grazie ancora


 ha scritto nel messaggio
news:213Z203Z153Z55Y...@usenet.libero.it...

Io uso la stessa maschera.
Poi la chiamo con parametri e con l'openargs.
L'openargs può fornire info se per esempio sto aprendo in modifica (e quindi
ci sarà anche l'ID filtro per il record da modificare) o in aggiunta e da
che maschera apro.
In questo modo posso settare all'apertura della form i parametri
allowaddition o allowedit e quando chiudo la form so a quale maschera
tornare...
Se ti sfugge qualcosa ti posterò qualche esempio...
Antonio

 ha scritto nel messaggio
news:213Z203Z153Z55Y...@usenet.libero.it...

Il concetto di ottimizzazione è spesso soggettivo; io ho espresso il mio
punto di vista, come avevi chiesto tu: io preferisco, per motivi di
flessibilità, tante maschere "agili" che una sola maschera
superparametrizzata, naturlmente non è che ogni volta creo ex-novo la
maschera, ma ne copio una simile da un altro database.


 Antonio
Anch'io ho fatto cosi' ma, mi sfugge forse qualcosa quando parli di
parametri E con l'openargs ?
Mi spiego meglio, quando richiamo il form in append gli passo solamente il
nome della tabella di riferimento, se la richiamo in edit, gli avrei dovuto
passare due parametri : il nome della tabella e l'Id di riferimento. Non
sapendo come fare ho costruito una stringa tipo nometabella & "#" & Id_di
riferimento.
All'apertura del form, leggo l'openargs ed estraggo il nome tabella e
l'eventuale Id testando la presenza del carattete "#". C'era forse un modo
piu' pratico ?
'Lancio del form :
DoCmd.OpenForm "MS_Tabella", , , , acFormReadOnly, acDialog, strTabella
'Load del form
    If InStr(1, Forms!MS_Tabella.OpenArgs, "#") > 0 Then
        str_Tabella = Mid(Forms!MS_Tabella.OpenArgs, 1, InStr(1,
Forms!MS_Tabella.OpenArgs, "#") - 1)
        str_id = Mid(Forms!MS_Tabella.OpenArgs, InStr(1, Forms!MS_Tabella.OpenArgs,
"#") + 1, Len(Forms!MS_Tabella.OpenArgs) - InStr(1,
Forms!MS_Tabella.OpenArgs, "#"))
    Else
        str_Tabella = Forms!MS_Tabella.OpenArgs
    End If
CIao


 Roberto
Grazie Roberto
capisco e apprezzo il tuo punto di vista. A volte, un programmatore rischia
di lasciarsi prendere la mano e perdere di vista l'obiettivo finale (ed io
ci casco spesso). Per questo ho ripostato il messaggio, volevo conoscere le
vostre opinioni e farne possibilmente tesoro.
Van
