Undvik detta vanliga fel vid exekvering av lagrad procedur i MS Access
Vi älskar att köra lagrade procedurer från vår VBA-kod, men det finns ett problem du måste se upp med:Att köra en procedur som påverkar data som redan laddats på ditt formulär. Om du inte är försiktig får du följande meddelande:
Lyckligtvis är det en enkel lösning, här är några förslag:
- Stäng formuläret och kör sedan din lagrade procedur. Detta förutsätter att du kanske inte vill granska de ändrade uppgifterna på samma formulär.
- Ställ in formulärpostkällan till ingenting, ställ sedan tillbaka den till den ursprungliga datakällan (se koden nedan).
Stäng formuläret och kör sedan den lagrade proceduren
Här är lite pseudokod för att komma igång:
Private Sub RunSomeProcedure() Dim lngOrderID as Long 'Assuming you need to pass information from your form to the stored procedure, for example, an OrderID lngOrderID = Me.OrderID 'If you don't store the info it will not be available after closing the form DoCmd.Close acForm, Me.Name 'This closes the form ExecuteMyCommand "uspStoredProcedureName " & lngOrderID End Sub
Inte bekant med ExecuteMyCommand? Du kan slå upp det här.
Ställ in formulärets postkälla till null
Private Sub RunSomeProcedure() Dim lngOrderID as Long Dim strRecordSource as String 'Assuming you need to pass information from your form to the stored procedure, for example, an OrderID lngOrderID = Me.OrderID 'If you don't store the info it will not be available after closing the form strRecordSource = Me.RecordSource 'Store the recordsource for later use Me.RecordSource = vbNullString ExecuteMyCommand "uspStoredProcedureName " & lngOrderID Me.RecordSource = strRecordSource 'Restore the form so that the user can see the updated data End Sub
Häng med mig den 9 mars med specialgästen Ebo Quansah!
Kom och lär dig det senaste om Microsoft Access med Ebo, produktchefen för Access-gruppen. För mer information klicka här:https://accessusergroups.org/sql-server-with-access/event/sql-server-with-access-whats-new-in-access-a-presentation-by-the-access- produkthanterare/