Re: how to parse an Enum Structure in vb.net
- From: Dennis <Dennis@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 5 Jul 2006 15:25:02 -0700
It seems a waste to use strings as opposed to integers in a database for
ENUMS. You can just as easily assign numbers to each enum value, i.e.,
Enum Month
January = 10
February = 20
March = 30
. . .
In the new enum;
Enum Month
January = 10
February =20
Filibuster = 25
March =30
. . .
--
Dennis in Houston
"Phill W." wrote:
giannik wrote:.
I have an Enum
Public Enum MyEnum
EnumVal1=0
EnumVal2=1
EnumVal2=2
end enum
I save in an access database this enum value as an integer (0=EnumVal1,
1=EnumVal2, 2=EnumVal)
Save the Enum /names/ not their numeric values.
OK, you only have three here, but what if you had a long list of these
and then, Lord forbid, you added another one "in the middle"? Much of
your existing data (in Access) would be wrong.
Use a String column in the database and use <value>.ToString() to get
the enum "name" to save.
When retreving this enum from the database how do I ensure that the correct
value is passed to my object
When reading the property back, parse the string value (from Access)
back into the Enum Type, as in
MyObject.MyEnum = CType( dr.Item( "EV" ), MyEnum )
By way of a rather silly example:
Class MyClass
Enum Month
January = 1
February
March
. . .
dr.Item( "Month" ) = Month.December.ToString() ' actually "December"
Now, just for the sake of argument, let's create a new month, called
Filibuster, between February and March.
Class MyClass
Enum Month
January = 1
February
Filibuster
March
. . .
Oh No! I hear you cry. You'll have to bulk update all the records in
Access to increment their month numbers!
Nope. Holding the Enum /names/ means you don't have to. Assuming you
already have a row in there for December:
? dr.Item( "Month" ).GetType().ToString()
[System.]String
? dr.Item( "Month" ).ToString()
"December"
? CType( dr.Item( "Month" ), Month ).GetType().ToString()
[MyClass.]Month
? CType( dr.Item( "Month" ), Month )
December
So far, so good, but here's the clincher ...
? CInt( dr.Item( "Month" ), Month )
13
.... even if it was 12 when you saved that record into Access!
HTH,
Phill W.
- Follow-Ups:
- Re: how to parse an Enum Structure in vb.net
- From: Göran Andersson
- Re: how to parse an Enum Structure in vb.net
- References:
- how to parse an Enum Structure in vb.net
- From: giannik
- Re: how to parse an Enum Structure in vb.net
- From: Phill W.
- how to parse an Enum Structure in vb.net
- Prev by Date: Re: timer control
- Next by Date: Re: timer control
- Previous by thread: Re: how to parse an Enum Structure in vb.net
- Next by thread: Re: how to parse an Enum Structure in vb.net
- Index(es):
Relevant Pages
|