FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour AdoRecordSet ADS y Harbour
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM

AdoRecordSet ADS y Harbour

Posted: Thu Jun 27, 2013 10:11 PM
En Harbour con consigo que los campos con acentos funciones correctamente.

Ejemplo:
En Harbour el recordset de la consulta "Select Nombre From Cliente" devuelve "FERNANDO H‚ERN"
En xHarbour devuelve "FERNANDO HéERN"

Si lo que intento es grabar genera un error
En xHarbour el recordset de la consulta "Update clien Set Nombre='FERNANDO HéERN' WHERE Id=570168" funciona correctamente

En Harbour genera este error:
Descripci=n : Error 7200: AQE Error: State = HY000; NativeError = 5211; [iAnywhere Solutions][Advantage SQL][ASA] Error 5211: There is an error converting Unicode string to or from code page string. Some Unicode characters cannot be converted to code page characters

La conexión con xharbour la realizo de la siguiente forma:
Code (fw): Select all Collapse
  Try
    xConnStr   :=  "Provider=   Advantage.OLEDB.1;"+;
                  "User ID=    "+cUsr+";"+;
                  "PassWord=   "+cPass+";"+;
                  "Data Source="+cAdd+";"+;
                  "ServerType ="+cType+";"+
                  "CharTye=ADS_ANSI;"+;
                  "Persist Security Info=False"
    oAdoConexion := Createobject("adodb.connection")
    oAdoConexion:Mode := adModeRead                      // Conectamos en Solo Lectura
    oAdoConexion:Open(xConnStr)
  Catch
    if lErr
      Error('En estos momentos no se puede conectar a la base de datos'+CRLF+'Por favor, intentelo dentro de unos instantes')
    endif
    Return .F.
  End


Y el recordSet
Code (fw): Select all Collapse
oRcs := CreateObject("ADODB.recordset")
oRcs:CursorLocation := xCursorLocation
oRcs:CacheSize      := nPageSize
oRcs:PageSize       := nPageSize
oRcs:CursorType     := xCursorType
oRcs:LockType       := xLockType
oRcs:Open(cConsulta, oAdoConexion)


Hay que cambiar algo en Harbour?
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos
Posts: 1078
Joined: Thu Sep 27, 2007 03:47 PM

Re: AdoRecordSet ADS y Harbour

Posted: Fri Jun 28, 2013 01:49 AM

Intenta asi, mira este ejemplo
cd:='INSERT INTO Articulos (Codigo,'+AnsiToOem('Año')+',Descripcion) VALUES ('160752','2012','Jugo de Naranja')'
oCon:Execute(cd)

Usando AnsiToOem

Ruben Dario Gonzalez
Cali-Colombia
rubendariogd@hotmail.com - rubendariogd@gmail.com
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM

Re: AdoRecordSet ADS y Harbour

Posted: Fri Jun 28, 2013 08:48 AM

Muchas gracias Ruben,

No sólo tendría colocar AnsiToOem en las grabaciones también lo tendría que colocar en las lecturas.
OemToAnsi( oRcs:fields('Descrip'):Value )

No creo que ado para Harbour sólo trabaje en Oem.
Tiene que haber algo en la configuración de ADS o la forma de cargar el recordset que permita definir que es ansi.

Con xHarbour ya funciona en ANSI.

Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos
Posts: 694
Joined: Fri Oct 07, 2005 06:58 AM

Re: AdoRecordSet ADS y Harbour (Solucionado)

Posted: Fri Jun 28, 2013 04:29 PM
No era un problema sólo con ADS,
El problema lo tenía en todo Harbour

He tenido que añadir:
REQUEST HB_CODEPAGE_ESWIN
y
HB_SetCodePage("ESWIN")

Buscando en el foro encontré varias respuestas que hacían mención a ello.
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=26426&p=145812&hilit=Hb_LangSelect#p145812
Un saludo

Fernando González Diez

ALSIS Sistemas Informáticos

Continue the discussion