Optimización de Codigo

07/06/2006 - 00:34 por Rodolfo Menéndez | Informe spam
Hola amigos!

Aca esta mi pregunta.

He estado revisando el codigo de un software hecho en VB6 que lee
informacion de una base de SQL, hay un reporte en el software que se tarda
casi 25 minutos en generarse y la maquina se quedan paralizada.. .pues
estuve viendo el codigo y vi lo siguiente.

El reporte trata de el detalle de unas guias.. es master-detalle, el punto
es que al master se le manda cierto filtro, ya que el reporte se hace
semanal y mensual
digamos que se hacen unas 100 guias diarias, y cada una con al menos 1
detalle, algunas hasta 20.

Bueno, aca viene lo de SQL, en la DB no hay vistas creadas.. tons la persona
abre la base con una conexion con rs.open "query" (en la base master)
y luego abre el detalle rs.open "query" (en el detalle) luego saca la info,
cierra el detalle rs.close, y pasa al siguiente registro del master, saca la
key, y otra vez
abre el detalle rs.open "query"(mandando la nueva key), saca la info.. y
vuelve a cerrar..

si el reporte se hace por mes.. imaginen, la verdad que manera ta espantosa
de hacerlo.

yo he trabajado con views, pero tengo una pregunta, hago la view, la
relaciono con otra, y cuando me mueva en la view master, el detalle ya sale
actualizado,
como para no ir abriendo y cerrando la conexion, ya que el hizo eso, porque
el reporte se genera en texto plano, para imprimir en matricial a una mayor
velocidad.

Bueno, espero haberme explicado bien.

De antemano muchas gracias.

Rodolfo Menéndez

Preguntas similare

Leer las respuestas

#1 Maxi
07/06/2006 - 01:48 | Informe spam
Hola, esto no se soluciona con una View ni mucho menos. Yo que vos armo un
Store Procedure que genere la informacion y solo lo llamas una vez desde la
aplacion.
Tambien revisa el tema indices


Salu2

Maxi [Microsoft MVP SQL Server]
Culminis Speaker
www.sqlgurus.org

"Rodolfo Men?ndez" wrote in message
news:
Hola amigos!

Aca esta mi pregunta.

He estado revisando el codigo de un software hecho en VB6 que lee
informacion de una base de SQL, hay un reporte en el software que se tarda
casi 25 minutos en generarse y la maquina se quedan paralizada.. .pues
estuve viendo el codigo y vi lo siguiente.

El reporte trata de el detalle de unas guias.. es master-detalle, el punto
es que al master se le manda cierto filtro, ya que el reporte se hace
semanal y mensual
digamos que se hacen unas 100 guias diarias, y cada una con al menos 1
detalle, algunas hasta 20.

Bueno, aca viene lo de SQL, en la DB no hay vistas creadas.. tons la
persona abre la base con una conexion con rs.open "query" (en la base
master)
y luego abre el detalle rs.open "query" (en el detalle) luego saca la
info, cierra el detalle rs.close, y pasa al siguiente registro del master,
saca la key, y otra vez
abre el detalle rs.open "query"(mandando la nueva key), saca la info.. y
vuelve a cerrar..

si el reporte se hace por mes.. imaginen, la verdad que manera ta
espantosa de hacerlo.

yo he trabajado con views, pero tengo una pregunta, hago la view, la
relaciono con otra, y cuando me mueva en la view master, el detalle ya
sale actualizado,
como para no ir abriendo y cerrando la conexion, ya que el hizo eso,
porque el reporte se genera en texto plano, para imprimir en matricial a
una mayor velocidad.

Bueno, espero haberme explicado bien.

De antemano muchas gracias.

Rodolfo Menéndez

Respuesta Responder a este mensaje
#2 qwalgrande
07/06/2006 - 07:27 | Informe spam
Hola.

No creo que las vistas te vayan a servir de mucho. Observa el resultado
final del informe y prepara una única consulta que devuelva toda la
información. Prueba tu consulta desde Query Analyzer, introduciendo aquí el
formateo de la información si es preciso. A continuación, diseña un código
que no te obligue a tener que abrir el recordset y recorrerlo con un cursor,
sino que directamente lo saque a texto plano.

Como sugerencia, ahí tienes los DTSs, donde puedes elegir tu origen (SQL) y
tu destino (texto plano). Para ver cómo se programaría en VB6 tu DTS, créalo
desde Enterprise Manager y guárdalo como .bas. Tendrás que usar DLLs de sql
server, pero para eso están. Estas DLLs las puedes distribuir junto con tu
aplicación sin problema.

De esta manera, tendrás una única consulta y un mecanismo de exportación a
texto muy muy rápido, es decir, no tendrás un cursor y mucho menos dos.

Alberto López Grande (qwalgrande)


"Rodolfo Menéndez" escribió en el mensaje
news:
Hola amigos!

Aca esta mi pregunta.

He estado revisando el codigo de un software hecho en VB6 que lee
informacion de una base de SQL, hay un reporte en el software que se tarda
casi 25 minutos en generarse y la maquina se quedan paralizada.. .pues
estuve viendo el codigo y vi lo siguiente.

El reporte trata de el detalle de unas guias.. es master-detalle, el punto
es que al master se le manda cierto filtro, ya que el reporte se hace
semanal y mensual
digamos que se hacen unas 100 guias diarias, y cada una con al menos 1
detalle, algunas hasta 20.

Bueno, aca viene lo de SQL, en la DB no hay vistas creadas.. tons la
persona abre la base con una conexion con rs.open "query" (en la base
master)
y luego abre el detalle rs.open "query" (en el detalle) luego saca la
info, cierra el detalle rs.close, y pasa al siguiente registro del master,
saca la key, y otra vez
abre el detalle rs.open "query"(mandando la nueva key), saca la info.. y
vuelve a cerrar..

si el reporte se hace por mes.. imaginen, la verdad que manera ta
espantosa de hacerlo.

yo he trabajado con views, pero tengo una pregunta, hago la view, la
relaciono con otra, y cuando me mueva en la view master, el detalle ya
sale actualizado,
como para no ir abriendo y cerrando la conexion, ya que el hizo eso,
porque el reporte se genera en texto plano, para imprimir en matricial a
una mayor velocidad.

Bueno, espero haberme explicado bien.

De antemano muchas gracias.

Rodolfo Menéndez

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida