Here's another one I can't figure out.I have a ListView on my form. I want to be able to select a row in the ListView, and upon doing so, I want the rest of my form to goto that record id.
For example, my Listview consists of Name, City, State. I have other fields on my form, also Name, City, State, Phone Number, Email, etc, but I want jump to that record (all my fields on the form) when that row is selected. I'm sure I have toi capture the row ID somehow and add 1 or subtract 1 to match my ID in the underlying Address table (my Address form). I'm not sure how to get started though. Been google'ing for a while. Not much on this yet. RE: Selecting a Row in a ListView.
Hello again Zameer. Let me be more specific. Here is what I have so far:Private Sub ListView0ClickDim i As IntegerDim Text1With ListView0For i = 1 To.ListItems.CountIf.ListItems(i).Selected ThenDoCmd.GoToRecord, acGoTo, (i)Text1 = ListView0.ListItems(i)'MsgBox (Text1) This returns 'Smith, Adam'End IfNext iEnd WithEnd SubThis works fine, but does not givem me what I need. This works fine as long as my ListView columns are not sorted(by clicking the column heading). If a column is sorted, when you click on an ListItem it takes the ListView number(i) and goes to that record. If I click on row 3 after a sort on column1, the rest of my form goes to record 3, but record 3 is no longer my 3rd row in the ListView. Does this make sense?
Here is my sort code:Private Sub ListView0ColumnClick(ByVal ColumnHeader As Object)' When a ColumnHeader object is clicked,' the ListView control is sorted by the subitems of that column.' Set the SortKey to the Index of the ColumnHeader - 1Me.ListView0.SortKey = ColumnHeader.Index - 1' Set Sorted to True to sort the list.If ListView0.SortOrder = lvwAscending ThenListView0.SortOrder = lvwDescendingElseListView0.SortOrder = lvwAscendingEnd IfMe.ListView0.Sorted = TrueEnd Sub RE: Selecting a Row in a ListView (TechnicalUser) 27 Apr 05 01:26. Private Sub ListView0ClickDim i As IntegerDim Text1With ListView0For i = 1 To.ListItems.CountIf.ListItems(i).Selected ThenMe.Text1.Value = ListView0.ListItems(i)Me.Text2.Value = ListView0.ListItems(i).ListSubItems(1)Me.Text3.Value = ListView0.ListItems(i).ListSubItems(2)End IfNext iEnd WithEnd SubThe column sort is only Alpha sort as it is provided by Microsoft. When you click on header it sorts like text sorting even it is number or date. Result will be like below.330In VB6 I have seen some workarounds that work well their only. I have no succes on Access with them. Only workaround in Access I could suggest is to load listview with different SQL ORDER BY the column clicked.
(Though this is a slow method, if you have too many records)Here is a full page of code that I have tested and working wellDECLARE SECTION. Zameer - Thanks for writing again.
I'm still working on implementing your suggestions here. Only problem I have on the ListView Fill is in the subitems.Do Until rs.EOF' Add items and subitems to list control.Set lstItem = Me.ListView0.ListItems.Add(1)lstItem.Text = 0 & rs!IDlstItem.SubItems(1) = rs!FamilyName' lstItem.SubItems(2) = rs!GrouplstItem.SubItems(3) = rs!CitylstItem.SubItems(4) = rs!Staters.MoveNextLooprs.CloseThe line that is commented out. I will occassionally have a Null in the Group or City or State. Right now, I am getting Invalid use of Null (Error 94) when I try and fill a null. How do I get around this?
Should I fill a ' (space) in the table?RE: Selecting a Row in a ListView. Zameer -Private Sub ListView1ClickDim i As IntegerWith ListView1For i = 1 To.ListItems.CountIf.ListItems(i).Selected ThenMe.FullName.Value = ListView1.ListItems(i)End IfNext iEnd WithEnd SubI have to find another way to do this, unless I do not understand. This code works, but instead of setting the values of the ListView to the text field(which works), I am wanting to go the record itself. I will not be able to just set all subitems in the listview to text fields, as I have several other fields on my form (such as phone number, email address, ect) which I want to allow the user to edit on the form. I need to be able go to the selected record somehow by clicking the listview item.By the way, I have implemented your code to fill the ListView and Sort by Column heading and I like this a lot better than what I had.
This is all still new to me, so thanks for the assistance. Just tried something else, but didn't work either.With ListView0For i = 1 To.ListItems.CountIf.ListItems(i).Selected ThenText1 = ListView0.ListItems(i).ListSubItems(4)DoCmd.GoToRecord, acGoTo, Text1'Text1 = ListView0.ListItems(i)'MsgBox (Text1) 'This returns the record ID number (autonumber)End IfNext iEnd WithI added SubItem(4) which is the Record ID(which is an autonumber). I'm getting the ID successfully, but I just realized that the ID does not necessarily mean that is the record number.
When records are deleted from the table, autonumber does not account for this, and keeps counting. I could have a record with an ID of 17, but only 12 records in my rs. Hence, the above will error when I try and go to record 17. Is there a way I can automatically tell Access to reorder my IDs if records get deleted and leave gaps in my IDs?
For example, I have IDs 1,2,3,4,5,6,7,11,12,15,20,21. This is only 12 records. RE: Selecting a Row in a ListView (MIS) 27 Apr 05 22:29. Private Sub ListView1ClickDim rstA As DAO.RecordsetDim strSQLA As StringDim db As DatabaseDim lstItem As listItemSet db = CurrentDbstrSQLA = 'SELECT. FROM tblTown where TownID=' & Me.ListView1.SelectedItem.TextSet rstA = db.OpenRecordset(strSQLA)With rstAMe.Text1.Value =!TownIDMe.Text2.Value =!TownMe.Text3.Value =!YesNO'ADD MORE FIELDS HEREEnd WithEnd SubZameer AbdullaThere is only one perfect child in this world. Every mother has it.
RE: Selecting a Row in a ListView (Programmer).
Hi All.This code found somewhere in internet.when run and putting value in cell subitem,it working but when we click the other subitem that cell in subitem return to old value.cannot change to new value.thank. Private Sub TextBox13TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Dim dtRow, dtCol As IntegerListView1.Items(dtRow).SubItems(dtCol).Text = TextBox13.TextEnd SubPrivate Sub ListView1Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClickDim iRow, iCol As IntegerDim hit As ListViewHitTestInfo = ListView1.HitTest(e.X, e.Y)Dim iWidth As IntegerFor iCol = 0 To hit.Item.SubItems.Count - 1If hit.Item.SubItems(iCol).Bounds.Left 1 ThenIf e.X.