Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/11/2008, 08:02
Avatar de verinchi
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