Mitenkähän voisin tarkistaa visual basicilla että onko tekstikenttään laitettu päivämäärä muotoa dd.mm.yyyy?
IsDate() - funktiolla, joka palauttaa truen jos kyseessä on päivämäärä.
Esim. If Not IsDate(text1.text) Then MsgBox("Pvm ei kelpaa!")
...edellinen koodi ei tarkista onko päivämäärä muotoa dd.mm.yyyy, vaan tarkistaa onko kyseessä mikään päivämäärä.
Päivämäärien käpistely on joka tapauksessa melkoisen hankalaa koska on erilaisia päivämäärä formaatteja:
dd.mm.yyyy, mm/dd/yyyy, dd/mm/yyyy, mm-dd-yyyy, yyyy-mm-dd jne.
IsDate tarkistaa vain onko syötetty teksti mitään noista formaateista. Jos teksti tulee tallentaa tai muuten käsitellä kannattaa käyttää isdaten jälkeen format-komentoa.
Vähän seuraavaan tyyliin:
If IsDate(Text1.Text) Then Text1.Text = Format(Text1.Text, "dd.mm.yyyy") Else MsgBox "Päivämäärä väärin muotoiltu!" Text1.Text = "" Text1.SetFocus End If
Tämäkään ei ratkaise ongelmaa dd/mm/yyyy ja mm/dd/yyyy päivämäärämuotojen välillä.
Voit tietysti tarkistaa onko syötetyssä arvossa kaksi pistettä ja hyväksyä vain sen muodon:
If InStr(1, Text1.Text, ".") Then '... end if
Seuraava koodi tarkistaa onko syötetyssä arvossa pistettä ( yksikin piste riittää).
Joudun työkseni pähkäilemään noita ongelmia ja olen tullut siihen tulokseen, että on parasta käyttää DTpicker-activeX komponenttia, joka sisältyy kokoelmaan: "Microsoft Windows Common Controls - 2 (6.0)" (Project->Components ja rasti ruutuun "Microsoft Windows Common Controls - 2 (6.0)"-kohdalla ja OK)
Tällä voit pakottaa käyttäjän syöttämään aina päivämäärän, joka on oikeaa muotoa.
Kiitos. Taas.
Aihe on jo aika vanha, joten et voi enää vastata siihen.