I had the "check engine" light come on in my BMW. I bought a $35 OBDII tool on eBay and it said I (edit - my car!) had an "evaporative emissions" problem, or something like that. The e46fanatics.com board said it was a bad gas cap.
Resetting the CEL worked briefly, then the light came back on. I bought a new cap from Pelican, then reset again and the CEL stayed off.
My point is, I think one needs to fix the underlying problem for an OBDII CEL reset to work,
AFAIK.
Best,