Hej alla glada! Jag har haft behov av samma sak, att gör en "splittrad markering" men det går inte. Verkar det som. Lösningen fick bli att man gör en Ja/Nej-ruta som man får klicka i. Det fungerar ju ganska bra sedan att gör ett urval med på förbockade rader. Alternativt lagra undan ID på posterna efterhand som de blir "klickade på". Hej och tack för ditt svar! Måste ditt underformulär? En enkel lösning skulle kunna vara att ha en vanlig listruta med radkälla bunden till samma tabell/fråga som ditt underformulär, listrutan kan du sedan ställa in om det ska vara möjligt att göra en eller flera markeringar. Den kolumn du väljer att använda som bunden är det värde som du kan få genom listnamn.ItemData Hej och tack för ditt svar! Kan du inte använda typ lstSelect.RowSource = select fält1,fält2,fältN from tabell som radkälla istället för en specificerad lista? Hej Hej Robert! Här är ett ungefärligt sätt att sätta kolumnbredden, den är inte exakt på något sätt eftersom man då måste kolla varje bokstav, jag nöjde mig med att kolla längden på innehållet. Hej igen och Tack så mycket för all hjälp!!Markera fler poster i ett subformulär
Jag har följande problem:
Jag har ett huvudformulär med ett subformulär av typen datasheet på.
Det jag vill göra är att markera fler poster i subformuläret trycka på en knapp och få reda på id på de posterna jag markerat .
Jag får fram den post jag står på med följande kod:
Me.subformDelivery.Form.Recordset("Id").Value
Men det är ju bara den posten där "record-selectorn" står. Hur gör jag för att få veta alla de markerade posternas id?
En annan sak, hur gör man för att markera fler poster som inte ligger under varandra. Dvs använda
ctrl och klicka med musen samtidigt. Det går fint att markera poster som ligger under varandra men om man vill ha en post längst upp, en i mitten och en längst ner funkar inte detta. Har kollat lite på inställningar på subformuläret men hittar inget om detta.
Använder Access2000.
MariaSv: Markera fler poster i ett subformulär
Sv:Markera fler poster i ett subformulär
Vad krångligt detta var! Det går ju som du säger göra en kryssruta, men jag vill helst inte göra det. Det funkar ju också att lagra undan id på posterna eftersom de blir klickade på men det blir inte heller en optimal lösning för mig....
Det måste ju finnas ett sätt att fånga upp om man klickar på själva "record-selectorn" - är det någon som vet hur?
Det jag ska göra är att skriva ut posterna på en skrivare och det känns lite jobbigt att trycka på skriv ut 30 gånger om man ska skriva ut 30 poster...
Någon som har ett förslag om hur jag ska lösa detta?
/MariaSv: Markera fler poster i ett subformulär
ex:
<code>
For Each obj In lstSelect.ItemsSelected
Debug.Print lstSelect.ItemData(obj)
Next
</code>
Du byter ut debug.print mot det du vill göra med informationen, t ex bygga ihop ditt filter eller where sats som du kanske vill skicka med för att öppna en rapport med endast utvalda poster i listan.Sv:Markera fler poster i ett subformulär
Jag minns att jag skulle använda en listruta förut men fick det inte att funka för att det är ganska många poster som ska visas. Använde mig då av lstSelect.RowSource = "post1; post2; post3; osv" och fick då felmeddelandet: The setting for this property is too long. Antar att listboxen har en begränsning men jag vet inte hur mycket data man kan ladda i den.
Annars är det ju enkelt att via ItemsSelected välja och vraka mellan posterna :-)
Just nu lutar det åt att jag får trycka skriv ut för varje post.....suck..
/MariaSv: Markera fler poster i ett subformulär
Sv: Markera fler poster i ett subformulär
Du kanske kan få ett tips utifrån denna gamla tråd:
http://www.pellesoft.se/communicate/forum/view.aspx?msgid=201043
/ PerSv:Markera fler poster i ett subformulär
Det funkade ju jättebra att göra så istället! Vet inte vad jag tänkte på när jag gjorde en specificerad lista...hjärnsläpp kanske...
Tack så mycket!
Nu får jag försöka få till designen på listan dvs olika längder på olika kolumner.
Antar att jag får försöka med column width på något sätt... har du någon koll på detta också?
MariaSv: Markera fler poster i ett subformulär
<code>
Dim sel() As String
ReDim sel(lstSelect.ItemsSelected.Count - 1)
Dim col() As Integer
ReDim col(lstSelect.ColumnCount - 1)
' Loopa igenom alla valda poster och lägg in i sel()
For i = 0 To lstSelect.ItemsSelected.Count - 1
sel(i) = lstSelect.ItemsSelected(i)
Next
' Loopa igenom urvalet och alla kolumner/vald rad
For Each obj In sel
For i = 1 To lstSelect.ColumnCount
lstSelect.BoundColumn = i
' Spara endast högsta värdet
If col(i - 1) < Len(lstSelect.ItemData(obj)) Then
col(i - 1) = Len(lstSelect.ItemData(obj))
End If
Next i
Next
' Töm kolumnbredder
lstSelect.ColumnWidths = ""
' Bygg sträng för kolumnbredder
For i = 0 To UBound(col)
widths = widths & col(i) * 6 & "px;"
Next
' Ställ in kolumnbredder
lstSelect.ColumnWidths = widths
</code>
Jag har alltså använt 6 pixlars bredd för varje bokstav men det beror helt på vilket typsnitt och storlek man har i listrutan.
[EDIT]
Ok, man kanske inte bara vill loopa igenom valda poster, här kommer en variant som loopar igenom alla rader i listan:
<code>
Dim col() As Integer
ReDim col(lstSelect.ColumnCount - 1)
For obj = 1 To lstSelect.ListCount - 1
For i = 1 To lstSelect.ColumnCount
lstSelect.BoundColumn = i
' Spara endast högsta värdet
If col(i - 1) < Len(lstSelect.ItemData(obj)) Then
col(i - 1) = Len(lstSelect.ItemData(obj))
End If
Next i
Next
' Töm kolumnbredder
lstSelect.ColumnWidths = ""
' Bygg sträng för kolumnbredder
For i = 0 To UBound(col)
widths = widths & col(i) * 6 & "px;"
Next
' Ställ in kolumnbredder
lstSelect.ColumnWidths = widths
</code>Sv:Markera fler poster i ett subformulär
Med hjälp av din kod löste jag problemet, gjorde enligt följande för att fixa till kolumnbredderna.
Inte lika dynamiskt som du gjort, men detta funkar perfekt för mig eftersom datat i fälten är lika långa.
widths = 80 & "px;" 'längd på fält 1
widths = widths & 80 & "px;" 'längd på fält 2...osv
widths = widths & 80 & "px;"
widths = widths & 200 & "px;"
widths = widths & 200 & "px;"
widths = widths & 80 & "px;"
widths = widths & 80 & "px;"
widths = widths & 50 & "px;"
Me.lstSelect.ColumnWidths = widths
Tack än en gång! :-)
Maria