Private Sub cmdLiberarEmbarcaciones_Click()
Dim dbName As String
Dim conn As ADODB.Connection
Dim NumeroConfirmacion As String
Dim ConfirmacionConEmbarcacion As String
Dim ConfirmacionConEmbarcacionLiberada As String
Dim i As Integer
Dim j As Integer
Dim EmbarcacionAsignada As String
Dim PaxAsignados As Integer
Dim EmbarcacionEncontrada As Boolean
Dim FaltaLiberar As Boolean
Dim EmbarcacionLiberada As String
Dim CodGuia As String
Dim NomGuia As String
Dim strSelect As String
Dim strSelect2 As String
Dim TipoEmbarcacion As String

dbName = frmMain.Ap_Path & frmMain.dbName
NumeroConfirmacion = DataConfirmacion.Recordset.Fields("NConfirmacion")

 Set conn = New ADODB.Connection
    conn.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & dbName & ";" & _
        "Persist Security Info=False"
    conn.Open
    
dbFlujoEmbarcaciones.DatabaseName = frmMain.Ap_Path & frmMain.dbName
dbFlujoEmbarcaciones.RecordsetType = 1
dbFlujoEmbarcaciones.RecordSource = "Select * FROM [Flujo Embarcaciones]"
dbFlujoEmbarcaciones.Refresh
        
    Set gDefaultDatabase = dbFlujoEmbarcaciones.Database
Variable que indica si hubo alguna embarcacin asignada a la confirmacin       
ConfirmacionConEmbarcacion = DLookup("NConfirmacion", "Flujo Embarcaciones", "NConfirmacion  = '" & NumeroConfirmacion & "' AND Status = 10")
If ConfirmacionConEmbarcacion <> "No Encontrado" Then
Selecciona del Flujo de Embarcaciones, las embarcaciones que pasaron a 
status 10 para la confirmacin seleccionada
    strSelect = "SELECT [Flujo Embarcaciones].NConfirmacion, [Flujo Embarcaciones].CodGuia, Guias.Nombre, [Flujo Embarcaciones].Embarcacion, [Flujo Embarcaciones].PaxAsignados FROM [Flujo Embarcaciones] INNER JOIN Guias ON [Flujo Embarcaciones].CodGuia = Guias.CodGuia WHERE NConfirmacion = '" & NumeroConfirmacion & "' AND Status = 10 GROUP BY [Flujo Embarcaciones].NConfirmacion, [Flujo Embarcaciones].CodGuia, Guias.Nombre, [Flujo Embarcaciones].Embarcacion, [Flujo Embarcaciones].PaxAsignados"
    If rcds.State = adStateOpen Then rcds.Close
    rcds.Open strSelect, db, adOpenStatic, adLockOptimistic
    rcds.MoveFirst
    Busca si las embarcaciones que fueron asignadas a la confirmacin ya
pasaron a status 5. Se puede liberar embarcaciones de una en una o todas    
    ConfirmacionConEmbarcacionLiberada = DLookup("NConfirmacion", "Flujo Embarcaciones", "NConfirmacion  = '" & NumeroConfirmacion & "' AND Status = 5")
    If ConfirmacionConEmbarcacionLiberada <> "No Encontrado" Then
Selecciona las embarcaciones que pasaron a status 5
    strSelect2 = "SELECT [Flujo Embarcaciones].NConfirmacion, [Flujo Embarcaciones].Embarcacion, [Flujo Embarcaciones].PaxAsignados FROM [Flujo Embarcaciones] where NConfirmacion = '" & NumeroConfirmacion & "' AND Status = 5"
Borra el contenido de la tabla Flujo Embarcaciones Libera, que contendr
las embarcaciones que se van a liberar
    conn.Execute "Delete [Flujo Embarcaciones Libera].* from [Flujo Embarcaciones Libera]"
   
    FaltaLiberar = False
    For i = 1 To rcds.RecordCount
        NumConfirmacion = rcds.Fields(0)
        CodGuia = rcds.Fields(1)
        NomGuia = rcds.Fields(2)
        EmbarcacionAsignada = rcds.Fields(3)
        PaxAsignados = rcds.Fields(4)
        EmbarcacionEncontrada = False
        If rcds2.State = adStateOpen Then rcds2.Close
        rcds2.Open strSelect2, db, adOpenStatic, adLockOptimistic
        rcds2.MoveFirst
    
        For j = 1 To rcds2.RecordCount
        EmbarcacionLiberada = rcds2.Fields(1)
Comprueba si la embarcacin que paso a status 10 ya paso a status 5
        If EmbarcacionLiberada = EmbarcacionAsignada Then
            EmbarcacionEncontrada = True
            Exit For
        End If
        rcds2.MoveNext
        Next j
        If EmbarcacionEncontrada = False Then
Si no ha pasado la embarcacin a status 5, y adems no la cambiaron
por otra embarcacin, agregarlo a la tabla Flujo Embarcaciones Libera
        If DLookup("NConfirmacion", "Flujo Embarcaciones", "NConfirmacion  = '" & NumeroConfirmacion & "' AND Embarcacion = " & EmbarcacionAsignada & " AND Status = 4") = "No Encontrado" Then
        FaltaLiberar = True
        TipoEmbarcacion = DLookup("TipoEmbarcacion", "Embarcaciones", "NumEmbarcacion = " & EmbarcacionAsignada)
        conn.Execute "Insert into [Flujo Embarcaciones Libera] VALUES ('" & CodGuia & "', '" & NomGuia & "', " & EmbarcacionAsignada & ", '" & TipoEmbarcacion & "', '" & NumConfirmacion & "', " & PaxAsignados & " , 0)"
        End If
        End If
    rcds.MoveNext
    Next i

    If Not FaltaLiberar Then
        MsgBox "Esta confirmacin ya tiene todos los pax de las embarcaciones liberados"
        rcds.Close
        rcds2.Close
        Exit Sub
    End If
Else
Si no se ha pasado ninguna embarcacin a status 5 de las que estuvieron
en status 10 entonces, insertarlas en la tabla Flujo Embarcaciones Libera,
siempre y cuando no hayan sido cambiadas por otra embarcacin
        conn.Execute "Delete [Flujo Embarcaciones Libera].* from [Flujo Embarcaciones Libera]"
        For i = 1 To rcds.RecordCount
        NumConfirmacion = rcds.Fields(0)
        CodGuia = rcds.Fields(1)
        NomGuia = rcds.Fields(2)
        EmbarcacionAsignada = rcds.Fields(3)
        PaxAsignados = rcds.Fields(4)
        If DLookup("NConfirmacion", "Flujo Embarcaciones", "NConfirmacion  = '" & NumeroConfirmacion & "' AND Embarcacion = " & EmbarcacionAsignada & " AND Status = 4") = "No Encontrado" Then
        TipoEmbarcacion = DLookup("TipoEmbarcacion", "Embarcaciones", "NumEmbarcacion = " & EmbarcacionAsignada)
        conn.Execute "Insert into [Flujo Embarcaciones Libera] VALUES ('" & CodGuia & "', '" & NomGuia & "', " & EmbarcacionAsignada & ", '" & TipoEmbarcacion & "', '" & NumConfirmacion & "', " & PaxAsignados & " , 0)"
        End If
    rcds.MoveNext
    Next i
    End If
Else
    MsgBox "Esta confirmacin no tiene ninguna embarcacin asignada"
        Exit Sub
End If
        conn.Close
Muestra de manera modal el formulario para liberar las embarcaciones
        frmLiberaEmbarcaciones.Show vbModal
End Sub
