I tried the sand on top once and it didn't work for me. Sticky strips, bowl of liquid etc... will take care of the adults but there's lots of larvae in the medium. I tried pretty much all the recommended solutions and found this to work:

30ml of pyrethrum concentrate per gal. of water. Used it once a week for 4 weeks. That was about 18 months ago and haven't had a gnat since. Oh, by the way, the plants never reacted to the pyrethrum. I also know 3 other folks who did the same.