Números duplicados en consulta de access

Tengo una columna cliente y otra columna operario con sus códigos. Quiero dar un valor al código que se duplica de la columna cliente en función al código que tenga de la columna operario.

1 Respuesta

Respuesta
3

Quisiera darte una opinión, pero te juro que no he entendido nada. ¿Podrías extenderte un poco más? O poner alguna imagen

Te explico. 

Cada vez que se duplique el valor en la columna client debo descontar -1 en la columna total contenedores SÍ el valor de la columna mvm_operar es diferente. Resumiendo, cuando un cliente es preparado por varios operarios debo descontar (-1) de la columna total contenedores.

Supongo que te refieres a que en el registro done el Clint es el 47 y MVM_operar 458, en total de contendores t ponga 3. Suponiendo que el formulario donde pones los datos sea continuo(por la imagen) y que todavía no hayas puesto datos, en el evento Después de actualizar del cuadro de texto TotalContendores crea un procedimiento de evento y entre Private Sub y End Sub escribe

If DCount("cliente", "[carga contenedores terminados]", "cliente= " & Me.Cliente & "and [mvm_operar]= " & Me.[MvM_operar] & "") >= 1 Then
MsgBox "Como ese cliente y ese operador están repetidos le resto 1", vbOKOnly, "Aviso"
TotalContenedores = TotalContenedores - 1
End If

En cas de que los datos y estuvieran ya escritos, crea un botón de comando y en su propiedades-eventos-Al hacer clic crea un procedimiento de evento y entre Private Sub y End Sub escribe

docmd.gotrecord,,acfirst

dim i as integer

for I=1 to fom.recordset.recordcount

If DCount("cliente", "[carga contenedores terminados]", "cliente= " & Me.Cliente & "and [mvm_operar]= " & Me.[MvM_operar] & "") >= 1 Then
TotalContenedores = TotalContenedores - 1
End If

docmd.gotorecord,,acnext

next

Así, cuando pulses el botón, se irá al primer registro, comprobará, si se diera el caso de que fueran iguales(imposible) lo cambiaría. Luego se va al segundo, y lo mismo...

La imagen corresponde a una consulta, no hay formulario.

El cliente 17 fué preparado por el operario 439 por lo tanto no se modifica el numero de contenedores, hasta hay correcto.

Por el contrario, el cliente 47 si intervienen varios operarios por lo que se debería descontar  1 contenedor en todos los registros donde aparezca el cliente 47.

Esa es la idea.

Eso es otra cosa.

Primero, si no me equivoco en consultas no lo puedes hacer. Trabajan con lenguaje SQL que, en mi opinión, es menos versátil que Visual Basic.

Por otro lado, sólo puedes hacerlo del segunda manera, ya que ¿como sabe Access que cuando anotas un cliente, más adelante va a repetirse.

Por tanto, o lo haces con un formulario y el botón o no veo la forma.

Pon en el código

Docmd. Gotrecord,, acfirst

dim i as integer

for I=1 to fom.recordset.recordcount

If DCount("cliente", "[carga contenedores terminados]", "cliente= " & Me.Cliente & "") >= 1 Then
TotalContenedores = TotalContenedores - 1
End If

docmd.gotorecord,,acnext

next

Tal y como me comentas, creé el formulario y se queja:

Tienes toda la razón, fue culpa mía por escribir demasiado deprisa, es

Docmd. Gotorecord,, acfirst

Me comí una o. En esencia "Ejecuta ir a registro

Lo siento

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas