Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB 6 Päivämäärän tarkistus

JuGe [30.01.2008 19:32:02]

#

Mikä ois paras tapa tarkistaa VB 6:ssa, että onko syötettyä päivämäärää olemassa?

Eli jos syötetään teksti kenttään esim. 30.2.2008, niin sellaista päivää ei edes ole olemassa. Niin tuon syötteen vois tarkistaa, että syötetty päivämäärä todellakin on olemassa, ennen päivämäärän käyttöä.

-JuGe

hunajavohveli [30.01.2008 19:48:04]

#

Kaikki vuodethan sekä kuukaudet 1-12 ovat luonnollisesti olemassa. Päivien kanssa kannattanee menetellä siten, että tallentaa taulukkoon kuukausien päivien määrät ja vertailee annettua kuukautta vastaavaa määrää annetun päivän kanssa. Helmikuulle joudutaan sitten vielä erikseen tekemään tarkistus karkauspäivien suhteen. Hommahan menee siis siten, että neljällä jaolliset vuodet ovat karkausvuosia, paitsi että sadalla jaolliset eivät ole, elleivät ne ole jaollisia myös 400:lla. Lisäksi vuosi 4000 ei ole karkausvuosi.

JuGe [30.01.2008 19:56:34]

#

Eikö tuohon ole olemassa mitään helpompaa ratkaisua?

VB:n funktiot kuten DateAdd("d", 30, Paiva) osaa lisätä paiva muuttujaan 30 päivää siten, että se ei anna virheellisiä päivämääriä. Eli ne päivät täytyy olla taulukotu tuonne syövereihin valmiiksi. Miten noita taulukoita voisi hyödyntää?

-JuGe

JussiR [30.01.2008 21:31:19]

#

Kato onko näistä apua: https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=vbpvm

hunajavohveli [30.01.2008 22:06:18]

#

Tuoltahan tuommoinen IsDate()-funktio näkyykin löytyvän.

JuGe [31.01.2008 00:06:21]

#

Tuo isDate()-funktio on juuri sitä mitä etsin. Yritin ettiä vastaavaa mdsn-librarysta, mutta tuli vastaan vaan DateDiff ja tuo DateAdd funkkarit. Yritin myös etsiä täältä putkasta jellpiä, mutta tuo oikeiden hakusanojen käyttö on liian tekniikka laji... :)

Kiitoksia kovasti molemmille avusta. Tästä on taas hyvä jatkaa.

-JuGe

Merri [31.01.2008 09:56:02]

#

Kannattaa käyttää hyväksi VB:n Date-muuttujatyyppiä, se voi sisältää ainoastaan olemassaolevan päivämäärän. Muodoltaan se on sama kuin Double, se vain on asetettu toimimaan erikoisemmalla tavalla: desimaaliosat kuvaavat osaa päivästä, esim. 0,5 = kello 12:00. Tai 0,25 = 6:00, 0,75 = 18:00 - päivä sitten vastaa siis täyttä ykköstä.

Tältä pohjalta:

Dim dtmDay As Date
' siirry seuraavaan päivään
dtmDay = Now + 1

Ja myös:

' huomenna kello 12
dtmDay = Int(Now) + 1.5

Voit varmistaa Debug.Printillä tai MsgBoxilla :) Voit myös kopioida Daten arvon suoraan Doubleen, niin näet mikä arvo Datessa "oikeasti" on.

Vastaus

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

Tietoa sivustosta