I have a package that does the exact same thing. Here's how it is set up:
1. Package does some import stuff.
2. Execute SQL Task checks table row count:
- Result Set - Single Row
- Source - SELECT COUNT(*) as ProductionCount FROM Table
- Result Set tab
- Result Name - 0
- Variable name - User::ProductionCount
3. Precedence constraint w/ expression checking @User::ProductionCount > 0
Pretty simple in theory, but it seems like I always have to jump through a few hoops to get an Execute SQL task to populate the variable. In this case, I found that I needed to have the COUNT(*) alias match the variable name in SSIS. Wierd, but it works.
Are you using an Execute SQL task to populate your variable?