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
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:
Tabla Peliculas: