Sumar campos hasta un valor

Estoy haciendo un formulario de cuentas por cobrar y necesitaria "marcar" los registros (saldo) hasta un valor.

Por ejemplo: un cliente me entrega a cuenta $ 200 y quisiera que se marquen los registros de saldo hasta este valor

1 campera $ 100

1  pantalón $ 100

1  camisa $ 50

En este ejemplo quisiera que se marquen la campera y el pantalón ya que suman $ 200

Respuesta
1

Vamos por partes. Supongamos que tienes una tabla Compras con Id, Cantidad, Producto, Precio. Añádele un campo Cancelada tipo Sí/No y un campo Resto tipo Moneda. Haz un formulario con esa tabla. Y añádele, en el encabezado un cuadro de texto Entrega(donde vas a poner la cantidad que te entrega) y un botón de comando. En las propiedades de este botón en el evento Al hacer clic pon

Dim i As Byte
DoCmd.GoToRecord , , acFirst
For i = 1 To Form.Recordset.RecordCount
Resto = Entrega - DSum("precio", "compras", "id<=" & Me.Id & "")
If Resto >= 0 Then
Cancelada = True
End If
DoCmd.GoToRecord , , acNext
Next

Me explico, le digo que vaya al primer registro, que el campo resto es igual a lo que te ha entregado menos la suma de los precios de los registros anteriores, y que si resto es mayor que cero ponga la casilla Cancelada como true. Pongo una imagen del diseño

Al abrirlo, se ve

Entonces, le he puesto que me entrega 210 euros y pulso el botón

Me marca como "pagados" las camperas y el pantalón y hay un resto de 10 euros que como no llega a compensar el tercer registro te la deja en blanco y un resto de -40( que es lo que te debe)

Para que Precio y Resto, que es el de la derecha tomen algún calor, en vista diseño del formulario selecciona ambos campos y pulsas Formato-Formato Condicional-Nueva regla-La expresión es:

Resto>0

Y eliges el color de fondo, el tipo de letra, etc.

Para que todo te funcione mejor, lo que haría sería poner, en el evento Al abrir del formulario

form.recordsource="select * from compras where cancelada=0"

Así te abrira el formulario con aquellos registros que todavía no están pagados

Espectacular! justo lo que quería y hacía días que no me salía nada! Muchísimas gracias Icue!!.

Analía, lo que te puse era para dar una idea, pero creo que no estaría terminado del todo. Supongo que tendrás un cliente al que le vendes algunas cosas algún día, con lo que te "debe" una cierta cantidad de esa venta. Llega un día y te abona una cantidad, que no tiene porque coincidir con toda la deuda de ese día.

En ese caso, lo que haría sería una tabla Clientes para los datos personales del cliente, otra tabla Ventas, con, por ejemplo, Idcliente, Fechaventa, imporrteventa, etc. Otra tabla Detalleventa con Idventa, idproducto, precio, cantidad, subtotal, otra tabla Entregas con Idcliente, idVenta, fechaentrega, Entrega, para tener un histórico de entregas, por si algún día alguien te dijera que te había entregado X dinero y así puedes demostrarle que te dío Z euros. También para estadísticas, etc.

De odas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo. Si lo haces, ene el asunto del mensaje pon tu alias Analía, ya que si no sé quien me escribe ni los abro.

Hola Icue! tengo un problema, tengo el formulario clientes y ventas está como subformulario.

cuando me muevo por los registros, se mueve por clientes y no por ventas. Entonces me da error.

Cómo hago para tener la base de compras activa?

Gracias y disculpá la molestia

Mientras te preparo un ejemplo con tus datos, permíteme un consejo. La tabla Clientes debe ser única y exclusivamente para los datos que nunca o casi nunca cambian de un cliente, como puede ser, Nombre, Fecha Nacimiento, Dirección, DNI(Documento Nacional de Identidad), CIf(Código de identificación Fiscal), etc. Pero un mismo cliente puede hacerte varías compras. Si lo haces tal como lo tienes, estarás metiendo en la tabla Clientes el mismo cliente cada vez que te haga una compra nueva.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas