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

Es la session, el SQL o mi abuela?

Estas en el tema de Es la session, el SQL o mi abuela? en el foro de ASP Clásico en Foros del Web. Hola a Tod@s! Bueno, tengo un problemilla que no logro identificar y quisiera ver si a alguien se le ocurre qué puede estar pasando. Resulta ...
  #1 (permalink)  
Antiguo 19/11/2008, 08:02
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Información Es la session, el SQL o mi abuela?

Hola a Tod@s!
Bueno, tengo un problemilla que no logro identificar y quisiera ver si a alguien se le ocurre qué puede estar pasando.
Resulta que tengo un programa hecho en asp, el cual por exigencia del cliente debería levantar todos los datos históricos de un programa anterior. La estructura de base de datos no era la misma, ni parecida siquiera, pero para no hacer 4 programas diferentes (Si, el histórico lo tiene dividido en 3! ) se me ocurrió replicar las bases de datos, y acomodar dentro de las db (réplica de la mía que está funcionando perfectamente con la programación).
Hice esto de replicar las bases y no duplicar las tablas porque las administraciones viejas no tienen que estar disponibles para todos los usuarios, si no era facilísimo realmente! Pero bueno, mi vida no es simple ultimamente

El punto es: Teniendo en cuenta que el usuario que se conecta por ODBC a la primera base de datos, tiene permisos para trabajar en las otras, en lugar de generar cuatro ODBC (Una para cada base) hice uso de la posibilidad que brinda SQL de armar las consultas como Database.dbo.Tabla.Campo (Feo, pero efectivo)
De este modo, cargando en una Session el nombre de la db en la que se debe leer mientras se desee trabajar con determinada administración, salvaba el problema y todo debería funcionar correctamente. Pero claro, no estaría por aquí de haber funcionado bien no?

Y no es que de error, lo curioso, que no puedo resolver aún, es que parece funcionar. Tengo justamente un listado de créditos otorgados al cual le aplico unos cuantos filtros, son más de 3000 registros por tabla, así que por más paginado que lo tenga, buscar uno en particular leyendo la lista sería horrible!
Cuando pido el listado inicialmente, lo pido sin filtro alguno y que cargue la primera página. Este listado, según la administración que elijo en el login, coincide perfectamente con la información que contiene cada tabla, el problema aparece con los filtros.

Copio un fragmento de código, aunque lo he mirado varias veces ya.
Código PHP:
'Esto al principio de la página, luego del javascript que redirige al login si se cayó la sesión.
Usr=Session("Nombre")
BASE=Session("Datab")

'
Aquí tomo los valores del form para filtrar los datos
F_Fdesde
=Request.Form("Filtro_Fdesde")
F_Fhasta=Request.Form("Filtro_Fhasta")
F_Mutual=Request.Form("FiltroMutual")
F_Estado=Request.Form("FiltroEstado")
F_Cliente=Request.Form("FiltroNrocli")
F_Manda=Request.Form("FiltroMandante")
F_Monto=Request.Form("FiltroMonto")
'La condición inicial es la que omite anulados, porque no se quieren en el listado
Condicion="WHERE "&BASE&".PRESTAMOS.Estado<> 6 "

If F_Fdesde<>"" And F_Fhasta<>"" Then
    Condicion=Condicion&" AND "&BASE&".PRESTAMOS.FechaEcred BETWEEN "&F_Fdesde&" AND "&F_Fhasta
End If
If F_Mutual<>"" Then
    Condicion=Condicion&" AND "&BASE&".PRESTAMOS.NroMutual="&F_Mutual
End if
If F_Estado<>"" Then
    Condicion=Condicion&" AND "&BASE&".PRESTAMOS.Estado="&F_Estado
End if
If F_Cliente<>"" Then
    Condicion=Condicion&" AND "&BASE&".PRESTAMOS.NroCte="&F_Cliente
End If
If F_Manda<>"" Then
    Condicion=Condicion&" AND "&BASE&".PRESTAMOS.NroMan="&F_Manda
End If
If F_Monto<>"" Then
    Condicion=Condicion&" AND "&BASE&".PRESTAMOS.DebitoMandan>="&F_Monto
End If

'
Finalmentela dichosa consulta
Set Rspres
=Server.CreateObject("Adodb.Recordset")
Rspres.ActiveConnection=ConFev
Rspres
.Source="SELECT NroCte, NroCredito, EnMano, Estado, Nombre, Apellido, FechaEcred FROM "&BASE&".PRESTAMOS INNER JOIN "&BASE&".CLIENTES ON CONVERT(varchar, "&BASE&".PRESTAMOS.NroCte)="&BASE&".CLIENTES.NroDoc "&Condicion&" ORDER BY FechaEcred DESC"
Rspres.CursorType=AdOpenKeyset
Rspres
.LockType=AdLockOptimistic
Rspres
.Open()
If 
Not Rspres.BOF Then
    Tablapres
=Rspres.GetRows 'Carga la consulta en un vector
'
Y buenoaquí el tema de la paginación y lo manejo con GetRows para hacer menos viaje al server :cool:! 
Entonces... ¿Quién tendrá la culpa? Porque el listado sin filtrar lo tira bien, el tema es cuando aplico cualquier filtro, me muestra los datos de la base por defecto del ODBC.

Bueno, la hice larga esta vez, si alguien tiene una idea...
Gracias de antemano a tod@s!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 19/11/2008, 09:19
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Es la session, el SQL o mi abuela?

Ok Ok!
Ni la Session, Ni el SQL, ni mi abuela (pobre, siempre la meto problemas)
Soy culpable de todos mis problemas, el mundo y la tecnología no conspiran contra mi sino yo contra ellos!

Bueno, lejos del teatro... Tema solucionado, si a alguien le sirvió saber que se puede hacer esto y manejar varas db con una sola conexión, buenísimo!

Cambié el form de POST a GET para verificar el contenido de las variables, y me di cuenta que no había colocado el primer ítem en los selects que tengo (filtro de cliente, filtro por mutual y otros más) sin tomar en cuenta que así me estaba tomando como seleccionados los valores por defecto de cada uno de ellos.

Una vez colocado el clásico <option value="">::Seleccionar::</option> se solucionó mi gran dilema

No lo digan! no lo digan! ya sé... esta vez me pasé de viva
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #3 (permalink)  
Antiguo 19/11/2008, 11:28
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Es la session, el SQL o mi abuela?

te recomiendo esta funcion. te sirve para cuando estes probando , revisar todas las variables que estan pasando. Saludos

Cita:
sub imprime_variables_del_form()
dim x
for each x in Request.Form
response.write "<strong>" & x & "</strong> = " & Request.Form(x) & "<br/>"
Next
end sub

Última edición por Muzztein; 19/11/2008 a las 11:36 Razón: CGC
  #4 (permalink)  
Antiguo 19/11/2008, 13:55
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Respuesta: Es la session, el SQL o mi abuela?

Independientemente de lo simple que era el problema, veo que solo te faltaba tranquilizarte y ponerte a debuguear con cuidado verinchi , fue muy entretenido leer tu post
  #5 (permalink)  
Antiguo 19/11/2008, 20:21
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Respuesta: Es la session, el SQL o mi abuela?

se podra realiza una novela...... esta muy entretenido

el personaje que me gusto mas... la abuelita

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #6 (permalink)  
Antiguo 20/11/2008, 06:54
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Es la session, el SQL o mi abuela?

Tal cual!
Con este nuevo talento que estoy generando, creo que me voy a dedicar a la literatura!!!
Tal vez publique un muy buen libro que podría titularse "Aventuras y Desventuras del desarrollo en ASP"
Nada, sigo divagando!
Muzztein, mil gracias por tu sugerencia, es verdad... esa función está buenísima para cuando no tengo muy claro lo que está llegando del form. YA la paso a mi biblioteca!

Saludos a todos!
__________________
Why can't we not be sober?
www.partitorium.com.ar
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:13.