74 messaggi dal 24 novembre 2001
Buona sera a voi raga,
ho creato due funzioni che mi servono per convertire una data in numero e viceversa.
Ora sto provando ad utilizzarle in una query ma mi da errore credo che abbia sbagliato qualcosa, ma nn riesco a capire cosa. qualcuno sarebbe così gentile da darci un occhiata? Io ci sto impazzendo sopra....


Function datanumero(data)
data_giorno = day(data)
data_mese = month(data)
data_anno = year(data)
data_f = data_giorno&data_mese&data_anno
data_finale = Clng(data_f)
Response.write data_finale
End Function

Function numerodata(numero)
data_anno = right(numero,4)
data_mese = mid(numero,2,1)
data_giorno = left(numero,1)
data_f = data_giorno&"/"&data_mese&"/"&data_anno
data_finale = CDate(data_f)
Response.write data_finale
End Function
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
non ti conviene creare delle function per fare la conversione, esistono già diversi strumenti che ti possono aiutare in un baleno.

Quali sono esattamente i formati che devi avere? Ad esempio, se ho come data il 9 marzo 2003 tu vuoi fare:

numero: 09032003
data: 09/03/2003

vuoi produrre questo?

Allora ti basta fare:

Numero: <%Replace(Cstr(data),"/","")%>
Data: <%=FormatDateTime(data, vbshortTime)%>

Un consiglio: se definisci una function sarebbe buona norma fargli ritornare un valore. La function che non restituisce niente, si chiama Sub. ciao

Enjoy learning and just keep making
74 messaggi dal 24 novembre 2001
Buon giorno BrightSoul
Sto impazzendo da almeno due giorni con queste maledette date e tu con due righe mi hai risolto il prob. Sto testando ora il tuo post e pare che funge.... grazie mille.
Ora però ti chiedo un altra cosa: Mi piacerebbe che mi spiegassi cosa fanno quelle righe in modo che finalmente possa capire dove stava l'errore ....
Grazie mille ancora Bright
74 messaggi dal 24 novembre 2001
.... e poi un altra cosa , se volessi la data "numerica" in questo formato:
aaaammgg come dovrei fare?
11.886 messaggi dal 09 febbraio 2002
Contributi
Allora,
partiamo dal principio: tu sai che esistono diversi tipi di dati e tra questi ci sono le stringhe, i numeri, i valori booleani, e le date.

Puoi passare da un tipo di dati ad un'altro usando le funzioni di CASTING. E cioè queste qua:

Cstr(valore)
trasforma un valore in entrata in una stringa

CDate(valore)
trasforma valore in data (qualora sia possibile... non tutti i valori in entrata possono essere date).
E poi ci sono anche Cdbl, CLng, Cint, CBool, ecc...

Nella prima riga di codice ho fatto: Cstr(data)
questa istruzione trasformerà un tipo di dati DATA in STRINGA. per cui se faccio:
data = Date()
Response.write CStr(data)

vedrò a video "08/03/2003"
A questo punto, avendo io una stringa, posso usare su di essa altre comuni funzioni per la manipolazione delle stringhe, come Replace. Ho rimpiazzato i caratteri "/" e ho ottenuto la stringa "08032003".
Se vuoi la data nel formato aaaammgg puoi procedere in due modi:
- prelevare e comporre i singoli pezzi aaaa,mm,gg quando data è ancora una data
- comporre i pezzi dopo aver trasformato data in stringa

Se uso il primo dovrò usare funzioni adatte al tipo di dati DATA, come quelle che stravi usando (day, month, year), se uso invece il secondo userò funzioni che agiscono su stringhe come Split().
Ora, in vbscript la differenza tra i tipi non è che sia così accentuata (il più delle volte esso riesce a fare il casting in automatico senza che specifichi niente) quindi tutto questo discorso può sembrare banale ma in altri linguaggi come VB.net o C# questo potrà esserti utile.

Quindi, vediamo i due casi:
- Nel primo non mi conviene, perchè devo usare day e month che mi danno numeri a 1 o a 2 cifre, a seconda se il giorno è < 10, quindi dovrei aggiungere uno 0 davanti... insomma per una cosa così faccio prima con il secondo.
- Usando split. E' una funzione che crea un array spezzettando una stringa passata come valore. Siccome la stringa in questione è "08/03/2003" la posso comodamente spezzettare sul carattere "/" e ottengo così un array di 3 elementi che posso poi ordinare come voglio.
Ok, se prima scrivevi questo:

Numero: <%Replace(Cstr(data),"/","")%>

Ora fai:

<%myarray = Split(Cstr(data),"/")%>
Numero: <%=myarray(2) & myarray(1) & myarray(0)%>

se invece volessimo avere il formato anglosassone (mmggaaaa)
Numero: <%=myarray(1) & myarray(0) & myarray(2)%>

puoi giostrare i 3 elementi come più ti fa comodo.
ciaoo

Enjoy learning and just keep making
74 messaggi dal 24 novembre 2001
Buona domenica BrightSoul, grazie per le spiegazioni....
Per mettere la data in formato aaaammgg, ho fatto le comuni operazioni sulle date e trasformate poi nel formato giusto.

vdata = year(lunedi)
if len(month(lunedi)) = 1 Then
vdata = vdata &"/"&"0"&month(lunedi)
else
vdata = vdata&"/"&month(lunedi)
end if
if len(day(lunedi)) = 1 Then
vdata = vdata &"/"&"0"&day(lunedi)
else
vdata = vdata&"/"&day(lunedi)
end if

lune = Replace(Cstr(vdata),"/","")

ma effettivamente è un po lungo come procedimento ( ho scritto lo stesso codice per convertire poi la domenica). Non avevo pensato ad usare un array e giostrarmelo come meglio credo (anche xchè leggo spesso che è sconveniente usare gli array). 2 a 0 per te con due righe hai fatto ciò che io ho fatto in 10....

p.s.: Il tuo ultimo post me lo sono salvato, mi tornerà sicuramente utile grazie ancora
74 messaggi dal 24 novembre 2001
Un altra cosetta....facendo come mi hai detto l'anno me lo mette così: aa (03), per forzarlo a metterlo così: aaaa (2003) come faccio?
(Sto usando il libro dell' apogeo, ma lascia un po a desiderare.....)
3.122 messaggi dal 16 maggio 2002
Se vuoi mettere la data nel formato aaaammgg usa questa funzione:

function DateToStr(fData)
DateToStr = Year(fData) & Right("0" & Month(fData), 2) & Right("0" & Day(fData), 2)
end function

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.