Well, at what point are you going to increment the alphabetic value? After A999? Will you then go to B001? And what about after Z999?
I can't recommend doing this. Why do you need such a surrogate key? By definition a surrogate key serves no purpose but to uniquely identify a record, so there is no justification for creating odd rules about it's sequence?
Can it be done? Sure, a lot of things that should not be done in a database CAN be done. I guess I'd create an auto-incrementing integer field, divide it by 1000 and add the result to the ASCII value of the letter "A", and finish by tacking on the result of your Auto-increment field modulus 1000. There's your key field? Is it worth the trouble?
If it's not practically useful, then it's practically useless.
Retrieve the last key value (not easy because you cant get the Max value: suggestion, create an Autonumber as a field that is not used for anything else except the priomary key).
Increment the value of the key.
Test for the value is 999 (or whatever the maximum is). If that is the case reset the valu to 000. If you don'w want to manipulate the ASCII key value use a SELECT ... CASE routine to increment the letters, e.g.
SELECT CASE LetterIN
This involves writing a lot of code, and you'll have to work a lot out for yourself, but it is workable.
I agree with Blindman and would avoid going down the route of generating your own code. However, you could have a standard auto-number field as your primary key, then use a query to make the PK look like the code you want in any output.
So 1,2,3 (numeric) would look like A001,A002,A003 (text).
If I understand correctly I may have a file for you to check out that someone else has done. If what you seek is A0000 - A9999 then B0000 - B9999 etc to Z9999 after which would be over 2.6M records. If I am right in this you can decide then how to proceed after Z9999. The file can be found at: