Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
SQLite + String + Dbcombobox = (MEMO) ERROR

Hola.

He puesto el titulo mas descriptivo que se me ha ocurrido. En definitiva el error es ese del titulo.

Yo tengo una base de datos SQLite, que debido a la poca cantidad de tipos que tiene los String tienen que ir con el tipo TEXT.

El problema viene a la hora de mostrarlo en delphi desde un DBCombobox, que en vez de mostrar el texto que quiero, muestra la palabra "(MEMO)" en todos los dbcombobox que sean String. En cambio los integer si los muestra bien.

Por otra parte, uso SQLite por el hecho de poder tener la DB en un archivo solo, y sin necesidad de que la persona que use el programa tenga que instalarse un servidor SQL.

Intente hacerlo con MySQL, pero no conseguia crear un archivo como el anterior, asi que tuve que hacerlo por SQLite.

A alguien se le ocurre alguna solucion??.

Desde ya, gracias ^^
Responder Con Cita
  #2  
Antiguo 01-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Supongo que tendrá algún tipo varchar, ejemplo:

Código SQL [-]
create table tbClientes (
  codigo integer not null,
  nombre varchar(64),
  ciudad varchar(24)
)

Busca en la documentación sobre tipos de campos.
Responder Con Cita
  #3  
Antiguo 01-02-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
Hola.

A ver, yo estaba trabajando en SQL, y tengo, tal y como dices, varios campos varchar.

Pero dado que necesito trabajar en local, he tenido que pasarme a SQLite. Pero este tipo de archivos, no permite varchar, y este es transformado a tipo "TEXT".

Y este tipo TEXT no puedo mostrarlo bien en los dbcombobox que uso.

Ya he buscado informacion de los tipos antes de preguntar, y me he comido la cabeza. las soluciones que veo:
1-Trabajar en local con un archivo MySQL, sin instalar servidores, que creo que no se puede.
2-Buscar la manera de que se muestre bien las palabras con el SQLite.

Entonces vuelvo a la pregunta:
Como puedo hacer que el texto guardado en una base de datos SQLite se muestre en un dbcombobox, en vez de mostrarse "(MEMO)" en su lugar?

edito:
Aqui pongo el problema:
Notice that the type "VARCHAR" contains "CHAR" as a substring so it is considered text
En español y resumido:
El tipo VARCHAR tiene tipo CHAR como subcadena, y es considerado tipo TEXT en SQLite.

El varchar desde un MySQL si logro mostrarlo, pero el TEXT de SQLite no logro mostrarlo bien

Última edición por Furyxe fecha: 01-02-2012 a las 12:59:23.
Responder Con Cita
  #4  
Antiguo 01-02-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
No me deja volver a editar mi mensaje. Asi que hago otro:

Pongo una imagen para que sea mas intuitivo el problema


Todos los campos donde pone (Memo), son tipos VARCHAR, que al pasar a SQLite, se convirtieron a tipo TEXT
Responder Con Cita
  #5  
Antiguo 01-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues, en teoría, un varchar debería transformarse en un text "normal y corriente", ¿cómo haces el traspaso de esos datos de la otra BD a la de sqllite?
Por cierto, ¿qué base de datos es la otra?, has dicho que trabajas en sql, pero no en cual, ¿postgresql, firebird, interbase, mysql...?
Responder Con Cita
  #6  
Antiguo 01-02-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
Hola de nuevo.

La otra base de datos es MySQL(esta en el primer post), en su version 5.
Yo he trabajado decenas de veces con MySQL, y no he tenido ningun problema al mostrar datos. Pero como esta vez necesito una base de datos sin instalación de servidores, he pasado a SQLite(es la primera vez que hago uso de esta base de datos desde delphi).

Tambien remarcar que uso Zeos-lib para acceder a esos datos.

Los datos se transforman a traves de navicat. Realiza las transformaciones de forma automatica.
Tambien he intentado a modificar manualmente las propiedades y tipos de la tabla SQLite. Pero en los tipos de datos solo me deja:
-Integer
-Text
-Blob
y otro mas que no recuerdo, pero que tampoco me sirve.

Blob, se supone que es un "tipo" sin tipo, es decir, que coje los valores tal y como le llegan. Asi que intenté tambien hacerlo así, pero en ese caso, en vez de salir (Memo), salia (Blob).

He probado a crear una tabla nueva directamente en sqlite, sin pasar la estructura desde otra base de datos, pero el problema persiste.
Responder Con Cita
  #7  
Antiguo 01-02-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
Arreglado.

Pongo aqui la solucion con la explicacion:

Como he comentado anteriormente, trabajo con navicat para las bases de datos.
A la hora de realizar la conversion desde MySQL a SQLite, el Varchar se convirtio a tipo TEXT.
Y al intentar modificar desde navicat el tipo de la columna, solo me salian 4:
-Integer
-Text
-Real
-Blob.

Tras todo, he intentado forzar el tipo Varchar. Es decir, desde el editor de tipos, en la columna he escrito "Varchar", y aunque navicat no me lo estaba contando como un tipo existente en SQLite, a la hora de guardar, se ha guardado bien. Y a la hora de trabajar desde Delphi, por fin salen los datos.


Quiero dar las gracias a Casimiro por la ayuda prestada ^^
Responder Con Cita
  #8  
Antiguo 01-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Furyxe Ver Mensaje
Quiero dar las gracias a Casimiro por la ayuda prestada ^^
Bueno, yo no he hecho nada, lo has solucionado tú mismo
Me alegro de que por fin lo hayas conseguido
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Como capturar un string de un Memo? ANXO OOP 1 12-04-2006 09:54:31
como busco un string en un campo memo nvalerio Varios 8 07-02-2006 20:59:24
Igualar campo STRING con campo MEMO en una SQL ciscu SQL 2 19-01-2006 10:05:23
como consultar con un string en un campo memo nvalerio Tablas planas 1 15-04-2004 17:08:11
como consultar con un string en un campo memo nvalerio Tablas planas 1 15-04-2004 16:34:19


La franja horaria es GMT +2. Ahora son las 04:22:27.


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
Copyright 1996-2007 Club Delphi