![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TIBquery y campos persistentes en tiempo de ejecucion
Hola, este tema no se si deberia estar aca, pero tiene que ver con una consulta y campos persistentes (o al menos creo que se llaman asi).
Tengo una aplicación que utiliza TIBQuery para cunsultar a una BD Firebird. En tiempo de diseño he creado algunos campos persistentes (propios de la query en cuestion "Fields Editor"). La aplicacion puede consultar a 2 BD distintas, lo cual se selecciona con un radiobutton. En el evento OnClick del radiobutton tengo el siguiente codigo.
Esto funciona perfecto, el problema es que los campos persistentes definidos en tiempo de diseño no se asignan al query creado nuevamente, a pesar que tiene el mismmo nombre. Algun de estos son IBQuery2SUBTOTAL, IBQuery2CANTIDAD, etc. La idea des esto es poder darle un formato "lindo" al campo en cuestión, lo que defino en diseño así:
Como puedo resolver esto? Existe alguna forma de asignar los campos persistentes, después de volver a crear al query. Nota: Anteriormente solo cambiaba la BD del query despues de cerrarla, pero al volver abrirla me arrojaba un error, por eso decidí destruir el componente y volver a crearlo. Espero me puedan ayudar. |
#2
|
|||
|
|||
Hola...
Tendrías que crear de nuevo los campos un tiempo de ejecución. Para hacer lo que deseas, puedes hacerlo en tiempo de ejecución (sin crear los campos persistente en tiempo de diseño), más o menos así:
Saludos... |
#3
|
|||
|
|||
No hay caso, no logro resolver esto.
Una cosa que me percaté es que al destruir el query, no se destruyen los campos persistentes. Una idea... podré volver asignar esos campos al query nuevo creado en ejecución? como lo hago? Ayuda porfa. |
#4
|
|||
|
|||
Hola...
¿Leiste las recomendaciones que te hice? Saludos... |
#5
|
|||
|
|||
claro que si, pero no logro que esto funcione.
Recuerda que en el evento onclick del radiobutton, destruyo el query. En ese mismo evento destruyo los campos persistentes y vuelvo a crearlos con las propiedades correctas, sin embargo, me arroja un error que no concuerda el tipo de dato... espera BCD y es wildstring, en un campo de varchar de 200.
Además tengo que hacerlo con cada campo, y son varios... tiene que existir una mejor forma de hacerlo. |
#6
|
|||
|
|||
Hola...
Leyendo mejor tu duda, veo que estás haciendo mal algunas cosas. Primero, veo que destruyes el objeto ibquery2 y creas un nuevo objeto y lo asignas a la variable ibquery al cual le pones como nombre 'ibquery2'. Esto no significa que automáticamente los campos persistentes van a reconocer el nuevo objeto como padre. Y todo esto sin contar con el detalle de los tipos de campos. Para lograr lo que deseas, podrías hacer algo como:
Si las tablas son exactamente iguales en ambas bases de datos, no deberías tener problemas. Ahora, esto nunca lo he hecho así y el código que te pongo no lo he probado. Saludos... |
#7
|
|||
|
|||
Estimado, sigo sin poder resolver esto... tal como tu lo expones (en teoría debería funcionar), pero no es así, me arroja un error a pesar que las tablas son identicas.
Finalmente estoy tratando de crear los campos persistenes en ejecución con el siguiente copdigo (en diseño no existen), por ejemplo para algunos de los campos persistentes
El error que me arroja dice así: Para el campo Notas: field 'notas' expecting: BCD actual WideString Para el campo Noc: field 'noc' expecting: BCD actual: Largeint asi sucecivamente para el resto de los campos. Como puedo resolver esto? Espero me puedan ayudar. |
#8
|
||||
|
||||
Hola.
Te pongo un ejemplo con tres tipos de campos que tal vez te sirva de guía:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
|||
|
|||
Vamos mejorando, todos los campos persistentes de tipo string e integer esta funcionando bien, pero los de tipo float, me arroja el siguiente error
Ibquery2: Type mismatch for firld 'CANTIDAD', expecting: FLoat actual BCD' el código que utiliza está así
Que es BCD?? Como lo soluciono? Gracias |
#10
|
|||
|
|||
Hola...
Yo sigo insistiendo que no necesitas crear los campos así en tiempo de ejecución. El componente TIBQuery ya crea los campos al momento de ejecutar la consulta, lo único que tienes que hacer es configurar los campos que quieras:
Saludos... |
#11
|
||||
|
||||
Cita:
Para que estén todos los campos disponibles. Hay que acceder con FieldByName como bién mostras en tu mensaje anterior y no por el nombre de variable del campo persistente. A mí entender es un detalle sin importancia y no amerita escribir tanto código, pero como ví que antes lo mencionaste y se continuó por el lado de la creación manual... Saludos. ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#12
|
|||
|
|||
Eso era todo!!
Gracias por su ayuda, esta funcionando perfecto. Salu2 |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Creando campos en tiempo de ejecucion | edgwin | Conexión con bases de datos | 7 | 31-03-2009 18:08:14 |
Creación de campos en tiempo de ejecución | fjcg02 | OOP | 5 | 27-08-2008 08:05:35 |
Problema con DBGRiD y campos en Tiempo de ejecución | EITB | OOP | 0 | 14-10-2004 17:59:17 |
Añadir campos persistentes en tiempo ejecucion | Firibiri | Conexión con bases de datos | 3 | 22-12-2003 11:43:08 |
Agregando campos en tiempo de ejecucion | Markoz | Firebird e Interbase | 3 | 31-10-2003 02:32:23 |
![]() |
|