jueves, 6 de octubre de 2011

Microsoft Dynamics NAV: Sustitución de acentos, ñ's y demás

Ya hacía tiempo que no comentaba nada, a parte de falta de tiempo, tampoco había descubierto nada interesante pero hace poco he tenido que hacer una función para algo que pensaba que debía existir en NAV y yo no he encontrado.

Cuando me pidieron de sustituir en una cadena las letras con acentos por la misma letra sin acento, ñ's por n´s, estuve buscando y no ví una función que lo hiciese como yo quería pues navegando por ahí (creo que en mibuso) encontre una función que en conjunto con otra creada por mi hacía lo que necesitaba exactamente que era, sustituir cualquier ocurrencia de letras con acento o ñ's por sus respectivas letras.

Después del rollo, aquí va la función:

SustitucionCaracteres(Texto : Text[250]) TextoCambiado : Text[250] 
  Cadena1 := 'ÀÄÁÂÈËÉÊÌÏÍÎÒÖÓÔÙÜÚÛÑÇàäáâèëéêìïíîòöóôùüúûñç';
  Cadena2 := 'AAAAEEEEIIIIOOOOUUUUNCaaaaeeeeiiiioooouuuunc';
  TextoCambiado := Texto;
  FOR i := 1 TO STRLEN(Cadena1) DO BEGIN
    IF STRPOS(Texto,FORMAT(Cadena1[i])) <> 0 THEN
      TextoCambiado := ReplaceString(TextoCambiado,FORMAT(Cadena1[i]),FORMAT(Cadena2[i])); 

  END;

donde:

ReplaceString(String : Text[250];FindWhat : Text[250];ReplaceWith : Text[250]) NewString : Text[250]
  WHILE STRPOS(String,FindWhat) > 0 DO
    String := DELSTR(String,STRPOS(String,FindWhat)) + ReplaceWith + COPYSTR(String,STRPOS(String,FindWhat) + STRLEN(FindWhat));

  NewString := String;


Esta última función es la que ví en mibuso (creo recordar).

Bueno, espero que haya sido útil y seguramente habrá algo parecido pero las prisas xdd.

Hasta otra.