dbnull di listview vb2010

Forum diskusi pemrograman VB.NET

dbnull di listview vb2010

Postby nengdolis » 23 Feb 2012, 15:56

oom oom minta pencerahannya,saya menampilkan data di lsit view dg code :
Code: Select all
Private Sub IsiListView()
        With ListView1
            .Items.Clear()
            .Columns.Clear()
            .Columns.Add("No", 70, HorizontalAlignment.Left)
            .Columns.Add("Account", 80, HorizontalAlignment.Left)
            .Columns.Add("AccDesc", 150, HorizontalAlignment.Left)
            .Columns.Add("Segment ", 70, HorizontalAlignment.Left)
            .Columns.Add("SegmentDesc ", 150, HorizontalAlignment.Left)
            .Columns.Add("CostCenter", 80, HorizontalAlignment.Left)
            .Columns.Add("CostCenDesc", 150, HorizontalAlignment.Left)
            .Columns.Add("GabCode", 80, HorizontalAlignment.Left)
            .Columns.Add("Grouping1 ", 100, HorizontalAlignment.Left)
            .Columns.Add("Grouping2", 100, HorizontalAlignment.Left)
            .Columns.Add("Grouping3", 100, HorizontalAlignment.Left)
            .Columns.Add("Grouping4", 100, HorizontalAlignment.Left)
        End With

        qSelect = " SELECT * " _
                    & " FROM t_key " _
                    & " ORDER BY Account "

        command = New SqlCommand(qSelect, Koneksi.Koneksi)
        reader = command.ExecuteReader
        no = 0
        Do While reader.Read
            no = no + 1
            Dim myItem As New ListViewItem(no & ".")
            myItem.SubItems.Add(reader.Item("Account"))
            myItem.SubItems.Add(reader.Item("AccDesc"))
            myItem.SubItems.Add(reader.Item("Segment"))
            myItem.SubItems.Add(reader.Item("SegmentDesc"))
            myItem.SubItems.Add(reader.Item("CostCenter"))
            myItem.SubItems.Add(reader.Item("CostCenDesc"))
            myItem.SubItems.Add(reader.Item("GabCode"))
            myItem.SubItems.Add(reader.Item("Groping1"))
            myItem.SubItems.Add(reader.Item("Groping2"))
            myItem.SubItems.Add(reader.Item("Groping3"))
            myItem.SubItems.Add(reader.Item("Groping4"))
            ListView1.Items.Add(myItem)
        Loop

    End Sub


tp ketika ada data yg kosong akan error seperti di bawah :
Code: Select all
System.Reflection.AmbiguousMatchException was unhandled by user code
  Message=Overload resolution failed because no Public 'Add' can be called with these arguments:
    'Public Function Add(text As String) As System.Windows.Forms.ListViewItem.ListViewSubItem':
        Argument matching parameter 'text' cannot convert from 'DBNull' to 'String'.
    'Public Function Add(item As System.Windows.Forms.ListViewItem.ListViewSubItem) As System.Windows.Forms.ListViewItem.ListViewSubItem':
        Argument matching parameter 'item' cannot convert from 'DBNull' to 'ListViewSubItem'.
  Source=Microsoft.VisualBasic
  StackTrace:
       at Microsoft.VisualBasic.CompilerServices.OverloadResolution.ResolveOverloadedCall(String MethodName, List`1 Candidates, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, BindingFlags LookupFlags, Boolean ReportErrors, ResolutionFailure& Failure)
       at Microsoft.VisualBasic.CompilerServices.OverloadResolution.ResolveOverloadedCall(String MethodName, MemberInfo[] Members, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, BindingFlags LookupFlags, Boolean ReportErrors, ResolutionFailure& Failure)
       at Microsoft.VisualBasic.CompilerServices.NewLateBinding.ResolveCall(Container BaseReference, String MethodName, MemberInfo[] Members, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, BindingFlags LookupFlags, Boolean ReportErrors, ResolutionFailure& Failure)
       at Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
       at Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
       at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
       at Acc_Grouping.FormMasterGrouping.IsiListView() in F:\2945\Vb All\vs2010\Account Grouping\Acc Grouping\FormMasterGrouping.vb:line 65
       at Acc_Grouping.FormMasterGrouping.FormMasterGrouping_Load(Object sender, EventArgs e) in F:\2945\Vb All\vs2010\Account Grouping\Acc Grouping\FormMasterGrouping.vb:line 263
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.OnCreateControl()
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
  InnerException:



terima kasih oom oom sebelum nya!!
nengdolis
Prajurit Dua
Prajurit Dua
 
Posts: 19
Joined: 12 Oct 2011, 14:36
Memberi kopi: 0 cangkir
Mendapat kopi: 0 cangkir

Re: dbnull di listview vb2010

Postby vberror13 » 24 Feb 2012, 07:14

Ada dua cara untuk menghindarkan error seperti itu:
a. Membuat perintah query sedemikian rupa sehingga tidak ada null value yang dikembalikan
contoh:
Code: Select all
SELECT Account,  ISNULL(AccDesc, '') AS AccDesc, ISNULL(GabCode,'--MISSING--') as GabCode
FROM Account

Jadi nggak bakal ada null value dari hasil querynya. Catatan: kode di atas untuk ms sql server; untuk database lainnya mungkin fungsi pengecekan nilai null berbeda.

b. Melakukan pengecekan data sebelum ditampilkan:
Code: Select all
...
            myItem.SubItems.Add(If reader.Item("Account") = dbnull.value then "" else reader.item("Account").toString() )
...
:ymbilly: :ymbilly: :ymbilly: =:) :ymbilly:
Just Because You Are Unique, Doesn't Mean You Are Useful
User avatar
vberror13
Global Moderator
Global Moderator
 
Posts: 1848
Joined: 13 Mar 2010, 20:34
Location: Medan Indonesia
Memberi kopi: 296 cangkir
Mendapat kopi: 321 cangkir

Re: dbnull di listview vb2010

Postby nengdolis » 24 Feb 2012, 14:41

Hatun Nuhun Pisan ath oom,ilmu baru buat saya,saya pilih yg view di sql server nya saja.
thanks sekali lagi
nengdolis
Prajurit Dua
Prajurit Dua
 
Posts: 19
Joined: 12 Oct 2011, 14:36
Memberi kopi: 0 cangkir
Mendapat kopi: 0 cangkir

Re: dbnull di listview vb2010

Postby sanosuke » 26 Feb 2012, 04:43

aku tambahkan aja ya
bisa juga pake fungsi iif klo tlu panjang pake if _ then _ else _ end if
Code: Select all
mItem.SubItem.Add(iif(IsDBNull(reader.Item("Account")),"",reader.Item("Account")))
ImageImage
User avatar
sanosuke
Kopral Dua
Kopral Dua
 
Posts: 603
Joined: 11 Mar 2010, 16:28
Location: Sidoarjo - Surabaya
Memberi kopi: 25 cangkir
Mendapat kopi: 42 cangkir


Return to Visual Basic .NET

Who is online

Users browsing this forum: Google [Bot] and 4 guests