Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB.Net] Päivämäärän muotoilu

Sivun loppuun

Sam76 [31.03.2009 19:00:34]

#

Moro.

Mitenköhän saisin muutettua päivämäärän muotoa? Tarkoitus olisi muuttaa "dd/mm/yyyy" -muodosta "yyyy/mm/dd"-muotoon.

Olen yrittänyt tälläisellä(+lukuisilla muilla) virityksillä:

Dim pvm As Date
' muutetaan tekstiboksin teksi päivämääräksi
pvm = CDate(pvm1.Text)
pvm = FORMAT(pvm, "yyyy/mm/dd")' tämä ei edes käänny

Mutta kuten olettaa saattaa, niin ei.

Grez [31.03.2009 19:22:36]

#

Sam76 kirjoitti:

pvm = FORMAT(pvm, "yyyy/mm/dd")' tämä ei edes käänny

Format palauttaa String tyyppisen tiedon, mutta pvm on määritelty Date-tyyppiseksi. Eli luonnollisesti tuollainen ei käänny.

neau33 [31.03.2009 19:55:11]

#

Heippa Sam76!

kokeile vaikka näin...

Dim pvm As Date
label1.Text = now.ToString
pvm = CDate(label1.Text)
label1.Text = Format(pvm, "yyyy/MM/dd").Replace(".","/")
'pvm = CDate(label1.Text)

Grez [31.03.2009 20:08:19]

#

Miksi tehdä tuurilla toimiva?

label1.Text = Format(pvm, "yyyy/MM/dd").Replace(".","/")

Kun voi tehdä varmasti toimivankin:

label1.Text = Format(pvm, "yyyy\/MM\/dd")

Sam76 [31.03.2009 21:42:10]

#

Kiitokset molemmille nopeasta vastauksesta.

Päivämäärä kääntyy nyt kyllä haluttuun muotoon tekstiboksissa mutta minun ongelmani ei ratkennut vieläkään.

Nolottaa myöntää mutta olen paininut tämän ongelman kanssa varmaan monta kuukautta(ja käynyt monta keskustelua) ja ikinä ei tunnu tulevan täysin valmista. :O

Yritän selittää nyt koko tilanteen. Elikkä minulla on seuraavanlaiset systeemit:

dim alku,loppu as date
alku = cdate(pvm.text)
loppu = cdate(pvm2.text)  (pyydän tähän käyttäjältä päivämäärän)

Access2007 kanta jossa ks. sarakkeet muotoa pvm/klo
SQL-lause, johon tämä päivämäärä pitää sijoittaa:

"SELECT nimi, Sum(IIF(loma.loppu<='" & loppu & "' ,loma.loppu)-IIF(loma.alku>='" & alku & "',loma.alku)) as päivät FROM jne...

SQL-lause on tuossa epätäydellisenä mutta se toimii, jos
a) kirjoitan alku ja loppu muuttujat muotoon FORMAT('" & alku & "', 'yyyy-mm-dd')
b) kirjoitan päivämäärän kiinteästi SQL:ään muodossa #2009/01/01#

Haluaisin siis päästä tuosta SQL:n sisällä olevasta FORMAT()-funktiosta eroon ja muuttaa päivämäärän tuohon "yyyy/mm/dd"-muotoon jo koodissa. Mitenköhän sen tekis, kun edellä mainittut muokkaamisetkaan eivät auttaneet.

Auttakee ihmeessä, tää alakaa käyvä hermoon..:)

Grez [31.03.2009 22:25:55]

#

Dim alku, loppu As Date
alku = CDate(pvm.Text)
loppu = CDate(pvm2.Text)

Dim AlkuSQL, LoppuSQL, Kysely As String

AlkuSQL = Format(alku, "\#yyyy\-MM\-dd\#")
LoppuSQL = Format(loppu, "\#yyyy\-MM\-dd\#")

Kysely = "SELECT nimi, Sum(IIF(loma.loppu<=" & LoppuSQL & ",loma.loppu)-IIF(loma.alku>=" & AlkuSQL & ",loma.alku))"

Sam76 [01.04.2009 17:42:37]

#

Jippey, nyt toimii:D Kokeilin kyllä monenlaista muotoilua mutta näitä risuaitoja en kyllä olisi IKINÄ osannut laittaa mukaan.

Kiitos Grez (ja neau33 myös) kärsivällisestä ja hyvästä opastamisesta. Täytyy vaan ihmetellä, että miten jollain on näin laaja tietämys aiheesta...

ps. onko näin, että kun SQL:ään sijoitetaan muuttuja niin String-tyyppinen sijoitetaan tyyliin: '" & muuttuja1 & "' ja muut: " & muuttuja2 & "? Vai mikä noitten hipsujen(') funktio on?

Grez [02.04.2009 08:32:17]

#

Sam76 kirjoitti:

ps. onko näin, että kun SQL:ään sijoitetaan muuttuja niin String-tyyppinen sijoitetaan tyyliin: '" & muuttuja1 & "' ja muut: " & muuttuja2 & "? Vai mikä noitten hipsujen(') funktio on?

Tuo on VB.Net:iä, ei SQL:ää. Siitähän tulee siis seuraavan näköinen SQL-lause:

SELECT nimi, Sum(IIF(loma.loppu<=#2009-05-01#,loma.loppu)-IIF(loma.alku=>#2009-04-10#,loma.alku))

'-merkkejä käytetään SQL:ssä ei-numeerisen tiedon ilmaisemiseen. Useimmissa SQL-variaatioissa '-merkkejä käytetään myös päivämäärille ja kellonajoille, mutta Accessissa on omanlaisensa tapa käyttää #-merkkejä.

Ja VB:ssä & tarkoittaa merkkijonojen yhdistämistä ja + numeroiden yhdistämistä. Olen tässä nyt macilla niin en ala tutkimaan miten tuo VB.Netissä menee, mutta ainakin VB6:ssa "7"+"3" tuottaa 10, kun "7"&"3" tuottaa "73"

Sam76 [02.04.2009 14:08:12]

#

Kiitos ohjeistuksesta.

Grez kirjoitti:

Ja VB:ssä & tarkoittaa merkkijonojen yhdistämistä ja + numeroiden yhdistämistä. Olen tässä nyt macilla niin en ala tutkimaan miten tuo VB.Netissä menee, mutta ainakin VB6:ssa "7"+"3" tuottaa 10, kun "7"&"3" tuottaa "73"

Kokeilin ks. asiaa ja se on juuri kuten sanoit.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta