AdoRecordSet ADS y Harbour

AdoRecordSet ADS y Harbour

Postby fgondi » 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: Select all  Expand view
 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: Select all  Expand view
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
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: AdoRecordSet ADS y Harbour

Postby ruben Dario » Fri Jun 28, 2013 1: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
User avatar
ruben Dario
 
Posts: 1061
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Re: AdoRecordSet ADS y Harbour

Postby fgondi » Fri Jun 28, 2013 8: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
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Re: AdoRecordSet ADS y Harbour (Solucionado)

Postby fgondi » Fri Jun 28, 2013 4: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
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 87 guests