JAg vet inte om detta hjälper. Men för att hindra att andra poster syns när du lägger till en post kan du ange DataEntry = True. Då syns inte befintliga poster. Utan bara nya du skapar. Hej Andreas och tack för ditt svar. Är det månne händelsen Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long) som du är ute efter? Jo tack! Kan du inte ha händelsen i MouseWheel-händelsen direkt? Hej Robert och tack för ditt svar. Hur förhindra bläddring till annat rekord?
Anropar ett formulär för att visa rekord och för att mata in nytt rekord.
Mitt problem är att när jag anropar formuläret för att mat in ett nytt rekord, så fungerar musens tumhjul så att man via tumhjulet ”hamnar” in i andra rekords. Tumhjulet bläddrar alltså i det läget bland rekorden vilket är förvirrande.
Anropar jag däremot formuläret för visning av ett rekord, så fungerar tumhjulet ok dvs tumhjulet bläddrar nedåt på formulärsidan (formuläret är större än en skärmsida).
Anropet av formuläret ser ut som följer:
Anrop från anropande formulär i det fall att nytt rekord skall skapas:
Private Sub lstObehandlade_DblClick(Cancel As Integer)
txtLontagareNyckel = Me.lstLontagare
txtLontagareAnstallningsnr = Me.lstObehandlade.Column(4)
txtNamn = Me.lstObehandlade.Column(1) + " " + Me.lstObehandlade.Column(2) + " " + Me.lstObehandlade.Column(3)
Application.Echo False
DoCmd.OpenForm "Månadsuppgifter", , , , , , "lstLontagare"
Application.Echo True
End Sub
Och i det anropade formulärets loadrutin:
If Me.OpenArgs = "lstLontagare" Then
Set ManadsLista = Forms![Lista_Månad]
tmpLontagare = ManadsLista.txtLontagareAnstallningsnr
tmpNamn = ManadsLista.txtNamn
Call BildaNyManadsUppgift
End If
……
Public Sub BildaNyManadsUppgift()
With Me
.NavigationButtons = False
.RecordSelectors = False
End With
DoCmd.RunCommand acCmdRecordsGoToNew
tmpAnstallningsnr = tmpLontagare
lblNamnNy.Caption = tmpNamn
End Sub
Hur får jag alltså tumhjulet att inte bläddra till nästa rekord utan att istället bläddra nedåt på sidan?
Tacksam för svar!
Mvh/HarrySv: Hur förhindra bläddring till annat rekord?
Alternativt kan du se om det hjälper att sätta egenskapen Cycle till 1, Current Record.
Det är detta jag kan komma på utan efterforskning.Sv:Hur förhindra bläddring till annat rekord?
DataEntry = True fungerar som du säger, men det gör att användaren via tumhjulet "halkar" in i ytterligare nya poster.
Vad gäller Cycle till 1, Current Record så har jag inte hittat egenskapen att sätta Current Record Cycle till 1.
Däremot kanske det kan gå att via Current Record låsa det visade rekordet till Current record nummer.
(Skall försöka.)
Annars, så skulle jag ju önska att man kunde komma åt händelsen "Tumhjulsförändring" och den vägen styra upp det, men det verkar ju inte vara möjligt.
mvh/HarrySv: Hur förhindra bläddring till annat rekord?
Verkar lite konstigt om man kan "halka" in på andra poster med DataEntry=true eftersom man då bara har tomma inmatningsrutor att tillgå, förutom när man har lagt till en post då kan man ju bläddra mellan de poster man lagt till.Sv:Hur förhindra bläddring till annat rekord?
Det var MouseWheel händelsen jag var ute efter.
Tyvärr har jag inte fått till en lyckad avändning av händelsen ännu.
Angående DataEntry=true, så blir funktionen den att jag via tumhjulet halkar in i nästa tomma inmatningsruta.
För att på något vis slippa problemet i varje fall tillsvidare, så tänkte jag att eftersom inte tumhjulet tycks gå att få att fungera vid inmatning så stänger jag formuläret ifall användaren använder tumhjulet i inmatningsrutinen.(en dålig lösning, men bättre än ingen lösning.) Men tyvärr har jag inte fått avstängningen heller att fungera ok utan istället får jag felmeddelande:
"Denna instruktion kan inte köras medan en formulär- eller rapporthändelse pågor".
Såhär ser mitt senaste försök ut:
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
If Me.OpenArgs = "lstLontagare" Then
Tumhjul = True
Exit Sub
End If
End Sub
Private Sub Form_Current() 'vid Ny post
On Error GoTo Form_Current_ErrorHandler
If Tumhjul Then
DoCmd.Close acForm, "Månadsuppgifter", acSaveYes 'stäng formuläret
Exit Sub
End If
....
....
DoCmd.Close ger upphov till felmeddelandet ovan.
Kämpar vidare och är tacksam för nya tips!Sv: Hur förhindra bläddring till annat rekord?
<code>
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
DoCmd.Close acForm, Me.Name, acSaveYes
Exit Sub
End Sub
</code>Sv:Hur förhindra bläddring till annat rekord?
Att flytta händelsen till MouseWheel-händelsen fungerar helt ok och ger en bättre lösning (inget felmeddelande) än ingen alls på mitt ursprungliga problem.
Stänger inte denhär tråden ännu. Det kan ju tänkas att någon kommer på en lösning som gör det möjligt att få tillgång till "normal" användning av tumhjulet vid inmatning.
Glad Valborg!
mvh/Harry