Estoy intentando trabajar con tablas DBF pero mediante consultas SQL pero me encuentro con un problema cuando los campos CARACTER son superiores a 256 caracteres.
He probado hacer las consultas mediante la función que provee Fivewin FW_DbfSqlQuery(), también mediante la conexión con ADO pero la información que me devuelve siempre es truncada.
Partiendo de una tabla:
CODIGO LEN 10
NOMBRE LEN 50
OBSERVACION LEN 1024
PAIS LEN 50
Si realizo la siguiente consulta:
- Code: Select all Expand view RUN
- TEXT INTO cQuery
SELECT CODIGO, NOMBRE, PAIS
FROM ARTICULO
ENDTEXT
oRs := FW_DbfSqlQuery( '.\DBF', cQuery,,.t.)
la información del campo PAIS no es correcta, si bajo el tamaño del campo OBSERVACION a 256 funciona todo bien.
Mediante ADO pasa lo mismo:
- Code: Select all Expand view RUN
oC := win_oleCreateObject( "ADODB.Connection" )
oC:Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source="' + cPath + '";Extended Properties=dBASE IV;User ID=Admin;Password=;')
oRs := win_oleCreateObject( "ADODB.Recordset" )
TEXT INTO cQuery
SELECT CODIGO, NOMBRE, PAIS
FROM ARTICULO
ENDTEXT
oRs:Open( cQuery, oC )
He estado buscando información al respecto y en DBase IV hay una limitación a 256 caracteres como máximo en un campo de la tabla DBF. Esto se aumento en DBase V hasta 2048, pero no he encontrado la cadena de conexión con DBase V para ADO. He probado cambiando directamente DBase IV por DBase V en la cadena de conexión pero no funciona.
Gracias y salud!