Visual Basic - Consulta Select+count+where+between??

Life is soft - evento anual de software empresarial
 
Vista:

Consulta Select+count+where+between??

Publicado por Jose (3 intervenciones) el 10/11/2015 16:21:33
Buenas compañeros foreros. Poseo una tabla con ésta estructura

ID Fecha NombreMedico1 Vinculo1 NombreMedico2 Vinculo2 NombreMedico3 Vinculo3 NombreMedico4 Vinculo4
1 01/01/2015
2 02/01/2015
3 03/01/2015


Lo que necesito es filtrar mediante un combobox o datacombo (generalmente utilizo éste último), en el cual optaría entre Contrato, Renta o Venta para que me llene un listview de la siguiente manera:
*Por ejemplo.....Si elijo Contrato que llene la primer columna del listview con el Nombre de las personas que poseen contrato dentro de la columna NombreMedico1 +NombreMedico2+NombreMedico3+NombreMedico4 y en una segunda columna....que me cuente el total de veces que se repite. Tengo otra tabla donde están guardados los nombres de los trabajadores y su tipo de vínculo, asi que el Inner no deja de ser una opción. Cuelgo el codigo en el cual trabajo .....obviamente me cuenta solamente la primer columna.

1
2
3
4
5
6
7
8
9
10
11
12
RsResMed.Open "SELECT COUNT(NombreMedico1) AS CantMedico1,NombreMedico1 FROM GuardiasMedicas " & _
"WHERE FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND Vinculo1 = '" & StrMedi & "' GROUP BY NombreMedico1 " & _
"UNION SELECT COUNT(NombreMedico2) AS CantMedico2,NombreMedico2 FROM GuardiasMedicas " & _
"WHERE FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND Vinculo2 = '" & StrMedi & "' GROUP BY NombreMedico2 " & _
"UNION SELECT COUNT(NombreMedico3) AS CantMedico3,NombreMedico3 FROM GuardiasMedicas " & _
"WHERE FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND Vinculo3 = '" & StrMedi & "' GROUP BY NombreMedico3 " & _
"UNION SELECT COUNT(NombreMedico4) AS CantMedico4,NombreMedico4 FROM GuardiasMedicas " & _
"WHERE FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND Vinculo4 = '" & StrMedi & "' GROUP BY NombreMedico4 ", cnn, adOpenDynamic, adLockBatchOptimistic

al cargar el listview lo cargo asi....
1
2
3
4
5
While (RsResMed.EOF = False)
 
  Set li = ListViewResumenMedico.ListItems.Add(, , RsResMed("NombreMedico1"))
               li.ListSubItems.Add , , RsResMed("CantMedico1")
  RsResMed.MoveNext
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

Consulta Select+count+where+between??

Publicado por José (3 intervenciones) el 13/11/2015 03:59:36
Compañeros foreros............
he depurado hasta éste codigo

1
2
3
4
5
6
7
8
9
10
11
RsResMed.Open "SELECT M.NombreMedico,M.Vinculo,G.NombreMedico1,G.NombreMedico2,G.NombreMedico3,G.NombreMedico4,G.Vinculo1,G.Vinculo2,G.Vinculo3,G.Vinculo4 " & _
"FROM Medicos M,GuardiasMedicas G " & _
"LEFT JOIN (SELECT G.NombreMedico1, COUNT(G.Vinculo1) FROM GuardiasMedicas G WHERE M.Vinculo = G.Vinculo1 AND FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND G.Vinculo1 = '" & StrMedi & "' GROUP BY M.NombreMedico) " & _
"LEFT JOIN (SELECT G.NombreMedico2, COUNT(G.Vinculo2) FROM GuardiasMedicas G WHERE M.Vinculo = G.Vinculo2 AND FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND G.Vinculo2 = '" & StrMedi & "' GROUP BY M.NombreMedico) " & _
"LEFT JOIN (SELECT G.NombreMedico3, COUNT(G.Vinculo3) FROM GuardiasMedicas G WHERE M.Vinculo = G.Vinculo3 AND FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND G.Vinculo3 = '" & StrMedi & "' GROUP BY M.NombreMedico) " & _
"LEFT JOIN (SELECT G.NombreMedico4, COUNT(G.Vinculo4) FROM GuardiasMedicas G WHERE M.Vinculo = G.Vinculo4 AND FechaGuardia BETWEEN (#" & Format(DTPickerDesde, "yyyy/mm/dd") & "# )AND (#" & Format(DTPickerHasta, "yyyy/mm/dd") & "#) " & _
"AND G.Vinculo4 = '" & StrMedi & "' GROUP BY M.NombreMedico) " & _
", cnn, adOpenDynamic, adLockBatchOptimistic"



No estoy seguro de que este bien.....además al ejecutarlo me da el error 3709 en tiempo de ejecución.......alguna idea?
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