Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Problema Al Crear Campos En Tabla

Problema Al Crear Campos En Tabla
Artículo
Responder citando    Descargar mensaje  
Mensaje Problema Al Crear Campos En Tabla 
 
Yo puedo crear una tabla mysql haciendo algo como esto:
  
tb = cn.Tables.Add("secciones", "Innodb")  'crear tabla secciones
  tb.Fields.Add("codigo", db.Serial)
  tb.Fields.Add("descripcion", db.string, 140)
  tb.Fields.Add("nuevos", db.Integer)  
  tb.Fields.Add("totales", db.long)
  tb.Fields.Add("bloqueado", db.Boolean)
  tb.Fields.Add("fecha", db.Date)
  tb.PrimaryKey = ["codigo"]
  tb.Fields.Add("FechaW", db.date)  
  tb.Update
  tb.Indexes.Add("codigo", "codigo", TRUE)

El problema viene de que al hacer eso me crea un campo de tipo DATE que solo puede contener la fecha. El caso es que Mysql tiene los tipos de fecha DATE, TIME, DATETIME y TIMESTAMP. Resulta que al describir el campo fecha como db.date está cogiendo cualquiera de ellos. En concreto el que escoge es el tipo DATE.

Pues es que yo quiero DATETIME y no veo como decirle que ponga datetime.

Al consultar en gambasdoc me encuentro que este problema ocurre también con otros tipos. Por ejemplo si yo defino en gambas db.float eso engloba a los float, double, real, numeric, decimal. No veo como elegir cual de ellos es el que quiero. Aquí está la tabla de conversiones de campos que usa gambas

http://gambasdoc.org/help/doc/db-type-mapping

Tiene solución porque Mysql dispone del comando alter table que permite hacer el cambio, pero yo dudo que benoit dejara así un disparate de esa magnitud. Creo que hay algo en gambas que no sé como se hace.y tampoco encuentro información ¿como va a ser igual guardar la fecha que la hora por ejemplo? ¿Como va a  ser igual guardar un float que un double?



 
soplo - Ver perfil del usuario Enviar mensaje privado  
soplo [ Martes, 25 Enero 2011, 17:33 ]
 


Problema Al Crear Campos En Tabla
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Problema Al Crear Campos En Tabla 
 
Yo suelo utilizar mucho los timestamp y los datetimes (para seguimiento de accesos a la base y de modificaciones). No me he calentado mucho el tarro con Gambas:

Creo las tablas en el propio Mysql con alguna herramienta como phpmyadmin (no me gusta el gestor de gambas) y luego con la instrucción show create table obtengo la estructura. Almaceno ésa información en el programa y la ejecuto con una sentencia conexion.exec(sqlString).

Para cargar ficheros .csv o cosas así, utilizo llamadas SHELL a mysql, que van como una moto de rápidas.

La única pega es que esa sintáxis sólo sirve para MySQL. Con SQLite, driver con el que estoy experimentando últimamente para según qué cosas, utilizo otras estrategias.

Suerte.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Martes, 25 Enero 2011, 19:37 ]
Responder citando    Descargar mensaje  
Mensaje Re: Problema Al Crear Campos En Tabla 
 
Eso a mi no me vale. Todas mis aplicaciones tienen la capacidad de crear su propia base de datos completa (tablas, índices, triggers, usuarios, etc) e insertarles algunos datos iniicales si hace falta. Todas las bases de datos tienen siempre al menos tres usuarios. Uno de administración con permisos para modificar la estructura de la base de datos, usuarios, etc, otro con permiso select, insert, update y delete y otro de solo lectura. Cuando se inicia la aplicación si no encuentran su base de datos la crean y generan un settings con los parámetros de conexión para sus usuarios.

Lo que me pasa es muy sorprendente porque he mirado como es que a estas alturas me ocurre esto con un campo de fecha y resulta que en una base de datos, al crearla me pone el campo fecha de tipo date, pero en otras me lo pone de tipo datetime. La cosa es tanto mas sorprendente cuando resulta que son copypastes porque cuando tengo que hacer una tabla en vez de escribir todo hago un copypaste de la anterior, le cambio en nombre de la tabla, los campos y poco mas ¿como es que obtengo resultados distintos de una línea tb.fields.add("fecha",db.date) dependendiendo de que esté en una tabla u otra? ¿Por qué en una es date y en otra es datetime?

 



 
soplo - Ver perfil del usuario Enviar mensaje privado  
soplo [ Martes, 25 Enero 2011, 20:26 ]
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


 



 

cron