FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Oracle, PadR y los caracteres raros... tengo problemas
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Oracle, PadR y los caracteres raros... tengo problemas
Posted: 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 (fw): Select all Collapse
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/
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Oracle, PadR y los caracteres raros... tengo problemas
Posted: Thu Jan 20, 2011 07:54 AM

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

Regards



G. N. Rao.

Hyderabad, India
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Oracle, PadR y los caracteres raros... tengo problemas
Posted: Thu Jan 20, 2011 01:37 PM
hola,,, yo uso esta funcion antes de actualizar las tablas.
.. GET cNombres ....
"UPDATE ralacion SET nombres = '" + LImpiaChar(cNombres) + "'" + ..............

Code (fw): Select all Collapse
//----------------------------------------------------------------------------------------------------
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)
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: Oracle, PadR y los caracteres raros... tengo problemas
Posted: 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/

Continue the discussion