FoxPro/Visual FoxPro - Grilla lento

 
Vista:
sin imagen de perfil

Grilla lento

Publicado por Ruben Dario (57 intervenciones) el 12/11/2014 16:58:39
Buenas Tardes

Como puedo mejorar la velocidad de mi grilla, me tarda como 5 segundos cuando pasa de una celda a otra

Tengo 2 grillas Uno es cabecera y el otro es detalle.

Pongo lo que he escrito en la grilla que hace de cabecera.

Esta programado en el AfterRowColChange


LPARAMETERS nColIndex

*!* ********Comprueba el valor seleccionado en la grilla*********************************************
valuategrid = EVALUATE(this.Columns(1).Controlsource)

***********Creamos consulta para cargar grilla2******************************************************
ok=SQLEXEC(conexion, 'select p.Codigo, p.NumLinea, p.ArticuloCodigo2, p.cantidad, p.bultos, p.dto, p.subtotal ;
from pedidolinea p where p.codigo=?valuategrid ', 'consultita2')
IF ok<0
DO perror
endif
SELECT consultita2
******************************************************************************************************
*****************Unimos arteunica y barras************************************************************
SELECT a.articulo, a.actividad, a.unicaja, p.ArticuloCodigo2, p.codigo ;
FROM temartunico a, consultita2 p WHERE p.ArticuloCodigo2 = a.articulo AND p.codigo=?valuategrid AND a.actividad="MI" ORDER BY p.articuloCodigo2 INTO CURSOR temp3
SELECT temp3
******************************************************************************************************
******Union de las dos consultas para mostrar en Grilla***********************************************
SELECT ROUND(p.Codigo,0) as Codigo, p.NumLinea as Linea, p.ArticuloCodigo2 as Artículo, a.barras as Barras, a.ubicacion as Ubicación, ;
ROUND((p.cantidad/t.unicaja),1) as Bultos, ROUND(p.cantidad,0) as Cantidad, ;
a.nombre as Descripción, p.dto as Descuento, ROUND(p.subtotal,2) as Importe;
FROM temarticulo a, consultita2 p, temp3 t WHERE p.ArticuloCodigo2 = a.codigo AND t.articulo=a.codigo ORDER BY p.numlinea INTO CURSOR temp1
******************************************************************************************************
********Carga la grilla*******************************************************************************
SELECT temp1
GO top
thisform.pageframe1.page1.Grid2.RecordSource="temp1"
******************************************************************************************************
********Calcula los totales***************************************************************************
thisform.calculototales
******************************************************************************************************
********Carga los Comentarios*************************************************************************
ok = sqlexec(conexion,'select codigo, comentario from pedidocabecera where codigo=?valuategrid','pedidocomentario')
IF ok<0
DO perror
endif
SELECT pedidocomentario
thisform.pageframe1.page1.edit1.Value= pedidocomentario.comentario

********Carga los Comentarios extras******************************************************************
ok = sqlexec(conexion,'select codigo, comentex from comentarios where codigo=?valuategrid','pedidocomentario2')
IF ok<0
DO perror
endif
SELECT pedidocomentario2
thisform.pageframe1.page1.edit2.Value= pedidocomentario2.comentex
*******************************************************************************************************
****************Carga las cajas de Textos**************************************************************
ok = sqlexec(conexion,'select pedido_cod, pedido_ope, pedido_date, estado ;
from pedido where pedido_cod= ?valuategrid','tempopedidos')
thisform.pageframe1.page1.text14.Value=tempopedidos.pedido_ope
thisform.pageframe1.page1.text15.Value=tempopedidos.pedido_date

**********SCATTER memvar
**********thisform.Refresh
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Grilla lento

Publicado por Saul (728 intervenciones) el 12/11/2014 18:27:30
Tengo 2 grillas Uno es cabecera y el otro es detalle.

Pongo lo que he escrito en la grilla que hace de cabecera.

Esta programado en el AfterRowColChange

Todo eso lo hacen alli..?? en AfterRowColChange..

Cada vez au pasas de una linea a otra hace corre todas las consultas ??

No se que tratas de hacer, la verdad no mucho le entiendo ..

Pero te doy la idea que deberias usar..

1.- Haz una consulta para cabeceras
2. La cargas al Grid

3.- Cuando reciba el foco AfterRowColChange de cada linea cabecera manda a llamar tu consulta de tu detalle..
(si esto es lo que haces pues verfica tu programación) porque se me hace que redondeas mucho los Select.

4.- Ahora bien si lo que quieres es hacer un tipo Factura y Detalle
Pues llenalo todo afuera y lo mandas a llamar cuando llames el No. de documento, es una unica vez.

Sha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar