Access, Visual Basic. Dar de baja en un empleado de la lista de espera.

Sigo con el asunto de la biblioteca.

He creado un formulario en el que aparecen (por orden de solicitud) las personas que desean leer un determinado libro. En el formulario y siguiendo las instrucciones de Sveinbjorn hemos conseguido que los datos se trasladen a otro formulario “Baja en la lista de espera del empleado”, con el [IDLista de espera] que ocupan en la tabla (como tengo todos los campos visibles, entonces veo que el traslado de datos es correcto), pero resulta que el empleado que queda dado de baja no es el seleccionado sino el que ocupa el primer lugar dentro del libro seleccionado.

Lo instrucción que tengo en la siguiente:

Private Sub Guardar_Click()

    Situación = False

    If Not IsNull([IdLibros]) Then

    DoCmd.RunCommand acCmdSaveRecord 

    MsgBox "REGISTRO MODIFICADO"

    DoCmd.Close

    DoCmd.OpenForm "Préstamos"

    On Error GoTo Err_Guardar_Click

Exit_Guardar_Click:

    Exit Sub

 Err_Guardar_Click:

    MsgBox Err.Description

    Resume Exit_Guardar_Click      

    End If     

End Sub.

¿Se puede solucionar este asunto?.

1 Respuesta

Respuesta
2

Vicente, no voy a entrar en el código, pero si el formulario es el de una lista de espera, parece razonable que el registro que pase a la tabla Baja en lista de espera, sea el que más tiempo lleva esperando, o es que ya estamos con favoritismos y privilegios.

jajajajjaj. Muchas gracias.

En serio, lo que trato de saltar es lo siguiente:

Te comento, el periodo máximo de devolución de un libro lo hemos fijado en 15 días. Imagínate que hay un lector que se inscribe en la lista de espera con la intención de leer "LA TRAICIÓN DE ROMA", quedando registrado en rimer lugar de la lista de espera. Al ver que el libro (LA TRAICIÓN DE ROMA) fue prestado ayer a otro empleado considera que tiene tiempo suficiente para leer otro título diferente y aquí viene la cuestión. Se puede dar el caso que el que tenía alquilado el libro por un motivo u otro decide devolverlo a los tres días de habérselo llevado, entonces solamente podemos hacer dos cosas, o decirle al primero de la lista que se lo lleve, con lo que acumularía dos libros y se retrasaría las devoluciones o decirle que va a perder el turno. Tanto una postura como la otra me parecen injustas, e imagínate que que si esa circunstancia se diera en el periodo de vacaciones. Varias o muchas peticiones de lectura y el libro esperando se le ocurra al 1ero solicitarlo. 

Mi idea era que si el que ocupa la primera, segunda o sucesivas  posiciones dentro de la lista de espera pudieran mantener la posición de reserva hasta que  coincidieran o se aproximara la fecha de devolución del libro que estaba leyendo el primer inscrito con la fecha de entrega del libro que había solicitado leer.

Un saludo.

Bueno, he conseguido que parte de los planetas se alineen aunque no tengo idea si correctamente o todo lo contrario, que esto último será lo más probable.

He ideado actuar contra el Id de la lista de espera consiguiendo que en el formulario que se rellena de manera automática salgan los datos correctos, otra cosa es que pueda actuar con ellos y digo esto porque cuando le pincho el comando botón para que actualice (actue) se produce un error en tiempo de ejecución -2147352567 (800200009). No se puede actualizar el Recordset.

Ahí me he quedado.

¿hay alguna de manera de avanzar en el tema, o busco otras posibles salidas?.

Gracias.

Un saludo

No te había respondido porque no me gusta meterme en el desarrollo que te han presentado otros. Convendría que le preguntaras a quien te dio la solución.

Muchas gracias ICUE.

Debo decir que desconozco las normas entre otras cosas porque no se me ha ocurrido leerlas como consecuencia de que las preguntas que formulo son tan fáciles que cualquiera (con conocimientos) las puede contestar.

De todos modos diré que lo penúltimo que pregunté era de qué manera se podía trasladar unos datos de un subformulario a un formulario. Sveinbjor, me contestó amablemente y tomada en consideración sus instrucciones el resultado fue óptimo. Nada quedó en el aire, el asunto fue resuelto. Tema zanjado.

La pregunta última que formulé era una nueva pregunta que nada tenía que ver con ninguna de las anteriores, también, creo que no la dirigí a nadie en concreto y tú me contestaste de manera graciosa, cosa que agradecí y agradezco.

Por último, decir que nadie me tutela en la BD que intento hacer, y, de ahí mi manera informal de solicitar ayuda en todos aquellos casos en los que el obstáculo que se me presenta es irresoluble para mi. En ningún momento me he dirigido a nadie en concreto entre otras cosas porque considero sería una osadía por mi parte hacer perder el tiempo a alguno de vosotros con mis "muy probables torpes" preguntas.

Ahora sí, darte las gracias por tu tiempo. Me has servido de gran ayuda, y, seguro, seguro, que alguna otra vez volveré a solicitar ¡Help!. De hecho estoy solicitándolo ya. jajajajajja

Un saludo

Si tengo el formulario que depende de la tabla Copia de clientes y quiero eliminar un registro en particular

Me voy a cargar al pobre Antonio que no me ha hecho nada pero me cae muy mal.

Selecciono el registro y pulso el botón

Y me queda como

Como ves Antonio ha desaparecido, su cuerpo no lo encontrarán nunca y lo mejor es que parece un accidente.

El código del botón es

Private Sub Comando9_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "delete * from [copia de clientes] where idcliente=" & Me.IdCliente & ""
Me.Requery
End Sub

Se puede hacer sin botón, por ejemplo haciendo doble clic sobre algún cuadro de texto, o también poniendo a la derecha del registro un botón, etc.

Hola ICUE.

Muchas gracias. Funciona perfectamente.

Anoche, después de contestarte comencé a construir un Recordset. Hoy, viendo la sencillez de la instrucción que me indicas y el resultado tan estupendo que provoca, destruyendo toda prueba y no dejando ningún rastro incriminatorio, ( jajajajaj), hace inclinarme por tomar esta instrucción y olvidarme del farragoso Recordset.

Muchas gracias.

Un saludo  

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas