Google Gruppi non supporta più i nuovi post o le nuove iscrizioni Usenet. I contenuti storici continuano a essere visibili.

Formato Data personalizzato e "dipendente" da altro campo

14 visualizzazioni
Passa al primo messaggio da leggere

SpiderMax

da leggere,
8 gen 2003, 15:44:2908/01/03
a
Saluti e buon anno a tutto il NG.

Come da oggetto, avrei la necessità di creare un formato personalizzato di
data per un campo, dipendente da un'altro.

Mi spiego meglio:
ho un DB di catalogazione fumetti (il mio incubo personale).
In una tabella chiamata TABAlbi Italiani ho un campo numero, nel quale
inserire il numero del fumetto (ad esempio: 12),
un campo doppionumero, dove inserire i nn° con doppia numerazione (perdonate
il bisticcio di parole -ad esempio: 12/13),
un campo data, nel quale inserire la data di uscita di un fumetto.
Bene, vorrei che, se il campo doppionumero non è nullo, il formato del campo
data sia Mese/Mese-Anno (ad esempio: Giugno-Luglio 1999).
Altrimenti, se il campo doppionumero é nullo, il formato del campo data
dovrebbe consentirmi di inserire facoltativamente il giorno e/o il mese, ma
obbligatoriamente almeno l'anno.

Se qualcuno mi potesse dare una mano, avrebbe la mia incondizionata
gratitudine.

Grazie in anticipo.

(¯`·.¸SpiderMax¸.·´¯)


Maurizio Borrelli

da leggere,
9 gen 2003, 05:40:3409/01/03
a
> "SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
> news:N40T9.95615$Ou4.3...@twister2.libero.it...
[...]

> ho un DB di catalogazione fumetti (il mio incubo personale).
> In una tabella chiamata TABAlbi Italiani ho un campo numero, nel quale
> inserire il numero del fumetto (ad esempio: 12),
> un campo doppionumero, dove inserire i nn° con doppia numerazione
> (perdonate
> il bisticcio di parole -ad esempio: 12/13),
> un campo data, nel quale inserire la data di uscita di un fumetto.
> Bene, vorrei che, se il campo doppionumero non è nullo, il formato del
> campo
> data sia Mese/Mese-Anno (ad esempio: Giugno-Luglio 1999).
> Altrimenti, se il campo doppionumero é nullo, il formato del campo data
> dovrebbe consentirmi di inserire facoltativamente il giorno e/o il mese,
> ma obbligatoriamente almeno l'anno.
[...]

Considera la possibilita' di aggiungere un campo "Numeri" (o come
preferisci chiamarlo) che abbia valore predefinito 1. Per mezzo di questo
campo indicherai se si tratta di numero singolo (1), doppio (2), triplo (3),
ecc. Di modo che ti sara' sufficiente registrare il numero ed il mese
iniziale nei campi NumeroIniziale (Intero) e DataIniziale (Data/ora). In
questo modo anche la ricerca dovrebbe risultare piu' efficace.

Per esempio:

Numeri NumeroIniziale DataIniziale
1 12 1/1/2000
2 24 1/1/2000

risulterebbero:

12, gennaio 2000
24-25, gennaio-febbraio 2000

applicando una funzione tipo la seguente:

Public Function RicavaNumeroEtData( _
ByVal Numeri As Integer _
, ByVal NumeroIniziale As Integer _
, ByVal DataIniziale As Date _
) As String
Dim sNum As String
Dim sData As String

sNum = CStr(NumeroIniziale)
If (Numeri = 1) Then
sData = Format$(DataIniziale, "mmmm yyyy")

Else
sNum = sNum & "-" & CStr(NumeroIniziale + Numeri - 1)
sData _
= Format$(DataIniziale, "mmmm") _
& "-" _
& Format$( _
DateAdd("m", Numeri - 1, DataIniziale) _
, "mmmm yyyy")

End If
RicavaNumeroEtData = sNum & ", " & sData

End Function

--
Ciao :-)
Maurizio
--------
?SPQR(C)
X
--------


Roberto da casa

da leggere,
9 gen 2003, 05:41:0509/01/03
a

"SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
news:N40T9.95615$Ou4.3...@twister2.libero.it...

Potrei non aver capito il tuo problema, ma se i due campi li dichiari di
tipo Testo, ci scrivi dentro i valori che ti pare e come ti pare, senza
impazzire a fare elucubrazioni strane sui formati.
O sbaglio?

--
Roberto

---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


SpiderMax

da leggere,
9 gen 2003, 07:05:5009/01/03
a

"Roberto da casa" <r.ma...@libero.it> ha scritto nel messaggio
news:5lcT9.97425$Ou4.3...@twister2.libero.it...

Grazie Roberto, ma il campo con la data (di tipo data) mi servirebbe per
fare ricerche e/o ordinamenti.
Con il campo (se di tipo testo) ho risultati "strani" :-)

Saluti

SpiderMax

da leggere,
9 gen 2003, 07:08:0809/01/03
a

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:avjj51$fo9dn$1...@ID-52090.news.dfncis.de...

CUT


Grazie Maurizio.
Anche se, trattandosi di aggiungere un nuovo campo (agli innumerevoli che in
questa tabella già ci sono), non sono entusiasta, provo e faccio sapere.

Maurizio Borrelli

da leggere,
13 gen 2003, 03:57:1513/01/03
a
> "SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
> news:ICdT9.97694$Ou4.3...@twister2.libero.it...
[...]

> Grazie Maurizio.
> Anche se, trattandosi di aggiungere un nuovo campo (agli innumerevoli che
> in
> questa tabella già ci sono), non sono entusiasta,

Capisco, pero' considera che i campi di cui parlo sono alternativi a
quelli attuali.

> provo e faccio sapere.

SpiderMax

da leggere,
13 gen 2003, 08:17:0813/01/03
a

>"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel
messaggio news:avtv42$j14m4$2...@ID-52090.news.dfncis.de...
> [...]

>
> Capisco, pero' considera che i campi di cui parlo sono alternativi a
> quelli attuali.
>

Me ne sono accorto successivamente, scusa.

Sarà la mia ignoranza, ma poi la funzione devo richiamarla con un call, e,
se si, su quale evento della maschera?

Stò impazzendo, ma continua a darmi il formato Data.

Grazie comunque.

Saluti.

Maurizio Borrelli

da leggere,
13 gen 2003, 08:45:5613/01/03
a
> "SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
> news:o%yU9.113526$TC5.3...@twister1.libero.it...

> >"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel
> > messaggio news:avtv42$j14m4$2...@ID-52090.news.dfncis.de...
> > [...]
> > Capisco, pero' considera che i campi di cui parlo sono alternativi a
> > quelli attuali.
> Me ne sono accorto successivamente, scusa.

Figurati.

> Sarà la mia ignoranza, ma poi la funzione devo richiamarla con un call,
e,
> se si, su quale evento della maschera?

Una funzione, per definizione, la usi assegnandone il risultato a
qualcosa: ad una variabile, ad una proprieta' di un controllo, ...

La cd. "call" invece e' tipica della chiamata di un metodo o "sub". Di
qualcosa insomma che non restituisce un valore.

Quindi se la funzione si chiama Pippo ed ha argomenti di nome Pluto e
Paperino la userai per esempio cosi':

Nel codice:

Topolino = Pippo(Pluto, Paperino)

dove Topolino e' il nome di una variabile. Se invece fosse il nome di un
controllo potresti anche scrivere nello stesso modo ma sarebbe preferibile
invece:

Me.Topolino.Value = Pippo(Pluto, Paperino)

cosi' e' chiaro per tutti di che si tratta; oppure:

Me![Topolino] = Pippo(Pluto, Paperino)

> Stò impazzendo, ma continua a darmi il formato Data.

Riguardo questa questione del formato data invece non capisco a cosa ti
riferisci.

SpiderMax

da leggere,
13 gen 2003, 09:30:0813/01/03
a

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:avug1q$ituuv$1...@ID-52090.news.dfncis.de...
[...]

> Figurati.

Grazie per la comprensione

> > Stò impazzendo, ma continua a darmi il formato Data.
>
> Riguardo questa questione del formato data invece non capisco a cosa
ti
> riferisci.
>

Non riesco a fare in modo che un campo contenga SOLO il giorno, o il mese, o
l'anno.

Comunque, rileggendo le righe di codice che mi hai gentilmente postato, mi
sono accorto che non posso servirmene.

Mi servirebbe fare in modo da non dover inserire OBBLIGATORIAMENTE il
giorno, il mese e l'anno, ma solo l'anno (è l'unico certo).

Mi spiego meglio:

Se il numero è doppio, inserisco sia il N°AlboItaliano (ad es: 12), sia il
DoppioN°AlboItaliano (in questo caso il 13), e nel campo DataAlboItaliano,
vorrei poter inserire non il giorno (non serve, se, come in questo esempio,
è un mensile od altro), ma solo i due mesi consecutivi e l'anno.

A volte ci sono volumi che (specie i più antichi) sono usciti non in un
giorno ed un mese precisi, ma SICURAMENTE in un determinato anno. E quello
solo vorrei inserire.

Pensavo di creare quattro campi data (uno per il giorno, uno per il mese,
uno per il doppio mese ed uno per l'anno -se il campo doppion° é null,
nascondere il campo giorno e rendere visibile il campo doppio mese e
viceversa-) ed accorparli in un campo non associato con cui fare ordinamenti
e ricerche, ma non so come poi mettere in pratica tutto ciò.

Sperando Roberto non si arrabbi (visto che mi rimprovera spesso,
giustamente, di non dovermi limitare alle mie idee, "ché se erano
funzionanti e funzionali non avrei chiesto aiuto").

Grazie ancora e scusa le mie divagazioni.

Saluti

Maurizio Borrelli

da leggere,
13 gen 2003, 09:49:1513/01/03
a
> "SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
> news:Q3AU9.115010$Ou4.3...@twister2.libero.it...

> > "Maurizio Borrelli" <maurizio...@freepass.it> ha scritto
> > nel messaggio news:avug1q$ituuv$1...@ID-52090.news.dfncis.de...
[...]
> Non riesco a fare in modo che un campo contenga SOLO il giorno, o il mese,
o
> l'anno.

Qua bisogna mettersi d'accordo per bene... In special modo devi tu
metterti d'accordo con te stesso. ;-)

Un campo data contiene una data. Non ci piove. E una data e' composta da
giorno, mese, anno e frazione di giorno (ora, minuto, ...)

Quindi se vuoi usare un campo data *devi* scrivere nel campo anche il
giorno ed il mese. Riguardo la visualizzazione ovviamente e' un'altra
faccenda. Un campo data lo visualizzi come vuoi: solo mese e anno, solo
anno, quel che vuoi.

Quindi per i casi in cui e' ignoto o inutile il giorno, stabilisci che
tale giorno sia il primo del mese, cosi' per giorno e mese non disponibile
stabilirai che tale giorno sia il primo gennaio.

Puo' andare, cosi'?

Diversamente non potrai/dovrai usare un campo data ma un campo di testo.
Nel qual caso ci scriverai cio' che vuoi. Ma questo ti impedira' di usare
tale campo per ricerche di tipo data. Per esempio richerche dalla data alla
data...

> Comunque, rileggendo le righe di codice che mi hai gentilmente postato, mi
> sono accorto che non posso servirmene.

Perche'? Io invece sono ancora dell'idea che vadano proprio bene per
quel che chiedi. Salvo prova contraria.

> Mi servirebbe fare in modo da non dover inserire OBBLIGATORIAMENTE il
> giorno, il mese e l'anno, ma solo l'anno (è l'unico certo).

Quel che dicevo sopra, insomma. Inserisci l'anno, p.es. 1932, e nel
campo data memorizzi 1/1/1932.

> Mi spiego meglio:
>
> Se il numero è doppio, inserisco sia il N°AlboItaliano (ad es: 12), sia il
> DoppioN°AlboItaliano

Io proponevo invece di immettere 12 e 2 dove 2 sta per doppio.

> (in questo caso il 13), e nel campo DataAlboItaliano,
> vorrei poter inserire non il giorno (non serve, se, come in questo
esempio,
> è un mensile od altro), ma solo i due mesi consecutivi e l'anno.

Se si tratta di giugno/luglio 1932 io proponevo di memorizzare:

1/6/1932

ed essendo di tipo 2 (doppio) la data di pubblicazione risulta appunto
quella indicata sopra.

> A volte ci sono volumi che (specie i più antichi) sono usciti non in un
> giorno ed un mese precisi, ma SICURAMENTE in un determinato anno. E quello
> solo vorrei inserire.

Primo gennaio, quindi.

> Pensavo di creare quattro campi data (uno per il giorno, uno per il mese,
> uno per il doppio mese ed uno per l'anno -se il campo doppion° é null,
> nascondere il campo giorno e rendere visibile il campo doppio mese e
> viceversa-)

Potrebbe anche andar bene al limite. Ma non si parlera' di "campo data"
ma di campo "numerico intero". Cosi' pero' la questione delle ricerche
diventerebbe un po' piu' complessa.

> Un campo che contiene il giorno


> ed accorparli in un campo non associato con cui fare ordinamenti
> e ricerche, ma non so come poi mettere in pratica tutto ciò.

Appunto. E' fattibile ma non entusiasmante.

> Sperando Roberto non si arrabbi (visto che mi rimprovera spesso,
> giustamente, di non dovermi limitare alle mie idee, "ché se erano
> funzionanti e funzionali non avrei chiesto aiuto").
> Grazie ancora e scusa le mie divagazioni.

Ri-figurati. :-)

Ed ora per favore rileggi quel che ho scritto. ;-)))

SpiderMax

da leggere,
13 gen 2003, 12:12:2713/01/03
a

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:avujnf$j71gm$1...@ID-52090.news.dfncis.de...

> Qua bisogna mettersi d'accordo per bene... In special modo devi tu
> metterti d'accordo con te stesso. ;-)


Vedo, che mi iniziate a conoscere anche sul NG


> Un campo data contiene una data. Non ci piove. E una data e' composta
da
> giorno, mese, anno e frazione di giorno (ora, minuto, ...)
>
> Quindi se vuoi usare un campo data *devi* scrivere nel campo anche il
> giorno ed il mese. Riguardo la visualizzazione ovviamente e' un'altra
> faccenda. Un campo data lo visualizzi come vuoi: solo mese e anno, solo
> anno, quel che vuoi.


Quello è il problema, allora. Come visualizzarlo nella maniera che mi
necessita? In un campo non associato? Nello stesso campo data? E se si come
visualizzare questi prodigi?


> Quindi per i casi in cui e' ignoto o inutile il giorno, stabilisci che
> tale giorno sia il primo del mese, cosi' per giorno e mese non disponibile
> stabilirai che tale giorno sia il primo gennaio.
>
> Puo' andare, cosi'?


Dovrei testarlo, con la pratica... ...ma, così a braccio, mi va bene (era
quello che avevo usato prima di incontrare questi nn° doppi che non avevo
calcolato in fase di progettazione e che mi hanno mandato in crisi
(HAAAARGGGG -piccolo sfogo neofitico, scusa-)

Ancora grazie per l'aiuto.
(E la pazienza)

SpiderMax

da leggere,
13 gen 2003, 14:09:0913/01/03
a

"SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
news:%rCU9.153$ZE....@twister2.libero.it...

> > Quindi se vuoi usare un campo data *devi* scrivere nel campo anche
il
> > giorno ed il mese. Riguardo la visualizzazione ovviamente e' un'altra
> > faccenda. Un campo data lo visualizzi come vuoi: solo mese e anno, solo
> > anno, quel che vuoi.
>
>
> Quello è il problema, allora. Come visualizzarlo nella maniera che mi
> necessita? In un campo non associato? Nello stesso campo data? E se si
come
> visualizzare questi prodigi?
>
>

L'ho inserito in un campo Testo6 non associato (ho creato un DB apposito per
fare un pò di prove... ...il nome del campo è di defaut) e tutto funge
perfettamente (a parte il fatto che ho aggiunto un pò di codice per
intercettare l'inserimento di un nuovo record, altrimenti mi dava errori con
i campi null).

Ma, se devo filtrare o ordinare su questo campo devo per forza passare da
query?

Saluti.

Maurizio Borrelli

da leggere,
15 gen 2003, 04:03:5415/01/03
a
> "SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
> news:%rCU9.153$ZE....@twister2.libero.it...

> > "Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel
> > messaggio news:avujnf$j71gm$1...@ID-52090.news.dfncis.de...
[...]

> > Un campo data contiene una data. Non ci piove. E una data e'
> > composta da
> > giorno, mese, anno e frazione di giorno (ora, minuto, ...)
> > Quindi se vuoi usare un campo data *devi* scrivere nel campo anche
> > il
> > giorno ed il mese. Riguardo la visualizzazione ovviamente e' un'altra
> > faccenda. Un campo data lo visualizzi come vuoi: solo mese e anno, solo
> > anno, quel che vuoi.
> Quello è il problema, allora. Come visualizzarlo nella maniera che mi
> necessita? In un campo non associato? Nello stesso campo data? E se si
> come visualizzare questi prodigi?

Per mezzo della funzione Format. Ma non sono sicuro di aver capito
esattamente cio' che intendi. Per esempio la data odierna, 13/1/2003,
memorizzata in un campo di tipo data di nome Data di una tabella potra'
essere visualizzata come:

gennaio 2003: Format(Data;"mmmm aaaa")

-oppure-

2003: Format(Data;"aaaa")

ecc. Ma pensavo che questa funzione gia' la conoscessi.

Considera anche che e' poco rilevante come venga visualizzata nella
tabella stessa, anzi e' preferibile nel caso della tabella vedere un formato
il piu' possibile completo per poter controllare come stanno realmente le
cose. La formattazione interessera' semmai le query e sicuramente le
maschere ed i report.

Una volta stabilito che l'informazione verra' memorizzata in tre campi:

Numeri
Numero
Data

si tratta di studiare una interfaccia coerente che semplifichi l'immissione.
Per esempio vedrei bene in una maschera dei controlli del genere:

TipoNum NumInizio DataInizio Decodifica

dove TipoNum potrebbe essere una Casella combinata coi valori:

Singolo 1
Doppio 2
Triplo 3

collegata al campo Numeri, NumInizio una Casella di testo che permetta di
immettere solo numeri interi positivi, collegata al campo Numero, e
DataInizio una Casella di testo non associata che permetta di immettere date
in forma libera intendendo con questo date del tipo:

1932 (solo anno)
9/1932 (mese anno)
15/9/1932 (data completa)

che da codice verranno validate ed integrate della parte mancante in modo da
ottenere le date che effettivamente verranno memorizzate:

1/1/1932
1/9/1932
15/9/1932

Infine, nella casella di testo non associata "Decodifica", per mezzo
della funzione che ho postato nel mio primo intervento in questo 3d,
leggerai numero e data di pubblicazione nel formato di output che
preferisci.

SpiderMax

da leggere,
15 gen 2003, 14:27:2515/01/03
a

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:b03884$knc81$1...@ID-52090.news.dfncis.de...

Grazie, Maurizio, per tutte le dritte che mi stai dando.

Era mia ignoranza, il credere che il tipo di campo data fosse "più
flessibile".

Mi rendo conto che lo può essere solo in una maschera (ergo, posso
modificare la VISUALIZZAZIONE dei dati, ma non inserirne di meno -o di
più-).

Comunque, se ho ben capito, da qualche parte, DEVO inserire la data COMPLETA
di giorno, mese ed anno (cosa che volevo evitare).

Per ora ho dei dubbi (non dipendenti dalle tue spiegazioni, ma da mie
considerazioni) nell'implementare la tabella nel modo da te gentilmente
consigliatomi (anche se questo nulla toglie sia un'ottima soluzione).

PS: se DataInizio è dicembre e TipoNumero <> 1, la funzione dovrebbe
comprenderne due (per esempio 2001/2002), mentre, giustamente mi mostra solo
l'anno inserito nel campo DataInizio. Cerco di studiare come fare.

Ancora grazie

SpiderMax

da leggere,
19 gen 2003, 15:54:4619/01/03
a

"SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
news:xCiV9.8690$ZE.2...@twister2.libero.it...
>

> Per ora ho dei dubbi (non dipendenti dalle tue spiegazioni, ma da mie
> considerazioni) nell'implementare la tabella nel modo da te gentilmente
> consigliatomi (anche se questo nulla toglie sia un'ottima soluzione).
>
> PS: se DataInizio è dicembre e TipoNumero <> 1, la funzione dovrebbe
> comprenderne due (per esempio 2001/2002), mentre, giustamente mi mostra
solo
> l'anno inserito nel campo DataInizio.


Non ho più dubbi ed ho seguito il tuo valido suggerimento, implementando la
tabella come mi consigliavi.

Va che è una favola.

PS: ma, come chiedevo, come faccio se il mese inserito nel campo data è
uguale a 12 (dicembre) ad utilizzare un formato tipo: "mmmm aaaa" / "mmmm
aaaa" (ad esempio: dicembre 2000/gennaio 2001)?

Maurizio Borrelli

da leggere,
19 gen 2003, 17:26:3419/01/03
a
> "SpiderMax" <Spid...@vizzavi.it> ha scritto nel messaggio
> news:qgEW9.23276$YG2.6...@twister1.libero.it...
[...]

> Non ho più dubbi ed ho seguito il tuo valido suggerimento, implementando
> la tabella come mi consigliavi.
> Va che è una favola.

Questa e' una bella notizia!

> PS: ma, come chiedevo, come faccio se il mese inserito nel campo data è
> uguale a 12 (dicembre) ad utilizzare un formato tipo: "mmmm aaaa" / "mmmm
> aaaa" (ad esempio: dicembre 2000/gennaio 2001)?

Di questo se ne dovrebbe occupare la funzione RicavaNumeroEtData che ho
postato all'inizio del nostro discorso. Ovvero tale funzione andrebbe
modificata affinche' restituisca la data di pubblicazione (mesi e anni)
nella forma che vuoi.

Rivediamola:

' (Non ho testato!...)
'


Public Function RicavaNumeroEtData( _
ByVal Numeri As Integer _
, ByVal NumeroIniziale As Integer _
, ByVal DataIniziale As Date _
) As String
Dim sNum As String
Dim sData As String

Dim tData As Date

sNum = CStr(NumeroIniziale)
If (Numeri = 1) Then
sData = Format$(DataIniziale, "mmmm yyyy")

Else
sNum = sNum & "-" & CStr(NumeroIniziale + Numeri - 1)

tData = DateAdd("m", Numeri - 1, DataIniziale)
If (Year(DataIniziale) <> Year(tData)) Then


sData = Format$(DataIniziale, "mmmm yyyy")
Else

sData = Format$(DataIniziale, "mmmm")
End If
sData _
= sData _
& "-" _
& Format$(tData, "mmmm yyyy")


End If
RicavaNumeroEtData = sNum & ", " & sData

End Function

Pero'... Pero' trovo che la forma dicembre-gennaio 2002 sia
sufficientemente chiara per far capire a chi legge che con dicembre si
intende dicembre 2001, no?

SpiderMax

da leggere,
20 gen 2003, 08:40:0220/01/03
a

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:b0f8on$p145v$1...@ID-52090.news.dfncis.de...

> ' (Non ho testato!...)

Ho testato io, con mia VIVA SODDISFAZIONEEEEEEEEEEEE (perdona l'urlo).

Grazie Maurizio.

Ora ho questa maschera che fa quello che voglio io e non quello che dice lei
(son anche riuscito a modificare i campi, rendendoli visibili o meno in base
alle necessità, e le etichette, che rispecchiano i contenuti).

0 nuovi messaggi