Crear una consulta a partir de una función en VB (MS Access)

Resulta que he estado buscando alguna consulta o algoritmo para sacar los solapes o traslapes y resulta que encontré una que esta hecha en VB para access pero muestra la respuesta en un MsgBox y yo quiero que lo almacene en una consulta, puesto a que luego pretendo utilizar esos datos, aquí esta la función:
Public Function Solapa()
Dim MTabla As DAO.Recordset, MMensaje As String, Evento As String, INi As Date, FIn As Date
Set MTabla = CurrentDb.OpenRecordset("Select * From Datos_Aux Order by Equipo, FHini", , dbReadOnly)
With MTabla
.MoveFirst
Equipo = !Equipo
INi = !FHini
FIn = !FHfin
.MoveNext
Do Until .EOF
If !Equipo = Equipo Then
If !FHini <= FIn Then
If !FHfin > FIn Then FIn = !FHfin
Else
MMensaje = MMensaje & "Equipo: " & Equipo & " Horas: " & CDbl((DateDiff("n", INi, FIn)) / 60) & vbCrLf
INi = !FHini
FIn = !FHfin
End If
Else
MMensaje = MMensaje & "Equipo: " & Equipo & " Horas: " & CDbl((DateDiff("n", INi, FIn)) / 60) & vbCrLf
Equipo = !Equipo
INi = !FHini
FIn = !FHfin
End If
.MoveNext
Loop
MMensaje = MMensaje & "Equipo: " & Equipo & " Horas: " & CDbl((DateDiff("n", INi, FIn)) / 60) & vbCrLf
MsgBox MMensaje
End With
End Function
Datos_Aux es una tabla la cual contiene todos los datos, mi idea es que por equipo me muestre las detenciones, las cuales tienen hora de inicio y de fin, y que no me considere las que están traslapadas, el algoritmo funciona bien, pero como dije antes lo muestra en un MsgBox y yo quiero guardarlo en una consulta.
(Adicional)
Ademas, si es posible quisiera que en la tabla/consulta que se generé poder llamar los otros campos de la tabla Datos_Aux, pensando que cuando junte varios datos solapados podría haber problemas con los demás campo, ya que pensando que los otros campos pueden diferir entre un registro y otro, mi idea es que entre los solapados el que tiene mayor duración manda, por lo cual esa Id es la que se mantiene, al igual que la causa de detención entre otros campos.
Aviso(Id)
Ubicación técnica(Descripción)
Pautas(Causa Avería)
IniAvería(Fecha Inicio)
FinAvería(Fecha Fin)
HIniAver (Hora inicio)
HFinAver (Hora fin)
FHini (Fecha + Hora Inicio)
FHfin (Fecha + Hora fin)
Dur (Duración) similar a (DateDiff("n", INi, FIn))
Cl# (Clase)
PtoTraba (Localización)
Si me pudieran ayudar con lo primero se los agradecería mucho, y ojala puedan tambien con el (Adicional).

1 respuesta

Respuesta
1

Resulto ser más fácil de lo que pensaba, claro que lo hice sobre una tabla en vez de sobre una consulta.
Use lo siguiente
Imprime:
str = "insert into Detenciones_sin_traslape(equipo,Finicio,Ffin,Cambioini,Cambiofin,Finireal,Ffinreal,Detencion,DurParada,Cl,Pauta,UTec,PtoTrabajo,Aviso,Orden,Parque, Mina)" & _
"values('" & EQ1 & "','" & Fecha1 & "','" & FIN1 & "','" & cambi & "','" & cambf & "','" & Fireal & "','" & Ffreal & "','" & esdet & "','" & DUR & "','" & aviso & "','" & PAU & "','" & UT & "','" & PT & "','" & AV & "','" & OT & "','" & PRQ & "','" & MIN & "')"
DoCmd. RunSQL str

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas