bug en la funcion FieldName() xharbour y TDATABASE

bug en la funcion FieldName() xharbour y TDATABASE

Postby RSalazarU » Wed Mar 25, 2015 3:37 pm

Amigos del foro:

Manejo ADS + xharbour y tengo una consulta asi :

Code: Select all  Expand view  RUN
SELECT nroautoriz autorizacion, nrofactura factura FROM ftcompra


El nombre del primer campo, resultado de la consulta, tiene 12 caracteres

Si este resultado lo manejo con TDataBase(), tira este error:

Code: Select all  Expand view  RUN
Error description: Error BASE/1004  Message not found: TDataBase:AUTORIZACION
 


es porque en la clase TDataBase() se tiene este codigo
Code: Select all  Expand view  RUN

      for n = 1 to ( ::cAlias )->( FCount() )
         cCol  := ( ::cAlias )->( FieldName( n ) ) //<- aca el ERRROR!!!
         AAdd( ::aFldNames, cCol )
#ifdef USE_HASH
         ::hFlds[ cCol ] := n
#endif
 


La funcion ( ::cAlias )->( FieldName( 1 ) ) retorna "autorizacio" una cadena de 11 digitos (ni 10, ni 12), por lo tanto el HASH de la clase TDataBase() falla.

Para corregir el problema se debe usar el metodo ::FieldName() de la misma clase, que usa el arreglo ::aStruct creado con ( ::cAlias )->( DbStruct() )
Code: Select all  Expand view  RUN

      for n = 1 to ( ::cAlias )->( FCount() )
         cCol  := ::FieldName( n ) //<- CORECCION!!!
         AAdd( ::aFldNames, cCol )
#ifdef USE_HASH
         ::hFlds[ cCol ] := n
#endif
 


La pregunta: es error de xHarbour ???


Rolando
Cochabamba, Bolivia
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: bug en la funcion FieldName() xharbour y TDATABASE

Postby Antonio Linares » Wed Mar 25, 2015 4:29 pm

Rolando,

Prueba a cambiar esta línea:

cCol := ( ::cAlias )->( FieldName( n ) )

por

cCol := ( ::cAlias )->( DbStruct()[ n, 1 ] )

si asi funciona, entonces sería problema de xharbour
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: bug en la funcion FieldName() xharbour y TDATABASE

Postby RSalazarU » Wed Mar 25, 2015 6:09 pm

Antonio:

Hice el cambio y funciona!!!

Entonces el problema es en xHarbour.

Sin embargo prefiero hacerlo asi:

cCol := ::FieldName( n )

porque le da mas claridad al codigo (segun yo)
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: bug en la funcion FieldName() xharbour y TDATABASE

Postby Antonio Linares » Wed Mar 25, 2015 6:27 pm

Si, estoy de acuerdo contigo :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: bug en la funcion FieldName() xharbour y TDATABASE

Postby nageswaragunupudi » Thu Mar 26, 2015 6:27 am

Thanks.
I made the correction this way in database.prg:
cCol := ::aStruct[ n, 1 ]
I think this works too.
The fix will be available from next release.
Regards

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

Re: bug en la funcion FieldName() xharbour y TDATABASE

Postby Patricio Avalos Aguirre » Wed Apr 01, 2015 8:49 pm

Hola

si te pasas en algun momento a harbour vas a tener problemas con los nombres de los campos mayores a 10 caracteres

tuve ese problema y la solucion fue cambiar los largos de los nombres de los campos
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1060
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Marc Venken and 30 guests