// Escanear el código de barras y configurar fecha y hora
Set(CodigoEscaneado, First(BarcodeReader1.Barcodes).Value);
Set(fecha, DateValue(Label5.Text));
Set(hora, TimeValue(Label4.Text));
// Verificar si el vehículo existe
Set(verificar, LookUp('[control_seguridad].[vehiculos1]', Codigo = CodigoEscaneado));
// Si el vehículo existe
If(
!IsBlank(verificar),
// Verificar si el estado es "Activo"
If(
verificar.Estado = "Activo",
// Verificar la última entrada/salida
Set(verificar_entrada_salida, First(Sort(Filter('control_seguridad.vehiculoses1', Codigo = CodigoEscaneado), ID, SortOrder.Descending)));
// Si hay un registro previo
If(
!IsBlank(verificar_entrada_salida),
// Si la última salida no está registrada
If(
IsBlank(verificar_entrada_salida.Fecha_de_Salida) && IsBlank(verificar_entrada_salida.Hora_de_Salida),
// Actualizar la salida
Patch('control_seguridad.vehiculoses1', verificar_entrada_salida, {Fecha_de_Salida: fecha, Hora_de_Salida: hora});
Notify("Vehículo registrado: salida actualizada", NotificationType.Success);
),
// Si la última salida está registrada, insertar nueva entrada
Patch('control_seguridad.vehiculoses1', Defaults('control_seguridad.vehiculoses1'), {
ID: 0,
Codigo: CodigoEscaneado,
Fecha_de_Entrada: fecha,
Hora_de_Entrada: hora,
Fecha_de_Salida: Blank(),
Hora_de_Salida: Blank(),
Nombre_completo: Concatenate(verificar.Nombre, " ", verificar.Apellidos),
Entidad: verificar.Entidad,
Departamento: verificar.Departamento,
Area: verificar.Area,
Tipo_vehiculo: verificar.Tipo_de_vehiculo,
Modelo: verificar.Modelo,
Marca: verificar.Marca,
Color: verificar.Color,
Estado: verificar.Estado
});
Notify("Vehículo registrado: nueva entrada", NotificationType.Success);
),
// Si no hay un registro previo, insertar nueva entrada
Patch('control_seguridad.vehiculoses1', Defaults('control_seguridad.vehiculoses1'), {
ID: 0,
Codigo: CodigoEscaneado,
Fecha_de_Entrada: fecha,
Hora_de_Entrada: hora,
Fecha_de_Salida: Blank(),
Hora_de_Salida: Blank(),
Nombre_completo: Concatenate(verificar.Nombre, " ", verificar.Apellidos),
Entidad: verificar.Entidad,
Departamento: verificar.Departamento,
Area: verificar.Area,
Tipo_vehiculo: verificar.Tipo_de_vehiculo,
Modelo: verificar.Modelo,
Marca: verificar.Marca,
Color: verificar.Color,
Estado: verificar.Estado
});
Notify("Vehículo registrado: nueva entrada", NotificationType.Success);
),
// Si el vehículo no está activo
Patch('control_seguridad.vehiculoses1', Defaults('control_seguridad.vehiculoses1'), {
ID: 0,
Codigo: CodigoEscaneado,
Fecha_de_Entrada: fecha,
Hora_de_Entrada: hora,
Fecha_de_Salida: Blank(),
Hora_de_Salida: Blank(),
Nombre_completo: Concatenate(verificar.Nombre, " ", verificar.Apellidos),
Entidad: verificar.Entidad,
Departamento: verificar.Departamento,
Area: verificar.Area,
Tipo_vehiculo: verificar.Tipo_de_vehiculo,
Modelo: verificar.Modelo,
Marca: verificar.Marca,
Color: "Intento ingresar sin permiso",
Estado: verificar.Estado
});
Notify("Acceso denegado: el usuario no tiene permiso para ingresar", NotificationType.Error);
),
Notify("Vehículo no registrado en la base de datos", NotificationType.Error);
);
WarrenBelz
59
Most Valuable Professional
mmbr1606
49
Super User 2025 Season 1
Michael E. Gernaey
35
Super User 2025 Season 1