Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   SqlLite trunca texto leido (https://www.clubdelphi.com/foros/showthread.php?t=90897)

CarlosG 30-09-2016 20:30:16

SqlLite trunca texto leido
 
Hola.
Estoy conectando a una base de datos SqlLite mediante ODBC, para recuperar los datos de una tabla, pero los recupera truncados a 20 caracteres, aunque la columna tiene mas datos.

No se a que se debe si es un problema de configuracion u otra cosa.

bitbow 30-09-2016 23:58:53

Si tienes los campos definidos en tiempo de diseño, revisa si realizaste alguna actualizacion que no referescaste en el componente visual.

Si puedes proporcionar mas info?

Saludos.

CarlosG 01-10-2016 00:54:46

EL Script de la tabla es:
Código SQL [-]
CREATE TABLE TXXXX_PARAM(
   ID_PARA   VARCHAR(10) NOT NULL,
   NOM_PARA  VARCHAR(30) NOT NULL,
   VAL_PARA  VARCHAR(20) NOT NULL
)
La columna "VAL_PARA" aunque se define a "VARCHAR(20)" en Sqllite se traduce a TEXT que no tiene un limite definido, pero cuando leo una fila, el dato de la columna "VAL_PARA" con mas de 20 caracteres solo me devuelve los 20 primeros caracteres.

No uso diseñador, uso una conexion directa a ODBC, bueno la conexion directa desde V. FOXPRO
Código Delphi [-]
lcStringConn = "Driver={SQLite3 ODBC Driver};DATABASE=" + ALLTRIM(ls_BaseDatos) + ";NoTXN=1;SyncPragma=NORMAL;StepAPI=0;LongNames=1"
dbLink_sfs = SQLSTRINGCONNECT(lcStringConn)
Supongo que tiene que ver con el ODBC o una configuracion de SQLlite y NO con FOX, si no, no lo posteo en club Delphi.

Estoy usando el driver gratuito de ODBC de la url "http://www.ch-werner.de/sqliteodbc/"

Casimiro Notevi 01-10-2016 01:10:56

¿Y si lo cambias por varchar(30) también devuelve 20 caracteres? :rolleyes:

Por cierto, recuerda poner los tags al código fuente, ejemplo:



Gracias :)

CarlosG 01-10-2016 01:19:24

Gracias por sus respuestas :)

Ya me se habia occurrido aumentar el ancho de columna VARCHAR, pero la base de datos es de una aplicacion externa no de la mia. Esa aplicacion la actualizan cada cierto tiempo, y si lo cambio y lo actualizan a unos meses, tendria que cambiar el ancho del campo de nuevo. :confused:

Casimiro Notevi 01-10-2016 01:22:41

Vale, pero:
Cita:

Empezado por Casimiro Notevi (Mensaje 509243)
¿Y si lo cambias por varchar(30) también devuelve 20 caracteres? :rolleyes:


CarlosG 01-10-2016 01:59:31

Si lo cambio la columna por "varchar(30)" o "TEXT" ya no me recorta el dato devuelto, a menos no a 20 con varchar(30) ;).
Por el momento lo he cambiado a TEXT, hasta que tenga otra opcion que me permita hacerlo sin cambiar el esquema, es decir si hubiera :).

gracias por sus aportes.

mamcx 01-10-2016 03:04:25

Asi que la estructura dice que es 20, pero en realidad hay mas de 20. Pues pa' que tienen la estructura asi?

En fin, es probable que sea un problema del ODBC que le cree a la estructura. Que pasa si usas otro metodo, como ADO?

Una solucion a tu problema seria crear la tabla con la estructura correcta, darle insert desde el orgen (INSERT INTO Corregido SELECT *.....) y select desde Fox.


La franja horaria es GMT +2. Ahora son las 03:28:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi