Access - Generar fechas(por llamarlo de alguna forma)

 
Vista:

Generar fechas(por llamarlo de alguna forma)

Publicado por Drasick (22 intervenciones) el 11/02/2005 12:24:29
A ver este problemilla la verdad q me trae loco y no se como hacerlo, estoy haciendo una bd para gestiona una serie de entrevistas, en ella hay diferentes tecnicos a los se les asignan entrevistas, cada tecnico tiene un dia de entrevistas (martes, miercoles o jueves) y a diferentes horas(10:00,11:00,12:00).
El problama es q quieren q cuando de de alta una entrevista me salga el primer dia y hora libre. Pero yo eso lo veo muy complicado, puesto q tendria q saber en q dia estoy, y cual es el dia mas cercano libre. Bueno si a alguien se le ocurre algo se lo agredeceria mucho !
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
Imágen de perfil de Alejandro

Asignar automáticamente el primer día y hora libre al dar de alta una entrevista

Publicado por Alejandro (4142 intervenciones) el 25/05/2023 17:30:53
Para resolver este problema, puedes utilizar consultas y cálculos en Access para determinar el primer día y hora libre para asignar a una entrevista. A continuación, te proporciono una posible solución paso a paso:

1. Crea una tabla llamada "Entrevistas" con los campos necesarios, como "IDEntrevista" (clave primaria), "Tecnico", "Dia" y "Hora".

2. Crea una tabla llamada "Disponibilidad" que represente la disponibilidad de los técnicos. Debe contener los campos "Tecnico", "Dia" y "Hora". Por ejemplo:

Tecnico | Dia | Hora
------- | ---------- | ------
Técnico1| Martes | 10:00
Técnico1| Martes | 11:00
Técnico1| Martes | 12:00
Técnico1| Miércoles | 10:00
Técnico1| Miércoles | 11:00
Técnico1| Miércoles | 12:00
...

3. En el formulario o interfaz donde se realiza el alta de la entrevista, crea un botón o evento que se activará al guardar los datos.

4. En el evento del botón o evento, utiliza una consulta para determinar el primer día y hora libre. Puedes utilizar la función `DLookup` para obtener el primer registro disponible.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub btnGuardar_Click()
       Dim strSQL As String
       Dim strDia As String
       Dim strHora As String
       Dim strTecnico As String
       Dim rs As DAO.Recordset
 
       ' Obtener el técnico seleccionado
       strTecnico = Me.cboTecnico.Value
 
       ' Obtener el primer día y hora libre
       strSQL = "SELECT TOP 1 Dia, Hora FROM Disponibilidad " & _
                "WHERE Tecnico = '" & strTecnico & "' " & _
                "AND (Dia & Hora) NOT IN (SELECT Dia & Hora FROM Entrevistas) " & _
                "ORDER BY Dia, Hora"
 
       Set rs = CurrentDb.OpenRecordset(strSQL)
 
       If Not rs.EOF Then
           ' Obtener el primer día y hora libre encontrados
           strDia = rs("Dia")
           strHora = rs("Hora")
 
           ' Asignar los valores al registro de entrevista
           Me.txtDia.Value = strDia
           Me.txtHora.Value = strHora
 
           ' Cerrar el recordset
           rs.Close
           Set rs = Nothing
       End If
   End Sub

Asegúrate de realizar los siguientes cambios:

- Reemplaza "btnGuardar" con el nombre del botón o evento que se activa al guardar los datos.
- Reemplaza "cboTecnico" con el nombre del cuadro combinado que contiene la selección del técnico.
- Reemplaza "txtDia" y "txtHora" con los nombres de los campos de texto donde se mostrará el día y la hora asignados.

5. En el código, se utiliza una consulta SQL para obtener el primer día y hora libre para el técnico seleccionado. La subconsulta `(SELECT Dia & Hora FROM Entrevistas)` se utiliza para excluir los días y horas que ya están asignados en la tabla "Entrevistas".

6. Si se encuentra un día y hora libre, se asignan los valores a los campos de texto correspondientes.

Con esta solución, al dar de alta una entrevista, al hacer clic en el botón o evento de guardar, se buscará automáticamente el primer día y hora libre para el técnico seleccionado, evitando conflictos de programación.
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