Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Builder4 / Interbase6 ... problemas de tipo de dato

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Builder4 / Interbase6 ... problemas de tipo de dato Responder citando

Tengo montado un proyecto en Interbase6 y al hacer el Interface de usuario bajo Builder4 tengo bastantes problemas de "tipos de dato". Al enganchar el TTABLE no me coge ni los campos de tipo TIME, DATE, ni algunos NUMERIC. Los NUMERIC los sustituyo por INTEGER, los DATE por TIMESTAMP y todo va bien, ¿pero qué hago con los TIME? hay algún tipo de dato para poder hacer lo mismo que con DATE <-> TIMESTAMP o tengo que hacerlo con un simple INTEGER? Gracias Rolling Eyes
_________________
- No SaLVaTiOn, No FoRGiVeNeSS -
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hola,

No dices que version de sql dialect estas usando con IB6, para tu informacion con BCB 4 si utilizas el BDE para acceder a IB6 solo soporta el dialecto 1 de sql. Creo que la ultima version del BDE disponible si lo soporta.

Saludos,
Volver arriba
Mensaje    Asunto: UoOoHh! Responder citando

Pues no me había dado por fijarme en eso Laughing voy a probarlo. Muchas gracias!! >: )
_________________
- No SaLVaTiOn, No FoRGiVeNeSS -
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Si como bien dice BITMAN, tienes que tener las siguientes cosas en cuenta, para usar "Dialect 3" debes utilizar acceder directamente al servidor Interbase o Firebird, es decir, a traves de por ejemplo los componentes IBX (Interbase Express), si por el contrario te decantas por usar BDE, entonces da igual que estes en Builder 4 o Builder 6, el BDE no soporta el Dialect 3, así que no te podrás benificar de los tipos DATE y TIME, de forma separada.

Mira yo tengo algunos programas que usan BDE y Dialect 1, y te sugiero lo siguiente, para almacenar las fechas, usa el tipo DATE, aunque el te ponga un DATETIME no vas a tener ningun problema, si luego decides pasar a Dialect 3, la forma de trabajar con ellas en Builder es usando el metodo DateToStr y StrToDate, para convertir las fechas a String y viceversa, de forma que cuando trabajes con el componente TTable, le digas que es de tipo String. Ejemplo

Código:
 
[b]// Lectura de una campo fecha de una tabla[/b]
   TDateTime fecha=StrToDate(Database->Tabla->FieldByName("Fecha")->AsString);
[b]//  Almacenamiento de un campo fecha en una tabla[/b]
   TDateTime fecha=Date();
   Database->Tabla->FieldByName("fecha")->AsString=DateToStr(fecha);


Para trabajar con los campos TIME, como el BDE no soporta TIME directamente te sugiero que en vez de trabajar con un tipo TIMESTAMP, uses un VARCHAR(10) o VARCHAR(9). Y la forma de trabajar en biulder es igual que la anterior pero en vez de usar DateToStr y StrToDate, usarías, TimeToStr y StrToTime, que sirven para los mismo pero con TIME.

Una vez hecho esto, no creo que tengas problema en trabajar con estos campos desde Builder 4 usando BDE y si luego quieres pasar a Dialecto 3, pues entonces lo que harías sería exportar todo como 2 scripts uno de DDL y otro de DML. Vamos por ejemplo un script de Definición, CREATE DATABASE, CREATE TABLES, PRIMARY KEYS, FOREIGN KEYS, ETC y otro de Datos, para insertar todos los datos. Pero antes de ejecutar ningun scripts con el servidor Interbase 6, modificas el Script de definición para cambiar el VARCHAR(10) por TIME, el tipo DATE no tienes que cambiarlo por que ya lo soporta realmente el Dialecto 3, y por ultimo tendrías que añadir la linea despues del CREATE DATABASE, que SET DIALECT 3 no recuerdo bien si es esta sentencia, pero puedes consultar la documentación de Interbase, allí estara correctamente indicado.

Por cierto creo recordar que te puedes bajar los componentes IBX e imagino que quizás puedas instalarlos sobre el Builder 4 o 5. En fin, mucha suerte, lo interesante de usar IBX es que accede directamente al servidor, con lo que todo se ejecuta más rapido.

Venga suerte y cualquier duda me la pones por aquí. Por cierto por que querías utilizar Numeric ?

saludos.
Wink
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Esto es una mina! jeje >;) Responder citando

Muchas gracias por todas vuestras respuestas! Lo que finalmente hice fue currarme un procedimiento pasandole tipos de dato Builder4, cambiandolos para Interbase6 utilizando la funcion CAST(), así se terminaron los problemas. De todas formas aunque solo sea por curiosidad quiero ver que pasa probando vuestas soluciones.
SOBRE LO DE NUMERIC: Lo que tengo entre manos es un proyecto de fin de curso, hicimos todo en Interbase y ahora nos obligan a interactuar con Builder sin hacer ningun tipo de retoque en los Scripts de creación de la base de datos, a parte de los problemas con TIME y DATE, algunos campos los declaré como NUMERIC() y Builder4 tampoco me los coge, pero al final con un procedimiento conseguí arreglar todo >Wink
_________________
- No SaLVaTiOn, No FoRGiVeNeSS -
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.