estoy comenzando a convertir mis bases de datos DBF a MYSQL. Una vez importadas las tablas en MYSQL me he encontrado con el problema de la anchura de _ numéricos.
Primero probé con la propiedad nPrecision de los objetos Fields, pero para los tipos Int, TinyInt y BigInt siempre devuelven un valor fijo.
Yo necesito el valor entre paréntesis que aparece en la creación de la tabla, por ejemplo Int(5) es un ancho de 5, en cambio nPrecision es 10 y FWADOFieldLen() es 11.
Lo he conseguido solucionar usando el siguiente código :
Code: Select all
oRS := oCon:Execute ( "SHOW CREATE TABLE " + cTabla )
cCreateTabla := oRs:Fields[1]:value
Ya sólo queda buscar el nombre del campo que queramos y sacar el número entre paréntesis.CREATE TABLE `reembols` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`SERIE1` VARCHAR(2) NULL DEFAULT NULL COLLATE 'utf8_spanish_ci',
`TALON` BIGINT(20) NULL DEFAULT NULL,
`SERIE2` VARCHAR(3) NULL DEFAULT NULL COLLATE 'utf8_spanish_ci',
`NUMERO` BIGINT(20) NULL DEFAULT NULL,
`CLIENTE` VARCHAR(25) NULL DEFAULT NULL COLLATE 'utf8_spanish_ci',
`FECHA` DATE NULL DEFAULT NULL,
`IMPORTE` DECIMAL(11,2) NULL DEFAULT NULL,
`BANCO1` VARCHAR(8) NULL DEFAULT NULL COLLATE 'utf8_spanish_ci',
`BANCO` TINYINT(2) NULL DEFAULT NULL,
`APUNTE` INT(5) NULL DEFAULT NULL,
`IBAN` VARCHAR(34) NULL DEFAULT NULL COLLATE 'utf8_spanish_ci',
PRIMARY KEY (`ID`)
)
Expongo esta solución por si le sirve a algún compañero del grupo y por si alguien conoce una forma más sencilla de obtenerlo.
Un saludo.