Here's the solution I use to inventory my electronic components.
First, I have a database setup using anyInventory ( http://anyinventory.sourceforge.net/ ) that catalogs the important bits, ie:
My 'part number' (which I put on schematics so I know what I used)
Vendor, price, Vendor part (for re-order and quick costing of a project)
Manufacturer, part, link to datasheet, part photo
Value, tolerance, power rating, package, etc
Location (more below)
Quantity on hand/order
geda footprint (for geda's PCB http://www.gpleda.org/index.html)
My internal part numbering system is a 3x4 part number, ie, 100-0001, where the first 3 digits are a category of part (resistor, 74 series, whatever) and the 4 digit is just a number I assign to make it unique. This allows me to specify my part number on a schematic or BOM along with the refdes and value so I know exactly the part and footprint I need.
Secondly, I have a series of drawer cabinets, bins, etc as needed to store the parts, each labeled with drawer, cabinet, shelf (usually with a barcode for some future fun with a barcode reader).
Why go to all the bother? Seriously, I have hundreds and hundreds of parts. I work on circuits for a living, and trust me, not having the organized blows.
I started on another project at one point in time that would automate assigning parts to a 'product' or 'project' so you could wasily generate invoices or costing, but I have not completed it yet. I'll probably get back into that this year, though.