Error de compilación - El argumento no es opcional

Tengo una tabla llamada EXP en la que se registran expedientes de las cosas que se realizan a los clientes. Tiene de campos, entre otros, dos que se llaman S y D. En la S va siempre una U y en la D el numero del departamento del 1 al 8. Una vez que esos expedientes se han realizado y pasado factura por ello se modifica la S por una W y la U por un 11. He creado una consulta para que seleccione solo los W 11. Y con esa consulta un informe. Hasta ahí todo correcto. Ahora quiero que una vez copiado o sacado ese informe, esos campos cambien para no mezclarlo con las nuevas bajas. Y se modificaría la W por F y el 11 por 99. Yo pensé en hacer un botón que cuando le diera lo cambiara y puse esta función.
Private Sub Comando13_Click()
Update Exp
Set S = F
Where S = W
Update Exp
Set D = 99
Where D = 11
End Sub
Pero al darle al botón me aparece ese error ERROR DE COMPILACION - EL ARGUMENTO NO ES OPCIONAL y me marca el error en el título, es decir Private Sub Comando13_Click()
No sé que error puede haber ahi o como puedo hacer eso que quiero. No entiendo mucho de access y todo lo que hago o intento hacer es buscando e investigando por mi cuenta.

1 respuesta

Respuesta
1

Con los datos que das es complicado ser preciso. Supongo, no lo sé, que en algún formulario tendrás un evento que abra el informe y lo imprima, en función de un criterio determinado, que tampoco lo sé. Por ejemplo

Docmd.openreport"nombredelinforme",,,"Nombrecliente='" & me.nombrecliente & "'"

A eso le podrías añadir una línea

docmd.runsql"update EXP set S=""F"", D=99 where S=""W"" and D=11"

Es decir, primero te imprime un informe en el que el criterio es el del nombrecliente y después te actualiza los campos de la tabla Exp a los valores nuevos en aquellos registros en que S=W y D=11

Para concretar más los registros a actualizar puedes añadir hasta 99 condiciones AND y OR, por ejemplo

docmd.runsql"update EXP set S=""F"", D=99 where S=""W"" and D=11 and nombrecliente='" & me.nombrecliente & "'"

Por eso, si pudieras concretar más sería mejor

Muchas gracias por tu respuesta. Voy a intentar explicar mejor lo que tengo y lo que quiero hacer.

Esta es la tabla que tengo creada. En el campo S siempre va una U y en la D el departamento que realiza la tarea. Una vez que la tarea ha finalizado y se ha cobrado por ello se pone en la D una W y en la D un 11.

De esa tabla creé esta consulta para que seleccione solo los expedientes con W 11.

Y de esta consulta cree un informe para registrar los expedientes dados de baja.

Y ahora una vez hecho ese informe guardo los expedientes dados de baja ese día. 

Ahora bien la próxima vez que yo de de baja expedientes, si vuelvo a poner W 11 se me mezclarían con los anteriores, entonces quería insertar un botón en el informe para los que ya tienen W 11 cambien, la W por F y el 11 por 99. O bien hacer algo que pueda cambiar eso una vez generado el informe.

Espero haberme explicado mejor esta vez.

Mamen, si me permites te sobran cosas. Es cierto que no me gustan las consultas, pero en este caso es que no te hacen falta para nada. Mira, si tengo la tabla Exp a la que le he añadido un campo Cobrado tipo (Sí/no), para saber si ese expediente lo he cobrado( aunque no haría falta, ya que se podría saber en función del valor de S, pero creo que es más clarificador.

Como a los dos últimos ya se les ha cobrado, su casilla aparece marcada y S=W y D=11

Con ella hago un formulario, donde en el evento Al cargar me digo que me muestre sólo aquellos registro que están "activos", es decir, sin cobrar

Fíjate en Antonio Es que no puedo verlo, le tengo un odio! Voy a señalarlo como cobrado

1º Me cambia los valores de S y D

Y acto seguido desparece del formulario, porque le habíamos dicho que sólo muestre los que están "activos"

Vamos a suponer que quieres ver sólo registros con w y 11. Pulsas el botón del encabezado y

Ahora voy a dar de baja a Antonio(hasta que no lo liquide no paro). Pulso el botón amarillo a su derecha(botón que sólo funciona si la casilla cobrado está "marcada"), y:

1º Le cambia los valores de S Y D

2º Acto seguido desaparece del formulario, ya que su situación ha cambiado

Vamos a suponer que quiero saber que registros están de baja. Pulso el botón del encabezado y

Lógicamente la terminación del formulario habría que refinarla, pero a grandes rasgos sería así y no necesitas nada más, ya que la tabla la tendrías como

Y podrías sacar el tipo de informes que quieras. Por cierto el código del formulario es

Private Sub BAJA_Click()
If Cobrado = 0 Then
MsgBox "No se puede dar de baja porque todavía no se ha cobrado", vbOKOnly, "Ay señor, señor"
Exit Sub
ElseIf Cobrado = -1 Then
Dim respuesta As Byte
respuesta = MsgBox("¿Está seguro de querer darlo de baja?", vbYesNo, "Las culpas se las echas a Mamen")
If respuesta = vbYes Then
S = "F"
D = 99
Call Comando25_Click
ElseIf respuesta = vbNo Then
DoCmd.CancelEvent
End If
End If
End Sub
Private Sub Cobrado_AfterUpdate()
S = "W"
D = 11
Me.Requery
End Sub
Private Sub Comando25_Click()
Me.RecordSource = "SELEct * from exp where s=""W"" and D=11"
End Sub
Private Sub Comando28_Click()
Me.RecordSource = "SELECT * FROM EXP WHERE s=""F"" and d=99"
End Sub
Private Sub Form_Load()
Me.RecordSource = "select * from exp where s=""u"" and d<11"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas