Newsgroup: it.comp.appl.access
Titolo: valore predefinito combobox

Salve a tutti!
Ho un problema con una combobox in una maschera. Ho un controllo data
e questa data  diventa l'argomento di una funzione pubblica
Festivo([data]) che richiamata nell' origine  di una casella di
testo[stato](sempre nella stessa maschera) mi dice se il giorno è
festivo o feriale. 
Quando scrivo una nuova data la casella di testo [stato] si aggiorna
automaticamente. Ora vorrei che a seconda del risultato (festivo o
feriale) il valore predefinito di una combobox nella stessa maschera
diventasse "presente feriale" o " presente festivo". Come posso fare?
Grazie in anticipo per l'aiuto.
Stefano Bigiarini

 diventasse "presente feriale" o " presente festivo". Come posso fare?
La proprietà "valore predefinito" entra in gioco solamente quando vai a creare 
un nuovo record, mentre non viene utilizzata in caso di modifiche.
Detto questo, per ottenere quello che vuoi devi specificare meglio se vorresti 
che la combo basasse il suo comportamento sul valore della textbox con la 
data, oppure sul valore del campo data ad essa associato.
Nel primo caso (leggere il valore del controllo textbox) puoi lavorare da 
codice andando a sfruttare l'evento OnCurrent della form, testando la condizione 
Me.NewRecord ed utilizzando la seguente riga di codice:
        If Festivo(Me!txtData) Then
            Me.cboRisultato.DefaultValue = "presente festivo"
        Else
            Me.cboRisultato.DefaultValue = "presente feriale"
        End If
Ovviamente perché non ci siano problemi bisogna anche che tu faccia in modo 
che il controllo con la data abbia un valore predefinito nella form.
Aggiungo anche che, se vuoi controllare anche le modifiche fatte dall'utente 
alla data nella fase di inserimento del record (cosa auspicabile), nell'evento 
AfterUpdate del controllo in questione devi anche controllare che la data 
non sia NULL, altrimenti ti viene restituito un bell'errore.
Nel secondo caso (leggere il valore del campo data) forse potresti risolvere 
andando a lavorare con ADOX e recuperandoti il valore predefinito del campo 
(che deve essere specificato a livello di struttura di tabella), altrimenti 
non puoi fare quello che desideri perché i valori predefiniti (quelli specificati 
nella struttura della tabella) vengono utilizzati dal motore del database 
al momento del salvataggio, con lo scopo di valorizzare i campi che non sono 
stati valorizzati dall'utente.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it



ti ringrazio molto per la risposta ma purtroppo:
1) la prima soluzione era ottima, ma il controllo data nella maschera
è  vuoto quando si crea un nuovo record ( non posso mettere una data
predefinita);
2)la seconda soluzione va a pescare sulla tabella e non è quello che
volevo.
Ti ringrazio comunque e proverò un'altra strada.
Stefano Bigiarini

asinobigio ha scritto:

Soluzione trovata (grazie alle idee di Gabriele Bertolucci)!
sull'evento "Dopo aggiornamento" nel controllo DATA ho inserito il
seguenete codice:
If Forms!miamaschera.NewRecord = True Then
            If Festivo([DATA]) = True Then
                combobox1.SetFocus
                combobox1.Value = "Pres. FESTIVO"
            End If
End If
End Sub
se FESTIVO([data]) è falso viene scritto nella combobox1 il valore
predefinito (nel caso PRESENZA FERIALE).
Per evitare, in caso digiti una data già immessa, che la funzione
sopra descritta vada ad alterare i dati già inseriti, ho messo
sull'evento"prima di aggiornare"del controllo DATA  la seguente sub:
If Forms!miamaschera.NewRecord = True Then
    If IsNull(DLookup("data", "miatabella", "data=#" &
Format(Me![data], ggmmaaaa) & "#")) Then
    Exit Sub
    Else
    MsgBox "data già inserita!"
    Me.[data].Undo
    Cancel = True
    End If
End If
Spero possa essere utile a qualcuno.
Stefano Bigiarini