Newsgroup: it.comp.appl.access
Titolo: Calendario nella combobox

Vorrei fare una casella combinata che nella relativa tendina mostri le
date dei prossimi 30 giorni tra le quali eventualmente selezionarne
una. Chiaramente le date non le posso inserire a mano.
E possibile?
Devo fare una tabella contenente le date dei prox 30 giorni?
Chiaramente questa tabella dovrebbe aggiornarsi ogni giorno ma non so
proprio come impostare la query.
Riuscite ad aiutarmi?
CARLO.

Devo fare una tabella contenente le date dei prox 30 giorni?
volendo anche, ma non e' necessario.  chiaramente sarebbe una tabella
che come minimo riempi e svuoti una volta al giorno.  ora, 30 record
non sono niente, ma come saprai lo spaizo fisico dei record cancellati
da access non viene recuperato automaticamente ma solo con la
compattazione.  quindi se tu cancelli una tabella enorme da un db e
non lo compatti, il db resta enorme.  se tu per un anno aggiungi e
togli 30 record al giorno il db si ingrossa.
quello che ti consiglierei e' di creare una origine dati in formato
stringa per la combo, non una tabella.
le combo possono avere due tipi di origine riga: una tabella o query
ed un elenco di valori (vabbe', in realta' sono tre perche' c'e' anche
l'elenco campi, ma questo per il momento non ci interessa).
la tabella o query abbiamo detto di no, resta l'elenco valori.
l'elenco valori altro non e' che uno stringone che contiene tutti i
valori che tu vuoi siano visualizzati nella combo, separati da punti e
virgole,  ad esempio se assegni questa stringa:
"primo;secondo;terzo;quarto"
come origine dati della combo, quando ne clicchi l'elenco viene giu'
una tendina con:
primo
secondo
terzo
quarto.
puoi anche utilizzare combo con piu' colonne:
"col1riga1;col2riga1;col3riga1;col1riga2;col2riga2;col3riga2;"
la tendina sara':
col1riga1	col2riga1	col3riga1
col1riga2	col2riga2	col3riga2
venendo al tuo caso, non devi fare altro che generare una stringa che
contenga le espressioni delle date dal giorno di oggi ai prossimi
tretna giorni.  io scriverei una funzione di questo tipo:
fProx30gg() as string
dim appo as string
dim i as integer
for i=0 to 30
   appo=appo & format(dateadd("d", i, date()), "yyyy/mm/dd") & ";"
next i
fProx30gg=appo
end function
la funzione mettila in un modulo cosi' la potrai chiamare anche da
altre maschere.  se "oggi" e' il 20 aprile 2000 la funzione dovrebbe
restituire una stringa del tipo:
"2000/04/20;2000/04/21;2000/04/22..."
perche' ho messo anno mese giorno?  poi vediamo.
nell'evento open della maschera che contiene la combo setterai la
proprieta' origine riga della combo stessa a questa funzione.  prima
ancora, gia' che ci sei, setterai il tipo di origine riga ad elenco di
valori, cosi' la combo non si aspettera' una tabella.  poi ci metti un
requery che non fa mai male:
me.combo.rowsourcetype="Value list"
me.combo.rowsource=fProx30gg()
me.combo.requery
perche', dicevo, ho messo anno (in *4* cifre!) mese giorno?  perche'
access lo hanno scritto gli americani, gente strana che scrive le date
in formato mese giorno anno.  se tu dovessi usare una data del tipo
"10/05/2000" in codice, access potrebbe pensare che si tratta del 5
ottobre anziche' del 10 maggio.
se invece access (o meglio, l'sql che sta dentro ad access e che opera
anche se tu non lo vedi) si trova un gruppo di quattro cifre, sa per
certo che quello e' l'anno e che sara' seguito per froza dal mese e
dal giorno.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/

 Devo fare una tabella contenente le date dei prox 30 giorni?


cosi' gentile da ripostarla?
te la mando per posta.  se altri hanno lo stesso problema facciano
sapere.


me.combo.requery
Ma queste 3 righe dove le devo mettere? Nell'origine riga della combo?
La possibilità di scelta che mi è offerta è tra tabelle e query.
Come è facile intuire sono abbastanza impedito nel richiamare le
funzioni.
Riuscite a guidarmi?
Grazie, CARLO.

Ma queste 3 righe dove le devo mettere? Nell'origine riga della combo?
no, nell'evento open della maschera, dopo che avrai scelto genera
codice.


"27/05/2000;28/05/2000...".
Nella combobox in non scrivo niente nč nella riga controllo dati nč
nella riga origine dati perchč e lě che dovrei trovare la stringa con
le date, vero?
Cmq fino a qui tutto OK.
Ho fatto un modulo scrivendo:
Function fProx30gg() As String
Dim appo As String
Dim i As Integer
For i = 0 to 30
appo = appo & Format(DateAdd("d", i, Date), "yyyy/mm/dd") & ";"
next i
fProx30ff = appo
End Function
Quando apro la maschera mi dice:
Errore di compilazione:
Impossibile trovare il progetto o la libreria.
Mi si llumina di giallo la prima riga Function fProx30gg() As String
e mi si illumina di blu Date nella DateAdd.
E qui mi painto.
CARLO.

e mi si illumina di blu Date nella DateAdd.
aio.  hai access 2000?  e' un errore risolvibile ma non ricordo come.
cerca tra i vecchi messaggi del ng quelli riguardanti un problema
simile, ovvero librerie e funzioni di sistema non caricate.


simile, ovvero librerie e funzioni di sistema non caricate.
Ho cercato un pò nelle raccolte dei mesi precedenti ma non ho trovato
nulla di interessante.
Se vi dovesse capitare sottomano qualcosa, giratela anche a me.
Grazie,
					CARLO.