[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Null value into an integer variable
[Thread Prev] | [Thread Next]
- Subject: Re: Null value into an integer variable
- From: First Last <d4t4full@xxxxxxxxx>
- Date: Fri, 19 Apr 2024 10:32:01 -0300
- To: user@xxxxxxxxxxxxxxxxxxxxxx
For what it's worth, I concur with Jussi. Here's a working example with a Gambas implementation (sorry for not adhering to using the standard private variable prefixes, force of habit) of other languages' "Nullable" as NullableInteger.class: ' Gambas class file Private _hasValue As Boolean = False Private _value As Integer Property Read HasValue As Boolean Property Value As Integer Private Function HasValue_Read() As Boolean Return _hasValue End Private Function Value_Read() As Integer If (_hasValue) Then Return _value Else Error.Raise("Nullable integer has no value set yet.") Endif End Private Sub Value_Write(newValue As Integer) _hasValue = True _value = newvalue End And an example implementation of the class above; feel free to play with commenting/uncommenting the lines setting values to vars nullInt1 and nullInt2: Public Sub Form_Open() Dim mssg As String = Null Dim nullInt1 As New NullableInteger Dim nullInt2 As New NullableInteger 'nullInt1.Value = 10 nullInt2.Value = 20 If (nullInt1.HasValue) Then mssg &= "NullInt 1 is assigned: " & CStr(nullInt1.Value) & ",\n" Else mssg &= "NullInt 1 is assigned no value yet; you can safely assume it's NULL,\n" Endif If (nullInt2.HasValue) Then mssg &= "NullInt 2 is assigned: " & CStr(nullInt2.Value) Else mssg &= "NullInt 2 is assigned no value yet; you can safely assume it's NULL." Endif Message.Info(mssg, "OK") Me.Close() End If you try to read the .Value property before assigning it a value, an error will be thrown on purpose as a property of type Integer (base-type) cannot return Null. Working with the .HasValue property you can control the program flow and assign NULL to a database field if the Nullable Integer has no value, instead of having "null flagging values" such as -1 for an age field, for example. These "flag values" almost always backfire. Regards, zxMarce. On Fri, Apr 19, 2024 at 10:22 AM Gianluigi <gradobag@xxxxxxxxxxx> wrote: > Il 19/04/24 14:41, BB ha scritto: > > Consider this. > > > > Public Sub Main() > > > > Dim vIntero As Variant > > > > Dim intval as Integer > > > > > > vIntero = 450000 > > intval = IntValue(vIntero) > > vIntero = 2200000000 > > intval= IntValue(vIntero) > > vIntero = -2200000000 > > intval = IntValue(vIntero) > > vIntero = "PIPPO" > > intval = IntValue(vIntero) > > > > End > > > > See the difference? > > > > b > > > > > > What you wrote doesn't make much sense. > We are talking generically here. > Benoit has already explained that the Integer variable is not nullable, > we need to find a 'workaround'. > Jussi also seems to agree... > > Regards > Gianluigi > > >
GRIDVIEW color and size | "Mayost Sharon" <sharon@xxxxxxxxx> |
Re: GRIDVIEW color and size | T Lee Davidson <t.lee.davidson@xxxxxxxxx> |
Re: GRIDVIEW color and size | T Lee Davidson <t.lee.davidson@xxxxxxxxx> |
Re: GRIDVIEW color and size | "Mayost Sharon" <sharon@xxxxxxxxx> |
Re: GRIDVIEW color and size | T Lee Davidson <t.lee.davidson@xxxxxxxxx> |
Null value into an integer variable | "Mayost Sharon" <sharon@xxxxxxxxx> |
Re: Null value into an integer variable | Gianluigi <gradobag@xxxxxxxxxxx> |
Re: Null value into an integer variable | BB <adamnt42@xxxxxxxxx> |
Re: Null value into an integer variable | Benoît Minisini <benoit.minisini@xxxxxxxxxxxxxxxx> |
Re: Null value into an integer variable | BB <adamnt42@xxxxxxxxx> |
Re: Null value into an integer variable | Gianluigi <gradobag@xxxxxxxxxxx> |
Re: Null value into an integer variable | BB <adamnt42@xxxxxxxxx> |
Re: Null value into an integer variable | Gianluigi <gradobag@xxxxxxxxxxx> |