Access - Ayuda a un novato...

 
Vista:

Ayuda a un novato...

Publicado por Angel Andres (2 intervenciones) el 12/12/2009 05:14:11
Hola a todos y agradezco desde ya su gran ayuda. Soy estudiante de access y para un trabajo practico que debo hacer tengo la siguiente situación: un cliente puede tener varios pedidos realizados en distintas fechas. Así que tengo un campo fecha_pedido y otro Ultimo_Pedido que puede ser un cuadro Si/No, este último debe estar en sí en el pedido más actual que será el último. Tengo que hacerlo en un botón que ponga automaticamente este condición de todos los registros que son más de 20000 con clientes que tienen más de 100 pedidos. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda a un novato...

Publicado por Lopez (2 intervenciones) el 12/12/2009 15:10:11
Lo mas facil es irte directamente al ultimo registro y activar la casilla Ultimo_Pedido en Sí, el código para el botón quedaria así:

Private Sub Boton_Click()

DoCmd.GoToRecord acDataForm, "Formulario", acLast
Me.Ultimo_Pedido = True

End Sub

Usando macros tambien se puede obtener el mismo resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda a un novato...

Publicado por Lopez (2 intervenciones) el 12/12/2009 15:11:37
Lo mas facil es irte directamente al ultimo registro y activar la casilla Ultimo_Pedido en Sí, el código para el botón quedaria así:

Private Sub Boton_Click()

DoCmd.GoToRecord acDataForm, "Formulario", acLast
Me.Ultimo_Pedido = True

End Sub

Usando macros tambien se puede obtener el mismo resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda a un novato...

Publicado por Angel Andres (2 intervenciones) el 12/12/2009 22:24:08
Gracias amigo por tu ayuda, pero este código sólo pone en sí al último registro ingresado, no a los últimos pedidos de cada cliente. Lo que tengo que logar es qué el cuadro de verificación esté en sí, en cada ultimo pedido de cada cliente. No sé si me logro explicar bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda a un novato...

Publicado por mi menda (1111 intervenciones) el 15/12/2009 19:42:19
Hola:
Prueba de esta forma:

Dim ssql As String

ssql = "UPDATE NombreTabla SET Ultimo_Pedido = -1 WHERE " _
& " fecha_pedido = DLast('fecha_pedido]','[NombreTabla]','[IdCliente] =' & [IdCliente])"

CurrentDb.Execute ssql
Me.Requery

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda a un novato...

Publicado por Jefferson (135 intervenciones) el 16/12/2009 16:15:13
Hola mi menda y Angel Andres y a todos los foreros....

Me he interesado bastante en este post, pero por mas que intento no logro dar con la opcion correcta para lograr el filtrado del IdCliente.

Me Explico
Trabajemos con la BD Neptuno especificamente con la Tabla Pedidos, a esta le agregamos un nuevo campo UltimoPedido tipo Si/No

Ahora creamos una consulta de seleccion
SELECT Last(Pedidos.IdPedido) AS ÚltimoDeIdPedido, Pedidos.IdCliente
FROM Pedidos
GROUP BY Pedidos.IdCliente;

Fijate que me selecciona los ultimo IdPedido de todos los clientes

Ahora creamos una consulta de actualizacion como lo propone mi menda
UPDATE Pedidos SET Pedidos.UltimoPedido = True
WHERE (((Pedidos.FechaPedido)=DLast("FechaPedido","Pedidos","IdCliente")));
Solo me actualiza las ultimas fechas de los pedidos (Solo cuatro)

Si le cambio la condicion Where
UPDATE Pedidos SET Pedidos.UltimoPedido = True
WHERE (((Pedidos.IdPedido)=DLast("IdPedido","Pedidos","IdCliente")));
Solo me actualiza el ultimo IdPedido del Primer IdCliente

Ya La cabeza se me va a partir y no logro que me actualize los 89 campos que realmente son....

Me Rindo
Si Alguien conoce alguna solucion Bienvenida sea...

Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda a un novato...

Publicado por mi menda (1111 intervenciones) el 16/12/2009 20:55:42
Hola:
Jefferson, al probar no has puesto bien el criterio de la función DLast(). Lo he probado en la tabla Pedidos de Neptuno y actualiza el campo correctamente:

UPDATE Pedidos SET Pedidos.UltimoPedido = -1
WHERE (((Pedidos.FechaPedido)=DMax("FechaPedido","Pedidos","IdCliente = '" & [IdCliente] & "'")));

SQL copiada y pegada de la consulta de actualización.
Lo ideal sería seleccionar la última fecha de pedido y a partir de ahí hacer la actualización, que fue lo primero que intente al igual que tu, pero las consultas de actualización no admiten como origen consultas de totales o resumen, por lo que no he hallado otra manera de obtener la última fecha de pedido que con la función DMax().
Verás que he cambiado DMax por DLast, por que DLast solo funciona sí la última fecha de pedido coincide con el último IdPedido , es decir, te actualizará la fecha de pedido del último IdPedido aunque esa fecha no fuerá la última.

Queda pendiente que Angel Andres nos dé la solución de su profesor.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda a un novato...

Publicado por Jefferson (135 intervenciones) el 16/12/2009 22:54:29
Buena esa mi menda

Ya parecia un perro cansado, le di mil vueltas antes de echarme y no logre dar con la solucion. Tambien use la funcion Dmax.... Pero de bruto tomaba al idcliente como numerico cuando era texto.

Gracias, aunque la duda no era mia (me la tome personal) pero para eso estamos para aprender cada dia mas.

Un Saludo
Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Finalizado. Mil gracias Jefferson y mi menda!

Publicado por Angel Andres (20 intervenciones) el 20/12/2009 00:20:41
Les agradezco mucho su aporte. Ahora he aprendido algunas funciones nuevas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar