I very much doubt whether there is a way to do this without, at the very
least, having code, let's say in Access, that knows /all/ the capitalisation
rules. However, my personal opinion is that
a. there is no reliable set of rules, partly because different people may
choose to capitalise a name in two different ways.
b. the only way to get this completely right is to find out, for every
individual, how they want their name spelled, and store that name in the
database.
Of course you may well be able to do better than 99% by working out and
applying enough rules in code, but even that seems pretty hard to me - e.g.,
it may well be the case that O' names are almost invariably capitalised as
O'Name in English, but names beginning with Mac do not necessarily have a
Gaelic origin (e.g. Machel), and may be capitalised differently even when
they do. "de" and "van" names are probably also difficult - even if the
capitalisation is consistent in their countries/languages of origin, I
doubt if it is in the English-speaking world.
It's difficult to know whether to reply negatively to this type of question,
because once a reply has been posted, it tends to prevent others from
considering the question. OTOH if you get no replies, you may wonder whether
anyone has seen or considered your question. So if you are convinced that
there might be a better way, I would post your question again, specifically
requesting that people only reply if they know one.
Peter Jamieson