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