Yes, I suppose DLookup would be slower and if there were hundreds of DLookups in sequence, I would rethink. But I do use them when just need to retrieve a single value instead of opening a recordset object. Don't notice performance issue. So if you do run INSERT action and let Access deal with rejecting duplicate, use CurrentDb.Execute in VBA and there won't even be a warning message.