Richiesta decisamente anomala...
Per risolvere hai poche soluzioni solo uno sporco trucchetto... devi crearti un Campo specifico
fatto inquesto modo:
SELECT *, Abs(ASC(cstr([CarattereIniziale:]))-Asc(Left([CAMPOTESTO],1))) & Mid$([CAMPOTESTO],1,Len([CAMPOTESTO])) AS ORDERCHAR
FROM TuaTabella
ORDER BY Abs(ASC(cstr([CarattereIniziale:]))-Asc(Left([CAMPOTESTO],1))) & Mid$([CAMPOTESTO],1,Len([CAMPOTESTO]))
Ora rendila Parametrica e passa il CHAR... io ti ho già reso la query parametrica, ora con QueryDefs e parameter lo valorizzi, oppure al posto del Parametro metti il Riferimento alla TaxtBox della Form nella quale inserisci il CHAR di ordinamento...