Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
A better way to browse. Learn more.
A full-screen app on your home screen with push notifications, badges and more.
Este tema está ahora archivado y está cerrado a más respuestas.
cordial saludo,
quisiera que me ayudaran con el siguinte caso, tengo un archivo en donde extraigo los datos del programa de la empresa que trabajo, pero esta consulta sql me los agrupa y no me los muestra de forma individual.
Private Sub UserForm_Activate() Dim Db As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim SQL As String Dim i As Integer Call InicializarVariables Db.Open CONSTRING For i = 0 To 365 Me.cmb_Fini.AddItem Format(CDate(CAL_FECHA) - i, "YYYY/MM/DD") Me.cmb_FFin.AddItem Format(CDate(CAL_FECHA) - i, "YYYY/MM/DD") Next i Me.cmb_Fini.ListIndex = 180 Me.cmb_FFin.ListIndex = 0 SQL = "Select * from linea Where Cod_Linea not in (0,1,6,13,14) order by Nom_Linea" Rs.Open SQL, Db Me.cmb_LProd.Clear Me.List_LProd.Clear If Not Rs.EOF Then While Not Rs.EOF Me.cmb_LProd.AddItem Rs("Nom_Linea") Me.List_LProd.AddItem Rs("Cod_Linea") Rs.MoveNext Wend Me.cmb_LProd.AddItem "TODAS" Me.List_LProd.AddItem "999" End If Rs.Close Db.Close Me.cmb_LProd.ListIndex = 0 Me.List_LProd.ListIndex = Me.cmb_LProd.ListIndex End Sub Private Sub cmb_LProd_Click() Me.List_LProd.ListIndex = Me.cmb_LProd.ListIndex End Sub Private Sub cmd_Aceptar_Click() Dim Db As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim Rs2 As New ADODB.Recordset Dim Rs3 As New ADODB.Recordset Dim Rs4 As New ADODB.Recordset Dim SQL As String Dim i As Integer Dim j As Long Dim k As Long Dim sLineas As String Dim QLote, QTarjeta, QEmpaque As Integer '------------------------------------ Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False '------------------------------------ Hoja1.Range("A10:U20000").Clear Hoja1.Range("A10:U20000").Interior.Color = &HF5F5F5 Hoja1.Range("A10:U20000").Font.Color = &H8000000D Hoja1.Cells(4, 1) = "Intervalo:" & Me.cmb_Fini & "-" & Me.cmb_FFin Hoja1.Cells(5, 1) = "Linea de Producción:" & Me.cmb_LProd SQL = "Select C.nom_cliente,O.Cod_Cliente,O.Cod_Obra,O.Estado,O.FAprob,O.FDesp,P.NoOrden_Pprog,P.CodLote_pprog, L.nom_linea,min(P.Fecha_Pprog) Fecha_Pprog,Sum(P.Cantidad_Pprog) Cantidad, OT.descrip_tord " SQL = SQL & "From cliente C, orden O, programacion_prod P, linea L, ordentipo OT " SQL = SQL & "Where O.Cod_Cliente=P.CodCliente_Pprog AND " SQL = SQL & "O.No_Orden=P.NoOrden_Pprog AND " SQL = SQL & "P.CodLote_pprog<>-1 AND P.codlinea_pprog=L.cod_linea AND O.codtipoorden = OT.cod_tord AND C.cod_cliente not in (2478,2479) AND " If Me.cmb_LProd.List(Me.cmb_LProd.ListIndex) <> "TODAS" Then SQL = SQL & "P.CodLinea_Pprog=" & Me.List_LProd.List(Me.cmb_LProd.ListIndex) & " AND " End If SQL = SQL & "P.Fecha_pprog>='" & Me.cmb_Fini & "' AND " SQL = SQL & "P.Fecha_pprog<='" & Me.cmb_FFin & "' AND " SQL = SQL & "C.cod_cliente=O.cod_cliente " SQL = SQL & "AND O.ESTADO='APROBADA' " [COLOR=#ff0000] SQL = SQL & "Group BY C.nom_cliente,O.Cod_Cliente,O.Cod_Obra,O.Estado,O.FAprob,P.NoOrden_Pprog,P.CodLote_pprog,L.nom_linea " SQL = SQL & "Order BY O.FAprob,P.NoOrden_Pprog, P.CodLote_pprog"[/COLOR] Db.Open CONSTRING Rs.Open SQL, Db i = 10 While Not Rs.EOF DoEvents Hoja1.Cells(i, 20) = Rs("Nom_Linea") Hoja1.Cells(i, 21) = Rs("descrip_tord") Hoja1.Cells(i, 1) = Rs("Nom_Cliente") 'Obra SQL = "Select Nom_Obra From obra Where Cod_Cliente='" & Rs("Cod_Cliente") & "' and Cod_Obra='" & Rs("Cod_Obra") & "'" Rs3.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 2) = Rs3("Nom_Obra") End If Rs3.Close 'ANCHO SQL = "Select Ancho_mm From detalle_pedido Where Cod_Cliente='" & Rs("Cod_Cliente") & "' and no_orden='" & Rs("noorden_pprog") & "'" Rs3.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 23) = Rs3("Ancho_mm") End If Rs3.Close 'LARGO '''''''''''''''''' SQL = "Select Largo_mm From detalle_pedido Where Cod_Cliente='" & Rs("Cod_Cliente") & "' and no_orden='" & Rs("noorden_pprog") & "'" Rs3.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 24) = Rs3("Largo_mm") End If Rs3.Close 'ITEM '''''''''''''''''' SQL = "Select N_Item From detalle_pedido Where Cod_Cliente='" & Rs("Cod_Cliente") & "' and no_orden='" & Rs("noorden_pprog") & "'" Rs3.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 22) = Rs3("N_Item") End If Rs3.Close 'COMPOSICION SQL = "Select Composicion From orden Where Cod_Cliente='" & Rs("Cod_Cliente") & "' and no_orden='" & Rs("noorden_pprog") & "'" Rs3.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 25) = Rs3("Composicion") End If Rs3.Close 'M2 Hoja1.Cells(i, 3) = Rs("NoOrden_Pprog") & IIf(Mid(Rs("estado"), 1, 2) = "AP", "", "(" & Mid(Rs("estado"), 1, 2) & ")") Hoja1.Cells(i, 4) = Rs("CodLote_pprog") Hoja1.Cells(i, 5) = Rs("Cantidad") 'Fecha Aprobación If Rs("FAprob") > Rs("Fecha_Pprog") Then Hoja1.Cells(i, 6) = Rs("Fecha_Pprog") Else If Trim(Rs("faprob")) = "" Then Hoja1.Cells(i, 6) = Rs("Fecha_Pprog") Else Hoja1.Cells(i, 6) = Rs("FAprob") End If End If Hoja1.Cells(i, 7) = Rs("FDesp") 'Fecha Programación Hoja1.Cells(i, 8) = Rs("Fecha_Pprog") Hoja1.Cells(i, 14) = DateDiff("d", CDate(Rs("Fecha_Pprog")), Format(Now(), "yyyy/mm/dd")) Hoja1.Cells(i, 17) = DateDiff("d", CDate(Rs("FAprob")), Format(Now(), "yyyy/mm/dd")) 'Fecha Corte SQL = "Select min(Fecha) fechaini From corte " SQL = SQL & "Where No_Lote =" & Rs("CodLote_pprog") & "" Rs3.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 9) = Rs3("fechaini") End If Hoja1.Cells(i, 18) = DateDiff("d", CDate(Rs("FAprob")), Rs3("fechaini")) Rs3.Close Hoja1.Cells(i, 12) = CInt(DateDiff("d", CDate(Hoja1.Cells(i, 6)), Format(Now, "YYYY/MM/DD"))) Hoja1.Cells(i, 11) = CInt(DateDiff("d", CDate(Hoja1.Cells(i, 6)), CDate(Hoja1.Cells(i, 8)))) QLote = 0 QTarjeta = 0 QEmpaque = 0 If Rs("noorden_pprog") = "4500017903" Then a = 0 End If SQL = "Select sum(Cantidad)-sum(Empacado) dif from detalle_pedido where cod_cliente='" & Rs("cod_cliente") & "' and no_orden='" & Rs("noorden_pprog") & "'" Rs2.Open SQL, Db If Not Rs2.EOF Then If Rs2("Dif") > 0 Then SQL = "Select Sum(Cantidad),Sum(cantidad)-Sum(empacado) From detalle_lote Where cod_cliente='" & Rs("cod_cliente") & "' and No_Lote=" & Rs("CodLote_pprog") & " and No_Orden= '" & Rs("NoOrden_Pprog") & "'" Rs3.Open SQL, Db If Not Rs3.EOF And Rs3(1) > 0 Then QLote = Rs("Cantidad") SQL = "Select Sum(En_TarjetaEsp) From tarjeta T,detalle_tarjeta DT Where T.Cod_tarjeta=DT.Cod_Tarjeta and T.cod_cliente='" & Rs("cod_cliente") & "' and No_Orden= '" & Rs("NoOrden_Pprog") & "' and No_Lote=" & Rs("CodLote_pprog") & "" 'If InStr(1, Me.cmb_LProd.List(Me.cmb_LProd.ListIndex), "LAMINADO") = 0 Then ' SQL = SQL & " and cod_empaque like 'E%'" 'Else SQL = SQL & " and num_linea=" & Me.List_LProd.List(Me.cmb_LProd.ListIndex) & "" 'End If Rs4.Open SQL, Db If Not Rs4.EOF And Rs4(0) <> "" Then QEmpaque = Rs4(0) Else QEmpaque = 0 End If Rs4.Close Hoja1.Cells(i, 13) = QLote - QEmpaque 'QUERY para Mt2 Faltantes por producir. - Rafa SQL = "Select B.Mt2_Tarjeta,A.Mt2_Lote " _ & "From " _ & "(Select sum(round((dp.ancho_mm*dp.largo_mm)/1000000,2) * pp.cantidad_pprog) Mt2_Lote,dp.cod_cliente,dp.no_orden " _ & "From programacion_prod pp " _ & "Inner Join detalle_pedido dp on dp.cod_cliente=pp.codcliente_pprog and dp.no_orden=pp.noorden_pprog and dp.n_item=pp.nitem_pprog " _ & "Where pp.codcliente_pprog = " & Rs("cod_cliente") & " and pp.noorden_pprog = '" & Rs("NoOrden_Pprog") & "' and pp.codlote_pprog = " & Rs("CodLote_pprog") & " and pp.codlinea_pprog = " & Me.List_LProd.List(Me.cmb_LProd.ListIndex) & " Group by pp.codcliente_pprog,pp.noorden_pprog ) A " _ & "Left Join " _ & "(Select sum(round((dp.ancho_mm*dp.largo_mm)/1000000,2) * en_tarjetaesp) Mt2_Tarjeta, dl.cod_cliente,dl.no_orden " _ & "From detalle_lote dl " _ & "Left Join tarjeta t on t.cod_cliente=dl.cod_cliente and t.no_orden=dl.no_orden " _ & "Left Join detalle_tarjeta dt on dt.cod_tarjeta=t.cod_tarjeta and dt.no_lote=dl.no_lote and dt.no_item=dl.n_item " _ & "Inner Join detalle_pedido dp on dp.cod_cliente=dl.cod_cliente and dp.no_orden=dl.no_orden and dp.n_item=dl.n_item " _ & "Where dl.cod_cliente = " & Rs("cod_cliente") & " and dl.no_orden = '" & Rs("NoOrden_Pprog") & "' and dl.no_lote = " & Rs("CodLote_pprog") & " and num_linea=" & Me.List_LProd.List(Me.cmb_LProd.ListIndex) & " Group by dl.cod_cliente,dl.no_orden) B on A.cod_cliente=B.cod_cliente and A.no_orden=B.no_orden " Rs4.Open SQL, Db If Not Rs4.EOF Then Hoja1.Cells(i, 19) = Rs4(1) - (IIf(IsNull(Rs4(0)), 0, Rs4(0))) Else Hoja1.Cells(i, 19) = 0 End If Rs4.Close If Hoja1.Cells(i, 13) <= 0 Then 'Fecha Ultimo Empaque SQL = "Select max(fecha_actualizacion) UltEmp, sum(en_tarjetaesp) TEmp " SQL = SQL & " From tarjeta e,detalle_tarjeta de " SQL = SQL & " Where e.cod_tarjeta=de.cod_tarjeta and e.cod_cliente='" & Rs("cod_cliente") & "' and de.no_lote=" & Rs("CodLote_pprog") & " and e.no_orden= '" & Rs("NoOrden_Pprog") & "'" Rs4.Open SQL, Db If Not Rs3.EOF Then Hoja1.Cells(i, 12) = CInt(DateDiff("d", CDate(Hoja1.Cells(i, 6)), CDate(Rs4("UltEmp")))) Hoja1.Cells(i, 10) = Rs4("UltEmp") End If Rs4.Close Else cant = 1 If Me.List_LProd.List(Me.cmb_LProd.ListIndex) = 4 Then SQL = "Select count(distinct(codlinea_pprog)) " SQL = SQL & "From programacion_prod P " SQL = SQL & "Where " SQL = SQL & "P.CodLote_pprog<>-1 AND " SQL = SQL & "codcliente_pprog>='" & Rs("cod_cliente") & "' AND " SQL = SQL & "noorden_pprog='" & Rs("noorden_pprog") & "' " Rs4.Open SQL, Db If Not Rs4.EOF Then cant = Rs4(0) End If Rs4.Close End If Select Case cant Case Is = 1 If Hoja1.Cells(i, 12) > 3 Then Hoja1.Cells(i, 1).Interior.Color = &HFF& Hoja1.Cells(i, 2).Interior.Color = &HFF& Hoja1.Cells(i, 3).Interior.Color = &HFF& Hoja1.Cells(i, 4).Interior.Color = &HFF& Hoja1.Cells(i, 5).Interior.Color = &HFF& Hoja1.Cells(i, 6).Interior.Color = &HFF& Hoja1.Cells(i, 7).Interior.Color = &HFF& Hoja1.Cells(i, 8).Interior.Color = &HFF& Hoja1.Cells(i, 9).Interior.Color = &HFF& Hoja1.Cells(i, 10).Interior.Color = &HFF& Hoja1.Cells(i, 11).Interior.Color = &HFF& Hoja1.Cells(i, 12).Interior.Color = &HFF& Hoja1.Cells(i, 13).Interior.Color = &HFF& Hoja1.Cells(i, 15).Interior.Color = &HFF& Hoja1.Cells(i, 10) = "VENCIDO" Else Hoja1.Cells(i, 1).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 2).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 3).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 4).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 5).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 6).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 7).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 8).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 9).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 10).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 11).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 12).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 13).Interior.Color = &HFF& Hoja1.Cells(i, 10) = "NO VENCIDO" End If Case Is > 1 If Hoja1.Cells(i, 12) > 7 Then Hoja1.Cells(i, 1).Interior.Color = &HFF& Hoja1.Cells(i, 2).Interior.Color = &HFF& Hoja1.Cells(i, 3).Interior.Color = &HFF& Hoja1.Cells(i, 4).Interior.Color = &HFF& Hoja1.Cells(i, 5).Interior.Color = &HFF& Hoja1.Cells(i, 6).Interior.Color = &HFF& Hoja1.Cells(i, 7).Interior.Color = &HFF& Hoja1.Cells(i, 8).Interior.Color = &HFF& Hoja1.Cells(i, 9).Interior.Color = &HFF& Hoja1.Cells(i, 10).Interior.Color = &HFF& Hoja1.Cells(i, 11).Interior.Color = &HFF& Hoja1.Cells(i, 12).Interior.Color = &HFF& Hoja1.Cells(i, 13).Interior.Color = &HFF& Hoja1.Cells(i, 17).Interior.Color = &HFF& Hoja1.Cells(i, 10) = "VENCIDO" Else Hoja1.Cells(i, 1).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 2).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 3).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 4).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 5).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 6).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 7).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 8).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 9).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 10).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 11).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 12).Interior.Color = &HD0C0A8 Hoja1.Cells(i, 13).Interior.Color = &HFF& Hoja1.Cells(i, 10) = "NO VENCIDO" End If End Select End If Else 'terminado 'Fecha Ultimo Empaque SQL = "Select max(fecha_actualizacion) UltEmp " SQL = SQL & " From tarjeta e,detalle_tarjeta de " SQL = SQL & " Where e.cod_tarjeta=de.cod_tarjeta and e.cod_cliente='" & Rs("cod_cliente") & "' and de.no_lote=" & Rs("CodLote_pprog") & " and e.no_orden= '" & Rs("NoOrden_Pprog") & "'" Rs4.Open SQL, Db If Not Rs4.EOF And IsNull(Rs4("ultemp")) = False Then Hoja1.Cells(i, 12) = CInt(DateDiff("d", CDate(Hoja1.Cells(i, 6)), CDate(Rs4("UltEmp")))) Hoja1.Cells(i, 10) = Rs4("UltEmp") End If Rs4.Close Hoja1.Cells(i, 13) = QLote - QEmpaque End If Rs3.Close Else 'terminado 'Fecha Ultimo Empaque SQL = "Select max(fecha_actualizacion) UltEmp " SQL = SQL & " From tarjeta e,detalle_tarjeta de " SQL = SQL & " Where e.cod_tarjeta=de.cod_tarjeta and e.cod_cliente='" & Rs("cod_cliente") & "' and de.no_lote=" & Rs("CodLote_pprog") & " and e.no_orden= '" & Rs("NoOrden_Pprog") & "'" Rs4.Open SQL, Db If Not Rs4.EOF And IsNull(Rs4("ultemp")) = False Then Hoja1.Cells(i, 12) = CInt(DateDiff("d", CDate(Hoja1.Cells(i, 6)), CDate(Rs4("UltEmp")))) Hoja1.Cells(i, 10) = Rs4("UltEmp") End If Rs4.Close Hoja1.Cells(i, 13) = QLote - QEmpaque End If End If Rs2.Close 'Si es cero no pasa a la siguiente línea If CStr(Hoja1.Cells(i, 13)) <> 0 Then sLineas = "" SQL = "select nom_linea from linea, orden_linea where cod_linea=codlinea_ola and " _ & "codcliente_ola=" & Rs("Cod_Cliente") & " and noorden_ola='" & Rs("NoOrden_Pprog") & "' " _ & "group by nom_linea order by nom_linea" Rs3.Open SQL, Db While Not Rs3.EOF sLineas = sLineas & "-" & Left(Rs3("nom_linea"), 3) '& IIf(IsNumeric(Right(Rs3("nom_linea"), 1)), Right(Rs3("nom_linea"), 1), "") Rs3.MoveNext Wend Rs3.Close Hoja1.Cells(i, 15) = Right(sLineas, Len(sLineas) - 1) i = i + 1 End If Rs.MoveNext Wend Rs.Close Db.Close If CStr(Hoja1.Cells(i, 13)) = "0" Then Hoja1.Range("A" & i, "U" & i) = "" End If '--------------------------- Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True ActiveSheet.DisplayPageBreaks = True Application.CutCopyMode = False '------------------------------- UserForm1.Hide End Subel texto sombreado con rojo es el que agrupa los datos, pero al quitar este group by no me aparece nada en la hoja.
les agradezco su atención.
Editado por moderación para envolver código con etiquetas.