Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

De Access a MySQL, de localhost al servidor web. Aventuras de un campo booleano

Estas en el tema de De Access a MySQL, de localhost al servidor web. Aventuras de un campo booleano en el foro de Bases de Datos General en Foros del Web. Una pagina muestra los datos de una tabla. Tabla Titulos: ------------------- Titulo, Nuevo Si el Titulo en cuestión es "Nuevo" Se muestra un "dibujito" junto ...
  #1 (permalink)  
Antiguo 13/09/2007, 06:13
Avatar de TonyG  
Fecha de Ingreso: mayo-2005
Mensajes: 34
Antigüedad: 19 años
Puntos: 1
Pregunta De Access a MySQL, de localhost al servidor web. Aventuras de un campo booleano

Una pagina muestra los datos de una tabla.

Tabla Titulos:
-------------------
Titulo, Nuevo

Si el Titulo en cuestión es "Nuevo" Se muestra un "dibujito" junto a el para indicar tal situación.


Originalmente la base de datos era Access y el campo "Nuevo" era de tipo (Si/No)
If Nuevo...
era la forma de saber si había que poner el dibujito o no.



Con el tiempo pensé en pasar la base de datos a MySQL (mas por enredar y aprender que por necesidad)

Descargué los artilugios necesarios y en un día estuvo listo el invento. Un par de intentos y la base de datos de Access estaba exportada. Una línea de código cambiada y la página funcionando igual que antes.

Vale, pues ahora la subo al servidor. Genero el script ese con todos los Create Table y los Insert lo ejecuto, pongo el nuevo código y todo funciona de maravilla a excepción de lo del los "Nuevos". Ningún Título aparece marcado.
La razón de esto es la siguiente.
Al exportar de Access a MySQL, el campo (Si/No) se convierte en un TinyInt y los valores Si/No son sustituidos por -1/0. De todas formas true es -1 de modo que las cosas seguian funcionando en mi ordenador.
El problema fue al "subir los datos al servidor". El -1 se transformó en 1
If Nuevo...
ya no funcionaba. Ahora tenía que poner
If Nuevo = 1...

Es una molestia menor que perfectamente puedo asumir, pero alguien podría aclararme este tema. Tengo otras páginas que también acabaría pasando a MySQL y preferiría evitar este tipo de "sobresaltos".
¿Pasan mas "cosas raras"?


Un saludo
Tony.G
  #2 (permalink)  
Antiguo 14/09/2007, 08:52
Avatar de Laforge  
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 174
Antigüedad: 19 años, 5 meses
Puntos: 2
Re: De Access a MySQL, de localhost al servidor web. Aventuras de un campo booleano

...la verdad es que hay que ir con cuidado con los tipos de datos al hacer este tipo de migraciones. Podría ser que te ocurriese con algún otro tipo de campo que, de alguna forma, en la definición MySQL no entendiera a qué tipo de datos se refiere y lo que hará automáticamente es convertir el campo al tipo de datos que más se acerque en función del contenidor de cada uno de los registros.

Entiendo que ahora tu campo 'Nuevo' es TyniInt y contiene valores 0 y 1. Si es así, no tendrás ningún problema para ejecutar el siguiente script:

ALTER TABLE Titulo MODIFY Nuevo BOOL;

Esto te cambiará el tipo de datos de TinyInt a Booleano y podrás utilizar, de nuevo, el If Nuevo then ....

Saludos
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
  #3 (permalink)  
Antiguo 20/09/2007, 10:30
Avatar de TonyG  
Fecha de Ingreso: mayo-2005
Mensajes: 34
Antigüedad: 19 años
Puntos: 1
Re: De Access a MySQL, de localhost al servidor web. Aventuras de un campo booleano

Cita:
Iniciado por Laforge Ver Mensaje
ALTER TABLE Titulo MODIFY Nuevo BOOL;
Por alguna razón desconocida no funciona. No da error, pero no cambia el tipo de los datos.

He decidido no complicarme mas. Dejo el campo como numérico. He cambiado los -1 por 1 en la base de datos local y he cambiado un par de lineas de código.
Ahora los nuvos son 1 y los otros 0. Se acabaron los problemas.


Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:49.