Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

VB6 ListView1.FindItem by key gets error '13'

StuckWithVB6StuckWithVB6 Little Rock, ARPosts: 2Member

' I've been pulling my hair out over this one, any help is greatly appreciated.

' I'm loading a VB6 ListView with up to 70K of items and populating the Key ' property of each item with the Add method. View=lvwReport.

' My interpretation of the docs is that I can provide either an index or a key ' in the "index" parameter of FindItem. If the data type of the "index" parameter ' is String, then FindItem will use the value as a Key. If integer, then Index. ' If no key or index is supplied, FindItem will start at the beginning of the ' list each time, which would be much slower than using a key.

' As long as I specify an integer for "index", FindItem work fine. When I specify ' a string key value, it gets run-time error 13 type mismatch. It's as though ' FindItem doesn't recognize that I'm supplying a string key, not an integer index.

Dim LI As ListItem Dim W$

' object.Add(index, key, text, icon, smallIcon) Set LI = ListView1.ListItems.Add(, "K111", "111") Set LI = ListView1.ListItems.Add(, "K222", "222") Set LI = ListView1.ListItems.Add(, "K333", "333") W$ = ListView1.ListItems(2).Key ' Just checkin', Returns "K222"

' FindItem Method (ListView Control)

' Syntax: object.FindItem (string, value, index, match) ' object Required. An object expression that evaluates to a ListView control. ' string Required. A string expression indicating the ListItem object to be found. ' value Optional. An integer or constant specifying whether the string will be matched to ' the ListItem object's Text, Subitems, or Tag property, as described in Settings. ' index Optional. An integer or string that uniquely identifies a member of an object ' collection and specifies the location from which to begin the search. The integer ' is the value of the Index property; the string is the value of the Key property. ' If no index is specified, the default is 1. ' match Optional. An integer or constant specifying that a match will occur if the item's ' Text property is the same as the string, as described in Settings.

Set LI = ListView1.FindItem("222", lvwText, 1)      ' "index" is an integer (Start search at item #1). <==Works, returns "222"
Set LI = ListView1.FindItem("222", lvwText, 2)      ' "index" is an integer (start search at item #2). <==Works, returns "222"
Set LI = ListView1.FindItem("222", lvwText, 3)      ' "index" is an integer (start search at item #3). <==Fails, returns nothing

' Start search at item whose key property = "K222" Gets a Run-time error '13', type mismatch Set LI = ListView1.FindItem("222", lvwText, "K222") ' "index" is a string Key. Start search at item whose key property = "K222"

Comments

Sign In or Register to comment.