Ekim 13, 2010

IIF & IsDBNull kullanımı

Dataset,Datatable içerisindeki verileri kullanırken çoğumuzun karşılaştığı durumdur kullandığımız verinin DBNull olması.Böyle durumlarda kodumuz hata verir.Örneğimize bakacak olursak;


        Dim dt As New DataTable
        Dim dr As DataRow
        dt.Columns.Add("AA")
        dr = dt.NewRow
        dr.Item("AA") = Nothing
        dt.Rows.Add(dr)
        Dim Aciklama As String
        Aciklama =dt.Rows.Item(0)("AA")

        Label1.Text = Aciklama

Burada datarow içindeki "AA" alanının verisi "Aciklama" değişkenine atanmak isteniyor.Eğer dr.Item("AA") DBNull değilse bu değer başarı ile "Aciklama" değişkenine aktarılacaktır.Ancak dr.Item("AA") değeri DBNull ise o zaman kodumuz şöyle bir  hata verecektir.


Server Error in '/' Application.

Conversion from type 'DBNull' to type 'String' is not valid.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Conversion from type 'DBNull' to type 'String' is not valid.

Bu hatanın nedeni string değişkene atanmak istenen dr.item("AA")  değerine atanmış herhangi bir veri olmadığı için  DBNull olması  ve DBNull tipindeki verinin String olarak değişkene atanamamasıdır.Bu hatayı almamak için  IIF ve IsDBNull fonksiyonlarını kullanabiliriz.

Aciklama = IIf(IsDBNull(dt.Rows.Item(0)("AA")), "DBNull olduğunda kullanılacak değer", dt.Rows.Item(0)("AA"))

Fonksiyonlarının kullanımını açacak olursak;

       IIF    ( 
                 <--True yada False değer-->,
                 <--true olması durumunda kullanılacak değer-->, 
                 <--false olması durumunda kullanılacak değer-->
                 )

        IsDBNull (
                         <--DBNull olup olmadığı kontrol edilecek değer -->
                          ) =>>eğer değer DBNull ise True, değer var ise False sonucunu döndürecektir. 


 

Hiç yorum yok:

Yorum Gönder

System.Text.Json.JsonException hatası - cycle or if the object depth is larger than the maximum allowed depth of 32.

 Eğer .net'te aşağıdaki hatayı alıyorsanız; " A possible object cycle was detected which is not supported. This can either be due t...