Då jag dubbelklickar i en listview(lstBiljett) visas den rad jag klickade på i en annan listview(lstBiljett2) som koden visar nedan. Problemet är att i lstBiljett2 visas alltid samma rad fastän jag klickar på andra biljetter med rad 19. Samma fel uppstår givetvis om jag klickar på ett annat radnr. Den känner av primärnyckeln (Id) från databasen för den plats som visas. Platsen som visas motsvarar idnummret i databasen (plats 557). Hur ska jag lösa detta. Jag vill inte ha en kolumnn i lstBiljett som heter Id och visar id nummret till repektive rad och platsnr. Känns bara onödigt med ett nummer som inte är till nytta i listview. Jag vill bara ha radnr, platsnr och datum (det har jag nu). Hur ska jag få listview att känna av vilken biljett jag klickar på så att rätt biljett visas i den andra listview utan att behöva visa id nummret i första kolumnen i listview? Du kan använda dig av egenskapen Tag för att lagra extra data som ditt program behöver. >utan att behöva visa id nummret i första kolumnen i listview? Använd Key egenskapen. Vilket ger dig möjlighet att adressera en listitem efter dess id. Det är lämplig att ge det ett prefix eftrersom en key injte får var ett numerist värde.Problem att visa i listview
Set rs = New ADODB.Recordset
sql = "SELECT * FROM Biljett WHERE Id = " & lstBiljett.SelectedItem & ""
Call db(cn)
rs.Open sql, cn, adOpenForwardOnly, adLockReadOnly
Set itmX = lstBiljett2.ListItems.Add()
itmX.Text = rs![radnr]
itmX.SubItems(1) = rs![Platsnr]
itmX.SubItems(2) = rs![datum]Sv: Problem att visa i listview
<code>
sql = "SELECT * FROM Biljett WHERE Id = " & lstBiljett.ListItems.Item(lstBiljett.SelectedItem).Tag & ""
</code>
Vilket även innebär att när du läser in listen måste lägga in ett värde på Tag-egenskapen:
<code>
itmX.Tag = rs![Id] 'För att använda samma namngivningsstil som du...
</code>
/TobiasSv: Problem att visa i listview
Förutsätter att du jobbar i Report mode
Får se nu om jag fattat rätt på denna detalj.
Sätt den ColumnHeader property width till 0 så syns den inte , men finns ändå.Sv: Problem att visa i listview
<code>
Dim Item As ListItem
Const PrefixCustomer = "C"
Do Until rs.EOF
Set Item = ListView1.ListItems.Add(,PrefixCustomer & rs("ID"), "" & rs("FirstName"))
Item.SubItems(1) = "" & rs("LastName")
rs.MoveNext
Loop
</code>
Hämtar sedan ut talet:
<code>
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Item As ListItem
Dim Id As Long
Dim Prefix As String
Const PrefixOrder = "O"
Const PrefixCustomer = "C"
Set Item = ListView1.HitTest(X, Y)
If Item Is Nothing Then
Else
Id = Mid(Item.Key, 2)
Prefix = Left(Item.Key, 1)
Select Case Prefix
Case PrefixCustomer
Me.PopUpMenu mnuPopUpCustomer
Case PrefixOrder
Me.PopUpMenu mnuPopUpOrder
End Select
End If
End Sub
</code>