 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
[Eraser] Cdt

Registrado: 01 Mar 2003Mensajes: 7
|
Publicado: Sab 01 Mar, 2003 2:02 pm Asunto: Builder4 / Interbase6 ... problemas de tipo de dato |
|
|
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  _________________ - No SaLVaTiOn, No FoRGiVeNeSS - |
|
| Volver arriba |
|
 |
BITMAN Invitado
|
Publicado: Mar 04 Mar, 2003 9:51 am Asunto: |
|
|
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 |
|
 |
[Eraser] Cdt

Registrado: 01 Mar 2003Mensajes: 7
|
Publicado: Mar 04 Mar, 2003 6:17 pm Asunto: UoOoHh! |
|
|
Pues no me había dado por fijarme en eso voy a probarlo. Muchas gracias!! >: ) _________________ - No SaLVaTiOn, No FoRGiVeNeSS - |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Sab 08 Mar, 2003 11:40 am Asunto: |
|
|
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.
 |
|
| Volver arriba |
|
 |
[Eraser] Cdt

Registrado: 01 Mar 2003Mensajes: 7
|
Publicado: Sab 08 Mar, 2003 1:32 pm Asunto: Esto es una mina! jeje >;) |
|
|
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 > _________________ - No SaLVaTiOn, No FoRGiVeNeSS - |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|