Oracle, PadR y los caracteres raros... tengo problemas

Oracle, PadR y los caracteres raros... tengo problemas

Postby goosfancito » Wed Jan 19, 2011 11:25 am

Hola.

Estoy trabajando con Oracle + ADO.
Tengo un campo definido como

nombre char(100) not null


Antes de grabar hago

Code: Select all  Expand view  RUN
vGet = PADR(vget, 100, " ")   // siendo vGet la variable que utilizo en el REDEFINE GET oGet var vGet...


Me funciona todo bien hasta que en vGet ingreso algun caracter como ser: vocal acentuada, Ç @ # $ (no es puteada, son caracteres)
porque al parecer en vez de completar con 100 espacios en blanco lo hace con 101 y al querer grabar en el campo [nombre] sobrepasa
la capacidad del campo definido en la base de oracle y KAPUT! error...


Como lo resuelvo a este problema?
gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Oracle, PadR y los caracteres raros... tengo problemas

Postby nageswaragunupudi » Thu Jan 20, 2011 7:54 am

Have you tried using nchar(100) instead of char(100) and setting appropriate chatacterset?
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Oracle, PadR y los caracteres raros... tengo problemas

Postby Willi Quintana » Thu Jan 20, 2011 1:37 pm

hola,,, yo uso esta funcion antes de actualizar las tablas.
.. GET cNombres ....
"UPDATE ralacion SET nombres = '" + LImpiaChar(cNombres) + "'" + ..............

Code: Select all  Expand view  RUN

//----------------------------------------------------------------------------------------------------
Function LimpiaChar(cDat, cCadS)
local nLen, nCont, aCadena, cCad
DEFAULT cCadS := "_"

cDat := ALLTRIM(cDat)
IF EMPTY(cDat)
  Return("")
EndIf

aCadena := " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
nLen := LEN(cDat)
FOR nCont := 1 TO nLen
   cCad := SUBSTR(cDat,nCont,1)
   If AT(cCad, aCadena) = 0
     cDat := STRTRAN(cDat, cCad,"_")
   EndIf
NEXT nCont

If EMPTY(cCadS)
  cDat := STRTRAN(cDat, "_", "")
EndIf

Return(cDat)
 
User avatar
Willi Quintana
 
Posts: 1023
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: Oracle, PadR y los caracteres raros... tengo problemas

Postby goosfancito » Thu Jan 20, 2011 11:16 pm

i change char for nchar, delete PADR in my source and now work it!

SET SPANISH jejeje

cambie char por nchar, borre PADR en my codigo y ahora funciona.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 16 guests