So did you try debugging the expression?
Where are the values "EventIDfk", "Budget" and "CategoryIDfk" coming from? If they are from controls on a form, I would use "Me." and the control name
If the control name is "EventIDfk", then I would use Me.EventIDfk.
Start by using one criteria.
"EventIDfk" should be a number, so no delimiters needed
Code:
=DSum("[ExpenseTotal]","[qryExpense_Printing]","[EventIDfk]=" & Me.EventIDfk)
If this returns a value, add another criteria.
Code:
=DSum("[ExpenseTotal]","[qryExpense_Printing]","[EventIDfk]=" & Me.EventIDfk & " And [Budget]=" & Me.Budget )
If this returns a value, add another criteria.
Code:
=DSum("[ExpenseTotal]","[qryExpense_Printing]","[EventIDfk]=" & Me.EventIDfk & " And [Budget]=" & Me.Budget & " And [CategoryIDfk]=" & Me.CategoryIDfk)
If, at any stage there is an error, fix it, then continue.