Foros del Web » Programando para Internet » ASP Clásico »

Esta bien hecho esto?, necesito una opinión

Estas en el tema de Esta bien hecho esto?, necesito una opinión en el foro de ASP Clásico en Foros del Web. Hola, estoy cambiando toda mi aplicación para optimizarla, una de las cosas que estoy haciendo es usar el método getRows, pero para utilizarlo, tnego que ...
  #1 (permalink)  
Antiguo 22/05/2005, 10:14
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Esta bien hecho esto?, necesito una opinión

Hola, estoy cambiando toda mi aplicación para optimizarla, una de las cosas que estoy haciendo es usar el método getRows, pero para utilizarlo, tnego que cambiar algunas cosas. La que particularmente me interesaría uqe me dijeran si esta bien o mal llo que estoy haciendo es esta:
En un formulario tengo toda la lista de productos de un negocio, cada producto tiene un checkbox, y cada producto que es seleccionado lo puede empezar a modificar. Ese formulario lo procesaba antes de esta forma:

set RS = Server.CreateObject("ADODB.RecordSet")
Rs.Open "Productos", conexion

For each Id in Request.Form("products")
RS.Filter= "IdProd = "&Id&""

----- muestro todos los campos ----

next

RS.Close
set RS = nothing

Ahora, lo que estoy haciendo es esto: primero meto en un array todos los valores que me pasa por la coleccion Request.Form("products"). Lo segundo que hago es armar una cadena interior SQL (la verdad que no se como llamarle) para que me seleccione aquellos productos cuyos Id's sean iguales los pasados por la cadena interior. El código resumido sería algo así:

arr = split(Request.Form("products"),",")
sub_SQL = join(arr," OR IdProd = ")

SQL = "SELECT * FROM Productos WHERE IdProd = "&sub_SQL&""
set init_RS = Server.CreateObject("ADODB.RecordSet")
init_RS.Open SQL, conexion

RS = init_RS.getRows()

RS.Close
set RS = nothing

Espero que puedan decirme que método les parece mejor, porque cambié recién un cuarto de la aplicación, y me gustaría antes de seguir avanzando en esto, leer sus comentarios.
Les dejo un saludo y mcuhas gracias como siempre.
  #2 (permalink)  
Antiguo 22/05/2005, 11:20
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Es una sola tabla?? si es asi, ninguno de los metodos me parecen correctos, pero el segundo creo que es peor, ya que haces una subconsulta de datos que ya tienes.

IDProductos = Request.Form("products")

Este es un arreglo dentro de una forma no?
Por lo tanto cuando asignes esto a la variable IDProductos, deberas tener un string separado por comas con los IDs de los productos en cuestion.

IDProductos sera = "4, 3, 7, 10, 255"

No es necesario hacer ningun arreglo, puedes utilizar una sola sentencia con una clausula IN


SQL = "SELECT * FROM Productos WHERE IdProd IN( "&IDProductos&")"

Asunto resuelto.

Ahora hablando de eficientar los recursos en el servidor, es pesimo hacer una seleccion del tipo "*" pues cuando haces esto, tu aplicacion tendra que barrer toda la tabla y determinar desde el tipo de dato de cada campo, hasta todos los campos que tienes en esa tabla. Lo aconsejable es seleccionar explicitamente los campos que quieras.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 22/05/2005, 13:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Gracias U Goldman!, yo estaba seguro que obviamente se podía mejorar eso, porque justamente como decís vos, estaba haciendo algo sobre datos que ya tenía, lo cuál no era para nada óptimo. Otra cosa que te quería comentar, es que nunca utilizo el "*", sino que para poner un código en el post lo utilizo para hacerlo más simple de leer el código. Igual gracias por tu consejo.
Un saludazo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:46.