| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | |
 | 
26-06-2008, 21:01:35
| | Gran Participación en el Foro | | Registrado: sep 2006 Posts: 170
| | Mostrar Registros por Selección Hola, tengo un problemita quiero mostrar en la grilla especificamente un MSHFlexGrid un solo dato que es el mas reciente de acuerdo a la fecha: por ejemplo tengo en la base de datos de Access esto registros
01/07/1997
01/01/1998
01/07/1998
01/01/1999
01/07/1999
01/01/2000
01/07/2000
01/01/2001
01/07/2001
.
.
.
01/07/2007
01/07/2008
La idea es que siempre me muestre en la grilla los registros que cumplan con la condición mas recientes para este caso me mostraria solo los de la fecha 01/07/2007, si el usuario como estamos en el mes de Junio del 2008 entonces el registro de 01/07/2008 no se cumple ya que ese mes todavia no llega, si el usuario agrega otro registro que sea una fecha mas reciente 01/07/2008 pues estonces estos registros no son necesarios que me los muestre hasta que no se cumpla la condición.
si no me explique diganlo para ser mas amplio en la explicación..
Hago mi consulta asi: Código: rs.Open "SELECT * FROM RamasIMSS WHERE RamasFecha = (SELECT MAX(RamasFecha) FROM RamasIMSS)", cnn, adOpenStatic, adLockOptimistic Con este codigo me muestra siempre el archivo de la fecha mas reciente, y quiero que me muestre solo en este caso la fecha del 01/07/2007
__________________
El exito no es un milagro, es una Recopensa
| 
26-06-2008, 21:55:04
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Re: Mostrar Registros por Selección Código: rs.Open "SELECT * FROM RamasIMSS WHERE RamasFecha <= #" & Date & "# And RamasFecha = (SELECT MAX(RamasFecha) FROM RamasIMSS)", cnn, adOpenStatic, adLockOptimistic ¿Qué tal si usas esta SQL? | 
26-06-2008, 21:59:42
| | Gran Participación en el Foro | | Registrado: sep 2006 Posts: 170
| | Re: Mostrar Registros por Selección no me muestra NADA
__________________
El exito no es un milagro, es una Recopensa
| 
27-06-2008, 09:37:44
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Re: Mostrar Registros por Selección ¿Acertaremos ahora? Código: rs.Open "SELECT * FROM RamasIMSS WHERE RamasFecha <= #" & Format(Date, "mm/dd/yyyy") & "# And RamasFecha = (SELECT MAX(RamasFecha) FROM RamasIMSS)", cnn, adOpenStatic, adLockOptimistic | 
27-06-2008, 14:01:49
| | Gran Participación en el Foro | | Registrado: sep 2006 Posts: 170
| | Re: Mostrar Registros por Selección No, Sigue sin mostrar nada, de hecho lo coloque como me sugeristes en el ultimo post que escribistes pero sin mostrar nada...
Que estaremos haciendo mal... Código: If rs.State = 1 Then rs.Close
rs.Open "SELECT * FROM RamasIMSS WHERE RamasFecha <= #" & Format(Date, "mm/dd/yyyy") & "# And RamasFecha = (SELECT MAX(RamasFecha) FROM RamasIMSS)", cnn, adOpenStatic, adLockOptimistic
rs.Requery 1
Call MostrarRamasdelIMSS(GrillaRamasIMSS)
Contador1 = 1
SSTab2.Tab = 0
While rs.EOF = False
GrillaRamasIMSS.TextMatrix(Contador1, 0) = rs.Fields("RamasID")
GrillaRamasIMSS.TextMatrix(Contador1, 1) = Format(rs.Fields("RamasFecha"), "dd/MM/yyyy")
GrillaRamasIMSS.TextMatrix(Contador1, 2) = rs.Fields("RamasCocepto")
GrillaRamasIMSS.TextMatrix(Contador1, 3) = Format(rs.Fields("RamasTrabajador"), "#,##0.0000")
GrillaRamasIMSS.TextMatrix(Contador1, 4) = Format(rs.Fields("RamasPatron"), "#,##0.0000")
GrillaRamasIMSS.TextMatrix(Contador1, 5) = Format(rs.Fields("RamasLimite"), "#,##0.0000")
Contador1 = Contador1 + 1
rs.MoveNext
Wend
__________________
El exito no es un milagro, es una Recopensa
Última edición por El_Principiante fecha: 27-06-2008 a las 14:38:20.
| 
27-06-2008, 17:38:38
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Re: Mostrar Registros por Selección Bueno, bueno... Está claro que si uno no puede fiarse de lo que uno improvisa... ¡como para fiarse de lo que improvisan otros!!!
Quise seguir tu principio de (SELECT MAX(RamasFecha) FROM RamasIMSS) y ahora, pensándolo un poquito..., veo que si le digo por una parte que me tome el valor máximo y por otra que me tome hoy como fecha máxima, lo lógico es que no me seleccione ninguna si existe una sola fecha mayor que hoy... Lógico...
Al ver la lista de fechas que pones en tu primer post, se aprecia claramente que sólo hay un registro para cada fecha, lo cual despista lo suyo... Pero cuando escribes "La idea es que siempre me muestre en la grilla los registros que cumplan con la condición mas recientes para este caso me mostraria solo los de la fecha 01/07/2007", me hace suponer que es que tienes varios registros en cada fecha, y quieres ver TODOS los registros introducidos en la fecha última que no sobrepase a la fecha de la consulta...
Y yendo al grano, para poder tomar la fecha máxima y que no sea posterior a hoy... no se me ocurre la SQL que reúna ambas condiciones... Y tiene que ser sencilla, pero no caigo.
Y como es válido el principio de que no siempre lo óptimo es mejor que lo bueno, vamos a ver si conseguimos que se te presenten los registros que quieres presentar: Código: Dim dFecha As Date
dFecha = Date
Apertura:
If rs.State = 1 Then rs.Close
rs.Open "SELECT * FROM RamasIMSS WHERE RamasFecha = #" & Format(dFecha, "mm/dd/yyyy") & "#", cnn, adOpenStatic, adLockOptimistic
if rs.RecordCount = 0 Then
dFecha = dFecha - 1
Goto Apertura
endif
rs.Requery 1
Call MostrarRamasdelIMSS(GrillaRamasIMSS)
Contador1 = 1
SSTab2.Tab = 0
While rs.EOF = False
GrillaRamasIMSS.TextMatrix(Contador1, 0) = rs.Fields("RamasID")
GrillaRamasIMSS.TextMatrix(Contador1, 1) = Format(rs.Fields("RamasFecha"), "dd/MM/yyyy")
GrillaRamasIMSS.TextMatrix(Contador1, 2) = rs.Fields("RamasCocepto")
GrillaRamasIMSS.TextMatrix(Contador1, 3) = Format(rs.Fields("RamasTrabajador"), "#,##0.0000")
GrillaRamasIMSS.TextMatrix(Contador1, 4) = Format(rs.Fields("RamasPatron"), "#,##0.0000")
GrillaRamasIMSS.TextMatrix(Contador1, 5) = Format(rs.Fields("RamasLimite"), "#,##0.0000")
Contador1 = Contador1 + 1
rs.MoveNext
Wend | 
27-06-2008, 18:31:22
| | Gran Participación en el Foro | | Registrado: sep 2006 Posts: 170
| | Re: Mostrar Registros por Selección Perdon que Insista Amigo J.M.Movilla pero usted se merece un Monumento a la Sabiduria.
Me Funciona perfectamente solo una cosa mas me podria explciar Lo de la Función Goto Apertura quiero suponer que encuentra la fecha mas reciente y disminuye uno hasta encontrar la condición que se le pide.
Muchisisisisisisisisisisisisismas Gracias. por su ayuda.
__________________
El exito no es un milagro, es una Recopensa
| 
28-06-2008, 10:04:30
|  | Administrador | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.490
| | Re: Mostrar Registros por Selección Pues muchas gracias a ti por tus enfáticas alabanzas... Te advierto que lo que tú ves como grande no es nada más que fruto de tenerlo muy encima de tus ojos... porque la cosa no tiene mérito. Al revés, es una salida un tanto "chapucera" para saldar mi desconocimiento de una cláusula que tiene que existir para hacerlo directamente con SQL... pero que no hay forma de que yo la recuerde.
Y lo del "Goto Apertura" no es ni más ni menos que eso que tú apuntas: Buscamos si hay registros hoy; si no hay ninguno, reduzco la fecha de búsqueda (dFecha) en un día y vuelvo a buscar con esa nueva fecha; es decir, miro a ver si hay registros con fecha de ayer; si continúa sin haber registros, busco en anteayer... Y cuando hay algún registro, sale a presentarlo... Pero insisto en que es una pequeña chapucerilla... a falta de una buena fórmula. | | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 22:08:27.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |