Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problemas Para Detectar Tipo De Campos En Las Bases Sqlite
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problemas Para Detectar Tipo De Campos En Las Bases Sqlite 
 
Hola, estoy con un bug que sale (de vez encuendo         ), cuando analizo los campos que existen en una base de datos Sqlite:

Este es el código que me da problemas, lo que hace es por cada tabla que contiene la base de datos, extrae los campos, y los tipos (sin son integer,date, strings, etc)..


  FOR EACH ctable IN conexion.tables
        IF Mid$(ctable.name, 1, 7) <> "sqlite_" THEN
            listatablas.Add(ctable.name)
            PRINT "** tabla ** "; ctable.name
            'escribir campos...
            rsDatos = conexion.Exec("select * from " & ctable.name)
                      
           PRINT "--------"
            PRINT "      Campos:"
            'cada vez que analizo una tabla:
            codigoCampo = ""
            campo.Resize(0)
            campotipo.Resize(0)
            texto = ""
            FOR EACH hfield IN rsdatos.fields 'hField IN rsdatos.Fields
                 PRINT "          Nombre: "; hField.Name; ", Tipo: "; hField.type;
                texto = Str$(hField.Type)
                 PRINT " tipo: "; varios.valor(texto)
                'ver constantes definidas:
                '     http://gambasdoc.org/help/cat/constant?es
                ' tipo 9 es string  
                campo.Add(Str$(hField.Name))
                campotipo.Add(varios.valor(texto))
            NEXT[
.....
    ELSE
          '  PRINT "no tabla: "; ctable.name
        ENDIF
    NEXT
 


El problema me viene, es que en algunas  lo detecta bien, pero en otras no, y los pones todos como si fueran String (tipo 9).
Pensaba que era problema de que hacia la base de datos con el administrador de bases de datos de gambas, pero lo he hecho con otro programa y me sigue fallando...

Tabla Alfa correcta:
salidadelatab

Tabla Peliculas:
salidadeldl2sd
datospelicula
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Miercoles, 30 Noviembre 2011, 20:18; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problemas Para Detectar Tipo De Campos En Las Bases Sqlite 
 
Cito de Wikipedia:

Citar:
SQLite usa un sistema de tipos inusual. En lugar de asignar un tipo a una columna como en la mayor parte de los sistemas de bases de datos SQL, los tipos se asignan a los valores individuales. Por ejemplo, se puede insertar un string en una columna de tipo entero (a pesar de que SQLite tratará en primera instancia de convertir la cadena en un entero). Algunos usuarios consideran esto como una innovación que hace que la base de datos sea mucho más útil, sobre todo al ser utilizada desde un lenguaje de scripting de tipos dinámicos. Otros usuarios lo ven como un gran inconveniente, ya que la técnica no es portable a otras bases de datos SQL. SQLite no trataba de transformar los datos al tipo de la columna hasta la versión 3.


En este otro blog lo explican bastante bien (te lo pongo aquí por no enviarte a la documentación en inglés, pero allí es donde hay que mirar):

http://phppink.blogspot.com/2011/02...n-sqlite-3.html

Evidentemente tus test deberían funcionar correctamente con MySql o PostgreSql.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron