Using a System.Int32 and null values


Author
Message
Lesscher
Lesscher
StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)
Group: StrataFrame Users
Posts: 9, Visits: 19
Hi all,

I have several fields in my table of type System.Int32 and they are allowed to be null. I want to put a NULL value (not a 0) in the database table when the user empties a textbox (bound to the BO).

I already read the posts about this solution using String.Empty but thats not working for me... Also, I tried to use nullable generics in the datamapper but then, when the user empties the textbox, the new (empty) value isn't saved to the BO (the old value remains)

This can't be that difficult, am I right?

Replies
Trent Taylor
Trent Taylor
StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 7K
You have not read through all of the posts or docs then Wink

You will want to use a Return / Set option depending on whether it is a reference or value type.  But this is how you will get what you are looking for.

Lesscher
Lesscher
StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)StrataFrame Beginner (13 reputation)
Group: StrataFrame Users
Posts: 9, Visits: 19
Trent L. Taylor (08/19/2008)
You have not read through all of the posts or docs then Wink

You will want to use a Return / Set option depending on whether it is a reference or value type.  But this is how you will get what you are looking for.

Hi Trent, I tried this with the value 0 and yes, a NULL value is saved in the database when the user enters a 0.

What I want is that the user enters nothing at all in the textbox (and also, I don't want to see a 0 when there is a NULL value in the database, just an empty textbox). With strings this is working fine, but I cannot get this to work with integers...

Or am I still missing something... Hehe

Trent Taylor
Trent Taylor
StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 7K
Well, if you are using a textbox for integer values, then you would take the same approach.  Generally I never allow an empty value to be entered through the UI for an integer value.  An integer field should always have a value within the control...if you are allowing an empty value for 0 in a textbox, then you may have to customize then step into the Set of the property to verify that the underlying value is 0.
Greg McGuffey
Greg McGuffey
Strategic Support Team Member (4.8K reputation)
Group: Forum Members
Posts: 2K, Visits: 6.6K
Lesscher,



Another approach would be to create a subclassed text box that alters the Text property and handles the Text property being empty when setting the underlying value. You'd leave the BO setup to return an alternate value for Null/Save Null on that alternate value (zero in this case). This makes any programmatic access to the data easier, as integers don't have NULL as a possibility.



I did this for the case of identities. If the ID is <0 (i.e. a new value), it displays "(new)", otherwise it displays the actual ID.



I overwrote the Text property. The setter just sets the Text property on the base class. The getter tests the value of the base class and simply displays something different if the number is negative.



I'd think you'd need to add some code to the setter, to set a "0" to the base class if the text is blank. And in the getter, you'd test for zero, displaying a blank in that case, otherwise whatever they have entered.



Hope that helps!



GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...





Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search