2010-09-02 41 views
13

Bir sql server db tablosunu bir veri kümesinden güncelleyen bir güncelleme işlevim var. Tablodaki alanlardan biri bir tamsayıdır ve boş değerleri kabul eder. Bu yüzden güncelleme fonksiyonunu doldururken, fonksiyonun bir tamsayı istediğinde bir null girmenin bir yoluna ihtiyacım var. Tam Sayı Null Yap

ben bu şekilde yapmaya çalıştım ama _intDLocation = ""

Dim _dLocation As String = udDefaultLocationTextEdit.Text 
    Dim _intDLocation As Integer 
    If _dLocation <> "" Then 
     _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text) 
    Else 
     'NEED HELP HERE 
     _intDLocation = "" 
    End If 

cevap

29

Tamsayılar null olarak ayarlanamaz bir istisna atar. Tamsayı kelimesinden sonra bir soru işareti ekleyerek tamsayıyı "null" yapmalısınız. Şimdi _intDLocation artık normal bir tam sayı değil. Bu, Nullable(Of Integer)'un bir örneğidir. Daha sonra

Dim _dLocation As String = udDefaultLocationTextEdit.Text 
Dim _intDLocation As Integer? 
If _dLocation <> "" Then 
    _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text) 
Else 
    _intDLocation = Nothing 
End If 

, size bu kullanışlı, okunabilir sözdizimini kullanabilirsiniz boş olup olmadığını kontrol etmek istiyorsanız: Bazı durumlarda

If _intDLocation.HasValue Then 
    DoSomething() 
End If 

Eğer gerçek bir tamsayı olarak bir değeri yok erişmek gerekir nullable tam sayı. Bu gibi durumlar için, sadece tüm Nullable here hakkında okuyun

_intDLocation.Value 

erişin.

Dim _dLocation As String = udDefaultLocationTextEdit.Text 

Dim _intDLocation As Nullable(Of Integer) 

If Not String.IsNullOrEmpty(_dLocation) Then 
    _intDLocation = Integer.Parse(_dLocation) 
End If 
+2

+1 Tamamen "Tamsayı" işlevini kullanabilirsiniz. Güzel ve özlü. –

+2

Bu mükemmel bir yanıta eklemek için: _intDLocation gerçekte Nullable (Of Integer) örneğidir. Nullable belgelerine buradan ulaşabilirsiniz: http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx –

+1

Teşekkürler, Etienne. Bunu ekleyeceğim. – Larsenal

4

bu deneyin

Dim Match_Innings As Integer = Nullinator(Me.TotalInnings.Text) 
:
Public Shared Function Nullinator(ByVal CheckVal As String) As Integer 
    ' Receives a string and returns an integer (zero if Null or Empty or original value) 
    If String.IsNullOrEmpty(CheckVal) Then 
     Return 0 
    Else 
     Return CheckVal 
    End If 
End Function 

Bu kullanılacak nasıl tipik bir örnektir

0

başvurum boş (Metin özelliğini) başlamak pek çok etiket kullanır, ancak tamsayılar olarak artırılır gerekir, bu yüzden bu kullanışlı fonksiyon yapılan: