Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ASP
 SELECT COUNT
 Foro Bloqueado  Tema Bloqueado


Autor Temas
geminina
Starting Member


33 Posts
Mensajes - 28 Feb 2008 :  19:54:10  Ver Perfil  Enviar Email
siiii yo denuevo :)

Resulta k tengo una tabla que guarda asignaciones, donde esta el rut del trabajador y si se le asigno un sabado para trabajar...ese campo lo tengo kmo 1 ó 0, o sea, sabado =1, otro dia =0......

Bueno debo sacar un informe que dija k el trabajdor xxxxxxxx tuvo n sabados trabajados al mes por ejemplo....me he informado kmo hacerlo y utilizo la funcion count...pero parece k no la estoy usando bien..el problema es...kmo puedo visualizar en pantalla k tal trabajador trabajo 2 sabados por ejemplo:

sql = "select *from dbo.asignacion, usuario where rut_asig = rut_us and tipo_us = '1' "
sql = "select count(tipo_dia) from asignacion where tipo_dia = '1' and rut_asig="&rut %>

con es sintaxis...comparo a mis personajes para desplegarlos en el informe...pero al traer el valor de los sabados trabajados por mes...no los toma..bueno la verdad no se si los rescato bien...estoy usando response.write(sql) pero obviamente me muestra esto:

select count(tipo_dia) from asignacion where tipo_dia = '1' and rut_asig=15736555

no se kmo usar las variables para guardar las cantidades de registro k encuentra por trabajador.

cuento corto...kmo veo en la pantalla esto?

nombre sabados
A 2
B 1
C -

eso....please....helpme!!!!!!!!!!!!!!! :)

DonGato
Moderator

España
263 Posts
Posted - 28 Feb 2008 :  21:24:15  Ver perfil  Enviar e-mail  Visit DonGato's Homepage
yo, para hacer eso hago la select de toda la tabla y por codigo voy acumulando los valores en distintas variables, te pongo un ejemplo para que lo entiendas:

'lo primero de todo montar la select ordenada por trabajador
sql="select * from trabjadores order by trabajador"
'si solo lo vas a hacer de un trabajador vas a tiro hecho
sql="select * from trabajadores where trabajador="&idtrabajador
'monto el recordset
set rs=con.execute(sql)
'compruebo que el recordset tenga valores
if rs.eof=true and rs.bof=true then
response.write("No hay datos a mostrar")
else
'inicializo la varible y arranco el bucle
sabados=0
While Not rs.EOF
'hago las comprobaciones para ir agrupando en la variable
if rs("tipo_dia")=1 then
'cada vez que tipo dia sea igual a 1 incremento el valor
sabados=sabados+1
end if
rs.movenext
Wend
end if
rs.close
set rs=nothing
Response.write("El trabajador ha trabajado "&sabados&" sabados")

Tambien es posible hacerlo directamente desde sql, seria algo tal que asi
select count(*) from trabajadores where idtrabajador=1717 and dia_tipo=1
siempre y cuando los dos campos estuvieran en la misma tabla, sino es asi, dime cual es la estructura de tablas a ver si te lo puedo explicar.
Suerte

Inicio Pagina

buho_nero
Moderator

España
1316 Posts
Posted - 29 Feb 2008 :  08:57:21  Ver perfil  Enviar e-mail
Si en tu página lo único que muestras son los sábados trabajados se puede simplificar mucho el código. La solución de Don Gato es muy genérica, y si vas reutilizar la tabla para más cosas me parecería bien, pero hay que repartir trabajo entre la BBDD, la red y el código en servidor.
Al tema. Con unas tablas bien diseñadas, deberías poder resover con SQL, y así cargar el filtrado de datos en el gestor de la BBDD, que para eso está, y además lo hace muy bien (bueno, algunos). Lo que quieres hacer es agrupar el resultado de una tabla por trabajador, filtrarlo por sábado trabajado y realizar un count. Eso te lo hace SQL sin problemas.
Para darte la sentencia exacta debería conocer las tablas que usas, pero para que puedas ir mirando cosas busca un manual SQL y mírate los GROUP BY y similares.

La idea es que en tu recordset ya tengas:

trabajador -- sábados trabajados

Edited by - buho_nero on 29 Feb 2008 09:00:27Inicio Pagina

geminina
Starting Member


33 Posts
Posted - 29 Feb 2008 :  13:01:40  Ver perfil  Enviar e-mail
Buen Día DonGato, gracias por responder...

Bueno te cuento que mis tablas son las siguientes, siguiendo tu bosquejo...

tendría que sacar al trabajador de mi tabla USUARIO, tomo su rut y lo comparo con la tabla ASIGNACION la cual es la que contiene todos los datos que debo contalibizar, es decir, los sabados trabajados, los turnos, sus horas extras etc.

Una vez que rut_us = rut_asig..pregunto si tipo_dia = 1 si es true, debería utilizar el contador...o sea, la idea es mostrar (de acuerdo al mes que se elija) todos los trabajadoes y sus sabados (total) trabajados en ese mes...

ahora corregiré mi codigo con tu propuesta a ver como me va....

Saludos :)

Inicio Pagina

DonGato
Moderator

España
263 Posts
Posted - 29 Feb 2008 :  13:21:06  Ver perfil  Enviar e-mail  Visit DonGato's Homepage
Creo que haciendo algo tal que así tambien te valdría:

select count(*) from asignacion where asignacion.usuario in(select rut from usuario where idusuario=9876) and tipo_dia=1

Inicio Pagina

geminina
Starting Member


33 Posts
Posted - 29 Feb 2008 :  13:32:57  Ver perfil  Enviar e-mail
Mira asi quedaría mi código...pero sólo muestra el total para el primer rut asignados..o sea el camp1 y el camp2, el cual es una asignacion para el mismo rut

<%
set rs = createobject("ADODB.Recordset")
sql="select * from dbo.asignacion, dbo.usuario where tipo_us = '0' and tipo_dia='1' and rut_us = rut_asig"
rs.open sql,MM_turnos_bd_STRING

if rs.eof=true and rs.bof=true then
response.write("No hay datos a mostrar")
else
sabados=0
do While Not rs.EOF
rut = rs("rut_asig")
if rs("tipo_dia")=1 then
sabados=sabados+1
end if
rs.movenext
Loop
Response.write("El trabajador "&rut&" ha trabajado "&sabados&" sabados")
end if
rs.close
set rs=nothing
%>

en pantallas veo:

> El trabajador 15736555 ha trabajado 2 sabados

Como hago para ver todos los trabajadores???? y sus sabados??

Inicio Pagina

DonGato
Moderator

España
263 Posts
Posted - 29 Feb 2008 :  13:50:39  Ver perfil  Enviar e-mail  Visit DonGato's Homepage
Hazlo de la siguiente manera entonces:
<%
'al ponerlo dentro de un bucle generará el proceso de la suma de los sabados por cada trabajador.
sql="select idtrabajador from trabajadores order by trabajador"
set rs_t=con.execute(sql)
While Not rs_t.EOF
'Se monta el sql dependiendo del valor del idtrabajador.
'En el ejemplo no he puesto que haga la comprobacion de si existen trabajadores porque entiendo que la tabla siempre tendrá valores
sql="select tipo_dia from trabajadores where trabajador="&rs_t("idtrabajador")
'monto el recordset
set rs=con.execute(sql)
'compruebo que el recordset tenga valores
if rs.eof=true and rs.bof=true then
response.write("No hay datos a mostrar para el trabajador "&rs_t("idtrabajador"))
else
'inicializo la varible y arranco el bucle
sabados=0
While Not rs.EOF
'hago las comprobaciones para ir agrupando en la variable
if rs("tipo_dia")=1 then
'cada vez que tipo dia sea igual a 1 incremento el valor
sabados=sabados+1
end if
rs.movenext
Wend
end if
rs.close
set rs=nothing
Response.write("El operario " &rs_t("idtrabajador")& "ha trabajado "&sabados&" sabados"&"<br>")
rs_t.movenext
Wend
rs_t.close
set rs_t=nothing
%>

Inicio Pagina

Alexis_m20
Senior Member

Chile
1021 Posts
Posted - 29 Feb 2008 :  15:02:47  Ver perfil  Enviar e-mail  Visit Alexis_m20's Homepage
Por lo que entiendo el dia sabado siempre es 1 verdad??

Usa lo mismo del count pero con lo siguiente


select Sum(tipo_dia) from asignacion where rut_asig="&rut

Por lo tanto el sabdo sera exacto ya que siempre son 0 y 1.

el problema es si el rut no existe no te contara nada y simplemente quedara en nulo...

pero eso es un pelo de la cola


Si puedo ayudar lo hare
Inicio Pagina

geminina
Starting Member


33 Posts
Posted - 29 Feb 2008 :  15:14:01  Ver perfil  Enviar e-mail
Toy vieno la luz...:D...cuando tenga resultados coherentes te cuento

gracias DonGato

Inicio Pagina

DonGato
Moderator

España
263 Posts
Posted - 29 Feb 2008 :  16:02:51  Ver perfil  Enviar e-mail  Visit DonGato's Homepage
ok, animo y no pierdas de vista la bombilla!

Inicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar