Ik heb een klein probleempje met het converteren van het datatype 'String' dat ik inlees vanuit een tekstveld, naar het datatype 'Date'.
Het werkt in principe prima met de volgende code:
Maar,
Deze code is afhankelijk van je inputLocale op je machine. Dat moet dus niet.
Ik heb zelf al even zitten spitten in de MSDN library van VStudio, en heb een stukje gevonden waar volgens mij de oplossing in kan zitten. Ik krijg het echter niet aan de praat. Het stukje:
Alleen, als ik nu de volgende code gebruik:
...krijg ik een Type Mismatch Error.
Pas ik de code aan zodat hij de datum niet uit het tekstveld leest:
...dan werkt het prima!
Wat doe ik fout / zie ik over het hoofd?
Het werkt in principe prima met de volgende code:
code:
1
2
3
4
| Dim myDate As Date Dim myDateString As String myDateString = Me.datumVeld.Text myDate = CDate(myDateString) |
Maar,
Deze code is afhankelijk van je inputLocale op je machine. Dat moet dus niet.
Ik heb zelf al even zitten spitten in de MSDN library van VStudio, en heb een stukje gevonden waar volgens mij de oplossing in kan zitten. Ik krijg het echter niet aan de praat. Het stukje:
Ik zou dus met het toevoegen van #-tekentjes klaar moeten zijn.In Visual Basic, never type dates as strings in your code. Entering dates in code in the format #month/day/year# ensures that the date will be interpreted correctly in any system locale. Because Visual Basic allows only English/U.S. as a programming locale, the date will be the same to a user wherever your application is run.
For example, if a user enters 8/2/97 in an input dialog box,
CDate ("8/2/97")
returns the following results, based on the system locale:
Operating system Output:
French/France 08/02/97 (= February 8, 1997)
English/U.S. 8/2/97 (= August 2, 1997)
Conversely, if you enter 8/2/97 in code,
CDate (#8/2/97#)
returns the results in the following table, based on the code locale:
Operating system Output
French/France 02/08/97 (= August 2, 1997)
English/U.S. 8/2/97 (= August 2, 1997)
[..]
Alleen, als ik nu de volgende code gebruik:
code:
1
2
3
4
| Dim myDate As Date Dim myDateString As String myDateString = "#" & Me.datumVeld.Text & "#" myDate = CDate(myDateString) |
...krijg ik een Type Mismatch Error.
Pas ik de code aan zodat hij de datum niet uit het tekstveld leest:
code:
1
2
3
4
| Dim myDate As Date Dim myDateString As String myDateString = "#3/14/2003#" myDate = CDate(myDateString) |
...dan werkt het prima!
Wat doe ik fout / zie ik over het hoofd?
Amateurcoureur en fervent banktukker