Echo un lio Problema

10/02/2004 - 13:50 por Marcos | Informe spam
Vamos a ver os cuento my problem
Tengo que realizar una bd para la gestion del tiempo de una empresa.
Tengo una tabla Usuarios, otra Tareas y otra de Calendario
En la tabla Calendario inserto las tareas de cada usuario una vez que se han
definido su fecha de inicio, fin y periodicidad
ejemplo Tarea : Formacion en sql server
Periodicidad Diaria
Fecha de inicio 1-1-04
Fecha de Fin 1-1-05
Hora de Inicio XXXX
Hora de Fin XXX
ID_USUARIO
ID_TAREA
entonces la agregaria 365 veces hasta aqui no hay problema esto lo he hecho
con store procedure y un buche while.
Para que cada usuario Vea su calendario estoy haceiendo un asp que ejecuta
un Store procedure que utiliza como parmetro de entrada el id_Usuario y
muestra los resultados en un recordset pues no se que ha pasado porque me ha
caido todo el Sql lentísimo y se me queda el ordenador medio colgao no se
que me pasa.
Alguna sugerencia por favor..

Preguntas similare

Leer las respuestas

#6 Marcos
11/02/2004 - 14:40 | Informe spam
Ya tengo el problema solucionado era desde el asp que habia un fallo al
llamar al store procedure
Javier puedes contarme algo mas de tu solucion para evitar el bucle while:
Si no entendi mal te refieres a que cree una tabla FECHAS con todos los
posibles dias.

¿ Y despues como hago para que definida una tarea con una fecha de inicio y
de fin y una periodicidad la inserte en el calendario tantas veces como
dicha periodicidad utilizando el join que propones con la tabla de fechas,?

Un Saludo.

"Javier Loria" escribió en el mensaje
news:
Hola Marcos:
El comportamiento que describes ".. todo el Sql lentísimo y se me


queda
el ordenador medio colgao ..." es frecuente cuando hay problemas de
bloqueos. Podrias revisar si este es el problema(podrian ser otros), con


el
Monitor de Sistema y agregando como contadores
=> SQL Server: Tiempo Promedio de Espera (ms)
SQL Server: Peticiones de bloqueo/seg.
SQL Server: Esperas de bloqueos/seg
==> Si encuentras que efectivamente los problemas se producen en esta area
podrias revisar el codigo de la aplicacion, para evitar dichos bloqueos.
Por ultimo podrias evitar el ciclo WHILE si haces un JOIN con una


tabla
auxiliar que tenga todas las fechas.

Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Marcos escribio:
> Vamos a ver os cuento my problem
> Tengo que realizar una bd para la gestion del tiempo de una empresa.
> Tengo una tabla Usuarios, otra Tareas y otra de Calendario
> En la tabla Calendario inserto las tareas de cada usuario una vez que
> se han definido su fecha de inicio, fin y periodicidad
> ejemplo Tarea : Formacion en sql server
> Periodicidad Diaria
> Fecha de inicio 1-1-04
> Fecha de Fin 1-1-05
> Hora de Inicio XXXX
> Hora de Fin XXX
> ID_USUARIO
> ID_TAREA
> entonces la agregaria 365 veces hasta aqui no hay problema esto lo
> he hecho con store procedure y un buche while.
> Para que cada usuario Vea su calendario estoy haceiendo un asp que
> ejecuta un Store procedure que utiliza como parmetro de entrada el
> id_Usuario y muestra los resultados en un recordset pues no se que ha
> pasado porque me ha caido todo el Sql lentísimo y se me queda el
> ordenador medio colgao no se que me pasa.
> Alguna sugerencia por favor..


Respuesta Responder a este mensaje
#7 Javier Loria
11/02/2004 - 17:06 | Informe spam
Hola Marcos:
Primero debes crear una Tabla con TODAS las Fechas, y con algunas
columnas que sean "interesantes" para tu aplicacion. Por ejemplo:
=CREATE TABLE FechasHlp(
Fecha SMALLDATETIME
NOT NULL PRIMARY KEY
, EsLaboral TINYINT
NOT NULL CHECK(EsLaboral IN (0,1))
DEFAULT 1
, EsFinSemana TINYINT
NOT NULL CHECK(EsFinSemana IN (0,1))
DEFAULT 0
Puedes Continuar con otras Columnas.
)
No todo tiene que estar calculado en la tabla, puede tambier usar la
columna Fecha como base para calculos usando las funciones de SQL.
Luego llenas la tabla, para esto puedes usar tu ciclo WHILE con algunos
cambios o desde Excel llenar los datos y luego importarlos a SQL.
Una vez lista, puedes usarla mas o menos asi:
INSERT Calendario(, Inicio, Final)
SELECT
DATEADD(hh,@InicioHora,DATEADD(mi,@InicioMinuto,Fecha)),

DATEADD(hh,@FinalHora,DATEADD(mi,@FinalMinuto,Fecha)),
FROM FechasHlp
WHERE EsLaboral=1
AND Fecha BETWEEN @FechaInicio AND @FechaFinal
Esto asumiendo que tienes los parametros de Inicio y Final como enteros
con horas y minutos, pero si lo tienes en formato de caracter tipo
"08:00:00" puedes convertir la fecha a CHAR, concatenar la Hora y Convertir
de nuevo a fecha. Por ejemplo:
CONVERT(SMALLDATETIME,
CONVERT(CHAR(11),Fecha,120)+'@HoraInicio,120)
Con este SELECT se pueden hacer JOIN con cualquier otra de tus tablas.
Si lo que quieres es hacer todos los horarios posibles dentro de un rango,
simplemente haces un CROSS JOIN, si lo quieres hacer entre un rango de una
tabla pones la condicion del ON como menor que o mayor que la columna fecha:
Por ejemplo:
JOIN FechasHlp
ON Tabla.Fecha>=FechasHlp.Fecha

Espero te sirva,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Marcos escribio:
Ya tengo el problema solucionado era desde el asp que habia un fallo
al llamar al store procedure
Javier puedes contarme algo mas de tu solucion para evitar el bucle
while: Si no entendi mal te refieres a que cree una tabla FECHAS con
todos los posibles dias.

¿ Y despues como hago para que definida una tarea con una fecha de
inicio y de fin y una periodicidad la inserte en el calendario tantas
veces como dicha periodicidad utilizando el join que propones con la
tabla de fechas,?

Un Saludo.

"Javier Loria" escribió en el mensaje
news:
Hola Marcos:
El comportamiento que describes ".. todo el Sql lentísimo y se
me queda el ordenador medio colgao ..." es frecuente cuando hay
problemas de bloqueos. Podrias revisar si este es el
problema(podrian ser otros), con el Monitor de Sistema y agregando
como contadores =>> SQL Server: Tiempo Promedio de Espera (ms)
SQL Server: Peticiones de bloqueo/seg.
SQL Server: Esperas de bloqueos/seg
==>> Si encuentras que efectivamente los problemas se producen en esta
area podrias revisar el codigo de la aplicacion, para evitar dichos
bloqueos. Por ultimo podrias evitar el ciclo WHILE si haces un
JOIN con una tabla auxiliar que tenga todas las fechas.

Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Marcos escribio:
Vamos a ver os cuento my problem
Tengo que realizar una bd para la gestion del tiempo de una empresa.
Tengo una tabla Usuarios, otra Tareas y otra de Calendario
En la tabla Calendario inserto las tareas de cada usuario una vez
que se han definido su fecha de inicio, fin y periodicidad
ejemplo Tarea : Formacion en sql server
Periodicidad Diaria
Fecha de inicio 1-1-04
Fecha de Fin 1-1-05
Hora de Inicio XXXX
Hora de Fin XXX
ID_USUARIO
ID_TAREA
entonces la agregaria 365 veces hasta aqui no hay problema esto lo
he hecho con store procedure y un buche while.
Para que cada usuario Vea su calendario estoy haceiendo un asp que
ejecuta un Store procedure que utiliza como parmetro de entrada el
id_Usuario y muestra los resultados en un recordset pues no se que
ha pasado porque me ha caido todo el Sql lentísimo y se me queda el
ordenador medio colgao no se que me pasa.
Alguna sugerencia por favor..
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida