Access - ORDENAR REGISTROS

 
Vista:

ORDENAR REGISTROS

Publicado por ROBERTO (145 intervenciones) el 19/03/2008 10:32:37
Hola a todos. Mi problema es el siguiente: Tengo un formulario de introducción de presupuestos donde tengo un formulario con los datos del cliente y un subformulario con los artículos pedidos por ese cliente.
Necesito poder ordenar los artículos de cada pedido por un campo tipo autonumerico pero que empieze siempre por 1 en cada pedido y que cuando en un pedido ya grabado tenga que insertar algún registro mas lo pueda colocar en el orden que necesite. Este registro nuevo puede tener que colocarse al principio del presupuesto o en la linea 7 o en la 10 según se necesite en cada momento.

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
sin imagen de perfil

RE:ORDENAR REGISTROS

Publicado por Marcelo (166 intervenciones) el 19/03/2008 17:13:23
Debes trabajar con funciones agregadas de dominio, en este caso con máximos. Te recomiendo que el indice que permite ordenar cada pedido sea numérico y no autonumérico, ya que por definición este parte con un número que no se puede duplicar más adelante, es por esta razón que debes simular un autonumérico, tambien con funciones agregadas de dominio

Por ejemplo

Tabla : Tabla1

IdPedido IdNumero ...
10248 1
10248 2

Dim neoId As Long

neoId = DMax ("IdNumero","Tabla1","Tabla1.IdPedido = 10248") + 1

Se lee :

Cargar en la variable neoId el máximo número del campo IdNumero de la Tabla1, con el criterio que especifica que el pedido debe ser el 10248 del campo IdPedido. Este criterio se puede parametrizar desde un control de un formulario/informe.

Ej : Reemplazar 10248 por el parámetro -->

Forms![Formulario1]![IdPedido]

que es un ComboBox del Formulario1.

La rutina falla si estamos cargando la primera linea, es decir el IdNumero = 1, ya que no hay máximo que encontrar.

Quedaría :

Dim ctaId, neoId As Long

ctaId = DCount(("IdNumero","Tabla1")

If ctaId = 0 then
neoId = 1
Else
neoId = DMax ("IdNumero","Tabla1","Tabla1.IdPedido = Forms![Formulario1]! [IdPedido]") + 1
End if

IdNumero.Value = neoId
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:ORDENAR REGISTROS

Publicado por diego (1 intervención) el 24/10/2013 21:05:54
Gracias muy bueno el código.
lo que no me queda claro es como hacer para insertar un registro en una linea que ya existe y que el resto se re numere en forma automática, es decir, si tengo 10 registros y quiero agregar un nuevo registro pero que este no quede en la posición 11 sino en la 7. como se hace? Gracias.
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