![]() |
Vistas con Firebird
Hola a tod@s.
He estando comparando consultas con el IBManager y he optenido mejor respuesta con las vistas que con las consultas directa a una tabla. El problema que se me plantea es que al hacer un insert en la vista he introduzco el codigo del cliente, no me aparecen sus datos en los DBEdit hasta que hago un post, ya que los datos los lee de la tabla de clientes que esta agregada con un LEFT JOIN. Alguien me podria echar una mano? La vista en cuestion en la siguiente: CREATE VIEW VER_GES_CAB_PEC ( EMPRESA, EJERCICIO, CANAL, SERIE, TIPO_DOC, NUMERO, FECHA, S_PEDIDO, S_FECHA, TERCERO, TERCERO_NOMBRE, TERCERO_TITULAR, TERCERO_ZONA, TERCERO_GRUPO, TERCERO_PROVINCIA, TERCERO_DNI, TERCERO_TIPO, TERCERO_MODO_IVA, DIRECCION, DIRECCION_TITULO, DIRECCION_POBLACION, DIRECCION_CP, DIRECCION_PROVINCIA, DIRECCION_PAIS, FPAGO, AGENTE, TRANSPORTISTA, DIVISA, TARIFA, PORTES, PORTES_TIPO, GASTOS, P_DTO_FINAN, FECHA_ENTREGA, R_FENTREGA, MODO_IVA, NOTAS, TOTAL, CAMPANYA, CAMPANYA_TITULO, ESTADO, USUARIO, MARCA, BULTOS, KILOS, IMPRESO, EMAIL) AS SELECT FIRST 1 SKIP 25 GES_CAB_DOCUMENTOS.EMPRESA, GES_CAB_DOCUMENTOS.EJERCICIO, GES_CAB_DOCUMENTOS.CANAL, GES_CAB_DOCUMENTOS.SERIE, GES_CAB_DOCUMENTOS.TIPO_DOC, GES_CAB_DOCUMENTOS.NUMERO, GES_CAB_DOCUMENTOS.FECHA, GES_CAB_DOCUMENTOS.S_PEDIDO, GES_CAB_DOCUMENTOS.S_FECHA, GES_CAB_DOCUMENTOS.TERCERO, TER_CLIENTES.NOMBRE, TER_CLIENTES.TITULAR, TER_CLIENTES.ZONA, TER_CLIENTES.GRUPO, TER_CLIENTES.PROVINCIA, TER_CLIENTES.DNI, TER_CLIENTES.TIPO, TER_CLIENTES.MODO_IVA, GES_CAB_DOCUMENTOS.DIRECCION, TER_CLIENTES_DIR.DIRECCION, TER_CLIENTES_DIR.POBLACION, TER_CLIENTES_DIR.CP, TER_CLIENTES_DIR.PROVINCIA, TER_CLIENTES_DIR.PAIS, GES_CAB_DOCUMENTOS.FPAGO, GES_CAB_DOCUMENTOS.AGENTE, GES_CAB_DOCUMENTOS.TRANSPORTISTA, GES_CAB_DOCUMENTOS.DIVISA, GES_CAB_DOCUMENTOS.TARIFA, GES_CAB_DOCUMENTOS.PORTES, GES_CAB_DOCUMENTOS.PORTES_TIPO, GES_CAB_DOCUMENTOS.GASTOS, GES_CAB_DOCUMENTOS.P_DTO_FINAN, GES_CAB_DOCUMENTOS.FECHA_ENTREGA, GES_CAB_DOCUMENTOS.R_FENTREGA, GES_CAB_DOCUMENTOS.MODO_IVA, GES_CAB_DOCUMENTOS.NOTAS, GES_CAB_DOCUMENTOS.TOTAL, GES_CAB_DOCUMENTOS.CAMPANYA, EMP_CAMPANYAS.TITULO, GES_CAB_DOCUMENTOS.ESTADO, GES_CAB_DOCUMENTOS.USUARIO, GES_CAB_DOCUMENTOS.MARCA, GES_CAB_DOCUMENTOS.BULTOS, GES_CAB_DOCUMENTOS.KILOS, GES_CAB_DOCUMENTOS.IMPRESO, GES_CAB_DOCUMENTOS.EMAIL FROM GES_CAB_DOCUMENTOS LEFT JOIN TER_CLIENTES ON (GES_CAB_DOCUMENTOS.EMPRESA = TER_CLIENTES.EMPRESA) AND (GES_CAB_DOCUMENTOS.TERCERO = TER_CLIENTES.CODIGO) LEFT JOIN TER_CLIENTES_DIR ON (GES_CAB_DOCUMENTOS.EMPRESA = TER_CLIENTES_DIR.EMPRESA) AND (GES_CAB_DOCUMENTOS.TERCERO = TER_CLIENTES_DIR.CLIENTE) AND (GES_CAB_DOCUMENTOS.DIRECCION = TER_CLIENTES_DIR.CODIGO) LEFT JOIN EMP_CAMPANYAS ON (GES_CAB_DOCUMENTOS.EMPRESA = EMP_CAMPANYAS.EMPRESA) AND (GES_CAB_DOCUMENTOS.CAMPANYA = EMP_CAMPANYAS.CODIGO) WHERE ( (GES_CAB_DOCUMENTOS.TIPO_DOC = 'PEC') ); Como informacion de los tiempos en las consultas, los resultados son: select * from VER_GES_CAB_PEC where EMPRESA = 2 and EJERCICIO = 2003 and CANAL = 1 and SERIE = 'B' Preparar : 361 Ejecutar : 140 Tiempo promedio : 6,36 ms. -- select * from ges_cab_documentos where EMPRESA = 2 and EJERCICIO = 2003 and CANAL = 1 and SERIE = 'B' and TIPO_DOC='PEC' Preparar : 451 Ejecutar : 210 Tiempo promedio : 9,55 ms. -- Osea que la vista es mas rápida que la consulta a la tabla. Será seguramente por el SELECT FIRST 1 SKIP 25. Un saludo. |
Okii
Usted lo ha dicho, solo te desplegará los primeros 25 registros, es por eso que es más rápido....
|
La franja horaria es GMT +2. Ahora son las 11:04:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi