He creado la siguiente función que en teoría debería devolver la fecha de
los días con sábados que hay desde una fecha hasta hoy (desde el QA
funciona);
CREATE FUNCTION dbo.Sabados (@FechaI smalldatetime)
RETURNS @Tabla TABLE (Fecha smalldatetime)
BEGIN
declare @i int
declare @dia varchar(20)
declare @fecha datetime
select @i = 0
while @i > - DateDiff(Day, '01/10/2008', @FechaI)
begin
select @dia = DateName(dw, dateadd(d, @i, @FechaI))
select @fecha = DateAdd(d, @i, @FechaI)
if @dia in ('Sábado')
begin
INSERT INTO @Tabla Select convert(nvarchar, @fecha, 103)
end
select @i = @i - 1
end
RETURN
END
A la hora de llamarla así; Select dbo.Sabados(getdate()), me lanza el
siguiente error;
Servidor: mensaje 208, nivel 16, estado 1, línea 1
El nombre de objeto 'dbo.Sabados' no es válido.
Cuando se que el nombre de la función existe y que funciona si ejecuto el
código desde el QA, ¿qué estoy haciendo mal?.
Utilizo SQL Server 2000 SP4.
Gracias.
Servidor: mensaje 170, nivel 15, estado 1, línea 3
Línea 3: sintaxis incorrecta cerca de '('.
"JuanD" <xxxxxxxx> escribió en el mensaje
news:%23Gwe1OW...@TK2MSFTNGP02.phx.gbl...
"JuanD" <xxxxxxxx> escribió en el mensaje
news:%23Gwe1OW...@TK2MSFTNGP02.phx.gbl...
¿Has probado a guardar primero GETDATE() en una variable de tipo
datetime y pasársela a la función de usuario?
On 18 nov, 11:26, "JuanD" <xxxxxxxx> wrote:
> Y si hago esto;
> Select * From dbo.Sabados('18/11/2008')
> funciona, entonces, ¿cómo le paso la fecha actual?
>
> "JuanD" <xxxxxxxx> escribió en el mensajenews:%23Gwe1OW...@TK2MSFTNGP02.phx.gbl...
"Juan Diego Bueno" <moon...@gmail.com> escribió en el mensaje
news:fe83ebc4-a92a-4656...@b38g2000prf.googlegroups.com...
On 18 nov, 12:59, "JuanD" <xxxxxxxx> wrote:
> Gracias, pero no me vale porque debo utilizar la función dentro de una vista
> y las vistas no me dejan utilizar variables.
>
> "Juan Diego Bueno" <moonda...@gmail.com> escribió en el mensajenews:fe83ebc4-a92a-4656...@b38g2000prf.googlegroups.com...
> Hola JuanD:
>
> ¿Has probado a guardar primero GETDATE() en una variable de tipo
> datetime y pasársela a la función de usuario?
Pues entonces, lo mejor sería que integraras el GETDATE() dentro de la
propia función, por ejemplo, si se le pasa un NULL a la función o una
fecha tipo 1/1/1900 que la cambie por la fecha actual. De esa forma
podrás usar la función tanto para una fecha estática como para la
actual
Un saludo
select dbo.Sabados(getdate())
o asi, aunque innecesario quizas
select * from (select dbo.Sabados(getdate()))
chequealo a ver
"JuanD" <xxxxxxxx> escribió en el mensaje
news:erSi0eWS...@TK2MSFTNGP05.phx.gbl...
<Jose TH >>> escribió en el mensaje
news:u8mBTjXS...@TK2MSFTNGP03.phx.gbl...
<Jose TH >>> escribió en el mensaje
news:u8mBTjXS...@TK2MSFTNGP03.phx.gbl...
"JuanD" <xxxxxxxx> escribió en el mensaje
news:%23Jx%23BnXSJ...@TK2MSFTNGP06.phx.gbl...
<Jose TH >>> escribió en el mensaje
news:eZGY9pXS...@TK2MSFTNGP02.phx.gbl...
http://www.forosdelweb.com/f87/funcion-getdate-como-parametro-funcion-usuario-583545/
<Jose TH >>> escribió en el mensaje
news:eJnkbsXS...@TK2MSFTNGP04.phx.gbl...
<Jose TH >>> escribió en el mensaje
news:eJnkbsXS...@TK2MSFTNGP04.phx.gbl...
On 18 nov, 12:59, "JuanD" <xxxxxxxx> wrote:
> Gracias, pero no me vale porque debo utilizar la función dentro de una vista
> y las vistas no me dejan utilizar variables.
>
Prueba lo siguiente. Aunque no sea exactamente lo que quieres
te dará alguna idea.
Creamos un función Fechas() que devuelve una tabla con todas
las fechas en un rango y con el día de la semana ya precalculado.
La función es genérica, para poder utilizar en mas contextos.
-----
CREATE FUNCTION Fechas(@mindate DATETIME, @maxdate DATETIME)
RETURNS @Fechas TABLE (fecha DATETIME, diasemana INT)
AS
BEGIN
WHILE @mindate <= @maxdate
BEGIN
-- diasemana: 0=Sábado, 1=Domingo, 2=Lunes, etc.
INSERT INTO @fechas (fecha,diasemana)
VALUES (@mindate, (DATEPART(dw, @mindate)+@@DATEFIRST)%7)
SET @mindate = @mindate + 1
END
RETURN
END
-----
Ahora podemos utilizarla por ejemplo así:
select * from dbo.Fechas('20080101', '20101231')
o crear una vista:
create view vSabados as
select * from dbo.Fechas('20080101', '20101231') where diasemana=0
/* 0=Sábado, 1=Domingo, etc. */
La función también la puedes usar para crear una tabla (Calendario
o algo así) con un rango de fechas lo suficientemente amplio para
lo que creas que vas a necesitar. Después usas esa tabla en vez
de la función.
Saludos,
Carlos
Mi proposito era conseguir que me mostrara todas las fechas de sábados que
hay entre el '01/10/2008' y hoy, si alguna alma caritativa puede darme un
ejemplo de como se haría en una vista sin utilizar una función le estaría
eternemente agradecido.
Saludos.
<Jose TH >>> escribió en el mensaje
news:uMEnFvXS...@TK2MSFTNGP06.phx.gbl...
GETDATE() es una función 'nondeterministic' y no se puede
usar para definir UDF's (de las que se supone que si tienen
que ser 'deterministic').
Una función 'nondeterministic', realmente no es una función :)
Busca en la ayuda.
Saludos,
Carlos
"JuanD" <xxxxxxxx> escribió en el mensaje
news:u28OavXS...@TK2MSFTNGP05.phx.gbl...
"JuanD" <xxxxxxxx> escribió en el mensaje
news:uBvBbzXS...@TK2MSFTNGP06.phx.gbl...
On 18 nov, 13:56, "Carlos M. Calvelo" <c_jac...@hotmail.com> wrote:
>
> Ahora podemos utilizarla por ejemplo así:
>
> select * from dbo.Fechas('20080101', '20101231')
>
> o crear una vista:
>
> create view vSabados as
> select * from dbo.Fechas('20080101', '20101231') where diasemana=0
> /* 0=Sábado, 1=Domingo, etc. */
>
Tanto a la consulta como a la definición de la vista
le puedes añadir condiciones con el where, naturalmente.
Como solo quieres los sábados hasta hoy:
...
WHERE diasemana=0 AND fecha <= getdate()
Saludos,
Carlos
<Jose TH >>> escribió en el mensaje
news:OD4pc%23XSJH...@TK2MSFTNGP04.phx.gbl...
Gracias Carlos, son de estas cosas que uno olvida hasta que tiene que
usarlas.
Un saludo
"Carlos M. Calvelo" <c_ja...@hotmail.com> escribió en el mensaje
news:6ce0ebf6-1fd7-4362...@h23g2000prf.googlegroups.com...
<Jose TH >>> escribió en el mensaje
news:OtSNH7XS...@TK2MSFTNGP03.phx.gbl...
CREATE FUNCTION dbo.fn_NumberOfSats (@s DATETIME, @e DATETIME)
RETURNS INT AS
BEGIN
DECLARE @wks INT, @satDays INT
SET @wks = DATEDIFF( week, @s, @e) - 1
SELECT @satDays = @wks
IF DATEPART(weekday, @s + @@DATEFIRST - 1) < 7
SELECT @satDays = @satDays + 1
IF DATEPART(weekday, @e + @@DATEFIRST- 1) IN(6, 7)
SELECT @satDays = @satDays + 1
RETURN (@satDays)
END
GO
SELECT dbo.fn_NumberOfSats('20081001', GETDATE()) AS numberOfSats
--
--
Un saludo
-------------------------------
www.navento.com
Servicios de Localización GPS
De nada Juan.
Si no te interesa tener una función tan genérica porque solo le
ves aplicación para lo de los sábados, pues defines una función
más específica y la usas igual que la función Fechas().
Esta función devuelve una tabla con solo una columna con todos
los sábados entre dos fechas:
CREATE FUNCTION Sabados(@mindate DATETIME, @maxdate DATETIME)
RETURNS @Fechas TABLE (fecha DATETIME)
AS
BEGIN
DECLARE @ds INT
SET @ds = (DATEPART(dw, @mindate)+@@DATEFIRST)%7
IF @ds <> 0 -- @mindate no es sábado?
SET @mindate = @mindate + 7 - @ds -- sábado siguiente!
WHILE @mindate <= @maxdate
BEGIN
INSERT INTO @fechas (fecha) VALUES (@mindate)
SET @mindate = @mindate + 7
END
RETURN
END
Saludos,
Carlos
Otra opción que tienes es cambiar de versión a SQL Server 2008 que si no me
equivoco creo no tiene al menos el problema de llamar a getdate() dentro de
la funcion o en el parametro.
"JuanD" <xxxxxxxx> escribió en el mensaje
news:uCkPb9YS...@TK2MSFTNGP04.phx.gbl...
Create una tabla calendario y usala en la funcion.
create function dbo.Sabados (
@sd datetime,
@ed datetime
)
returns table
as
return (
select [fecha]
from dbo.calendario
where nombre_dia = 'Sabado' and fecha between @sd and @ed
)
GO
select *
from dbo.Sabados('20080101', '20081231')
GO
Why should I consider using an auxiliary calendar table?
http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html
AMB
On 18 nov, 17:58, Alejandro Mesa
<AlejandroM...@discussions.microsoft.com> wrote:
> JuanD,
>
> Create una tabla calendario y usala en la funcion.
>
De acuerdo con lo de la tabla. Pero....
teniendo ya la tabla, para que quiere la función? :-)
Saludos,
Carlos
Eso mismo pense yo, pero le deje la opcion al OP.
AMB
Por que tu lo digas.
> Yo evaluaría finalmente la necesidad de tener una vista así y no mejor hacer
> un Store procedure.
Yo no.
>> Por nada aunque con ese ejemplo cuando cambies de año tendrás que
>> modificar
>> la definición de la vista. .
>Por que tu lo digas.
Pues no porque yo lo diga.
Cualquiera con un mínimo de sentido común y conocimiento que se tope con una
vista con CONSTANTES incrustadas como ésta:
create view vSabados as
select * from dbo.Fechas('20080101', '20101231') where diasemana=0
Y no le quedaría más que decir que quien la pensó no se le ocurrió que hay
vida después del 2010. Qué brillante diseño!.
> >Yo evaluaría finalmente la necesidad de tener una vista así y no mejor
> >hacer
> >un Store procedure.
>Yo no.
Claro que no, es que tu mente anti Store Procedure no te permite admitir la
tontería que has planteado y que un store procedure puede usarse alguna vez.
Nota: Cuando vuelvas a plagiar la idea de otro, como la de la suma de 7
días, por lo menos da los créditos sí? copión! :)
Serás cateto! Ese es solo un ejemplo de como se puede usar la
función. La esencia es que los datos se presentan en forma
de tabla (vSabados) con las columnas que sea. La expresión
que define la vista es implementación. Nadie ha dicho que ponga
2010 en su solución final. Y hasta he propuesto usar una tabla
en vez de (o debajo de) la vista. Que no te enteras!
Tengo para ti un par de conceptos esenciales que se tienen que
tener en cuenta con el diseño lógico:
- Principio de Información
- Cierre relacional
- Independiencia lógica de datos
- Principio de intercambiabilidad
>
> > >Yo evaluaría finalmente la necesidad de tener una vista así y no mejor
> > >hacer
> > >un Store procedure.
> >Yo no.
>
> Claro que no, es que tu mente anti Store Procedure no te permite admitir la
> tontería que has planteado y que un store procedure puede usarse alguna vez.
Yo no soy anti nada, imbécil. Pero cada cosa para lo que es.
Y claro que se pueden usar alguna vez. Y a menudo también.
>
> Nota: Cuando vuelvas a plagiar la idea de otro, como la de la suma de 7
> días, por lo menos da los créditos sí? copión! :)
:o Vaya acusación! Cómo está el patio! :D
Que de sábado a sábado van siete días es una novedad! :)
Te refieres a eso?!!! Si quieres aceptamos eso como tu
aportación a la ciencia. Es una idea fundamental!
Vete a leer un libro, anda! Que total no creo que te enteres de
que estoy hablando. Idiota! O vete a hacer la contabilidad.
Ahora es "un ejemplo" que pusiste. Si hasta pusiste "CREATE VIEW". Busca
tu propio mensaje y lo verás.
No te sientas mal, entiendo tu enfado y tus insultos. Cualquiera se puede
equivocar y decir de vez en cuando, o muchas veces :), una barrabasada como
esa, hombre, no eres infalible.
Por cierto, no sé qué es "cateto" pero gracias, "colega".:)
>La esencia es que los datos se presentan en forma
>de tabla (vSabados) con las columnas que sea. La expresión
>que define la vista es implementación. Nadie ha dicho que ponga
>2010 en su solución final.
Pues lee tu propio mensaje. Ahora quieres decir lo contrario. Miralo aquí
ya que quieres desmentir lo que escribiste:
"Ahora podemos utilizarla por ejemplo así:
select * from dbo.Fechas('20080101', '20101231')
o crear una vista: <=FIJATE QUE DICE "VISTA"
create view vSabados as <=FIJATE QUE DICE "CREATE VIEW"
select * from dbo.Fechas('20080101', '20101231') where diasemana=0
/* 0=Sábado, 1=Domingo, etc. */
"
O "CREATE VIEW" no es para definir una VISTA ?
Si no quisiste decir eso ahora pues estoy seguro de que confundiste
totalmente al OP y a todo el que lo leyó.
>" La expresión que define la vista es implementación... Nadie ha dicho que
>ponga
>2010 en su solución final."
De cuál implementación hablas ? poner en vez de sólo hasta 2010 poner, por
ejemplo hasta el 2030 ? Es esa tu "implementación" ?
algo asi?:
create view vSabados as <=FIJATE QUE DICE "CREATE VIEW"
select * from dbo.Fechas('20080101', '20301231') where diasemana=0" ?
Supongamos que algo así es tu "implementación". Has pensado en el
performance de esa llamada a esa función para solo sacar los sábados de un
solo año o de un sólo mes ? parece que definitivamente no has pensado en
eso.... entonces de cuál implementación hablas!
Peor de ahí no puede ser. O quien sabe qué es lo que tu entiendes por
"implementación", estar modificando las vistas anualmente ?
> Y hasta he propuesto usar una tabla
>en vez de (o debajo de) la vista. Que no te enteras!
Pues claro que eso es OTRA cosa. Y esa debió ser quizá tu "mejor" solución,
porque... tabla y vista no es lo mismo, sabías? Tampoco hablaste de "Vista
materializada". Sabías ? :)
Pero para eso no tenías que quemarte las neuronas haciendo una función y
luego salir con el genial "CREATE VIEW" basado en la función con parámetros
constantes cuyo rango de años va a definirse en la "implementación".
Todo por no pensar en un store procedure al cual se le puede pasar como
parámetro getdate() en cualquier versión de SS o en su defecto usar la tabla
persistente como también propuso Alejandro. Que quizas el SP no se puede
llamar en un FROM?, para eso están las tablas temporales, eso es por lo
menos mas simple, mas eficiente o mas mantenible que la solucion que das.
Pero nada, me quedo con lo de la tabla calendario que propone Alejandro.
>Tengo para ti un par de conceptos esenciales que se tienen que
>ener en cuenta con el diseño lógico:
> Principio de Información
> Cierre relacional
> Independiencia lógica de datos
> Principio de intercambiabilidad
te felicito, se nota que estás leyendo. Seguro que allí nunca verás la
recomendación de hacer un CREATE VIEW con fechas constantes. O sí? a lo
mejor quien sabe :)
Por cierto, lo buscaste en la WikiPedia ???
>
> > >Yo evaluaría finalmente la necesidad de tener una vista así y no mejor
> > >hacer
> > >un Store procedure.
> >Yo no.
>
> Claro que no, es que tu mente anti Store Procedure no te permite admitir
> la
> tontería que has planteado y que un store procedure puede usarse alguna
> vez.
>
>Yo no soy anti nada, imbécil.
>
Pues ahora dices que no lo eres porque no te conviene decirlo pero crees que
no estamos hartos de leer todos tus mensajes al respecto y los de tu
apreciado compañerito Novoa, donde insultan a todo el que defiende un
poquito a los store procedures ?
>Pero cada cosa para lo que es.
>Y claro que se pueden usar alguna vez. Y a menudo también.
Eso!!! por fin!... te felicito. :)
>
> Nota: Cuando vuelvas a plagiar la idea de otro, como la de la suma de 7
> días, por lo menos da los créditos sí? copión! :)
>:o Vaya acusación! Cómo está el patio! :D
>Que de sábado a sábado van siete días es una novedad! :)
>?Te refieres a eso?!!! Si quieres aceptamos eso como tu
>aportación a la ciencia. Es una idea fundamental!
Pues claro porque hiciste la función originalmente sin eso, yendo día por
día, luego la corregiste después de leer mi mensaje pero, sabes algo? que
todavía se puede simplificar más. Anda! te lo dejo como tarea.... no te
preocupes, te perdono el plagio. :)
>Vete a leer un libro, anda! Que total no creo que te enteres de
>que estoy hablando. Idiota! O vete a hacer la contabilidad.
De nuevo, tus insultos te delatan. Para los demás lectores del foro que
vean de qué es que se tratan tus brillantes argumentos.
Dime en qué página del libro de tu ídolo CJ Date se recomienda que se
defina una vista como esta:
"create view vSabados as
select * from dbo.Fechas('20080101', '20101231') where diasemana=0"
y peor aún basada en una función como la propuesta?
O es en la Wikipedia que lo dice?
Hombre, hablando con seriedad, a quién se le ocurre ? y menos recomendarlo
en un foro como este con tanta gente experta.
No tienes por qué ponerte así y andar insultando porque alguien haya
observado ese mal intento que has dado como solución, por no decir otra
cosa.
Yo te exhorto humildemente que no tomes un foro para recomendar cosas como
esa, ya que la gente que está aprendiendo puede confundirse como le ha
pasado sin duda ninguna al OP.
Todavía estás a tiempo. Y, por cierto, contabilidad es mi otra profesión, a
mucho orgullo, y no me siento denigrado en lo absoluto por tu acostumbrada,
discriminadora y maliciosa insinuación.
Vete a tomar un té que le hará bien a ese mal genio. :)
On 18 nov, 22:26, "Jose TH" <>>> wrote:
> > >> Por nada aunque con ese ejemplo cuando cambies de año tendrás que
> > >> modificar
> > >> la definición de la vista. .
> > >Por que tu lo digas.
>
> > Pues no porque yo lo diga.
>
> > Cualquiera con un mínimo de sentido común y conocimiento que se tope con
> > una
> > vista con CONSTANTES incrustadas como ésta:
>
> > create view vSabados as
> > select * from dbo.Fechas('20080101', '20101231') where diasemana=0
>
> > Y no le quedaría más que decir que quien la pensó no se le ocurrió que hay
> > vida después del 2010. Qué brillante diseño!.
> >Serás cateto!
> >Ese es solo un ejemplo de como se puede usar la
> >función.
>
> Ahora es "un ejemplo" que pusiste. Si hasta pusiste "CREATE VIEW". Busca
> tu propio mensaje y lo verás.
De mi reacción original:
- Ahora podemos utilizarla por ejemplo así:
-
- select * from dbo.Fechas('20080101', '20101231')
-
- o crear una vista:
-
- ....
Pone claramente 'podemos.... *por ejemplo* ...'
>
> No te sientas mal, entiendo tu enfado y tus insultos.
Nunca me he encontrado mejor y no estoy enfadado.
Y que entiendas los insultos... lo dudo.
> Cualquiera se puede
> equivocar y decir de vez en cuando, o muchas veces :), una barrabasada como
> esa, hombre, no eres infalible.
>
> Por cierto, no sé qué es "cateto" pero gracias, "colega".:)
Está en el diccinario con varios significados.
Me refiero al que no va de geometría.
>
> >La esencia es que los datos se presentan en forma
> >de tabla (vSabados) con las columnas que sea. La expresión
> >que define la vista es implementación. Nadie ha dicho que ponga
> >2010 en su solución final.
>
> Pues lee tu propio mensaje. Ahora quieres decir lo contrario. Miralo aquí
> ya que quieres desmentir lo que escribiste:
>
> "Ahora podemos utilizarla por ejemplo así:
> select * from dbo.Fechas('20080101', '20101231')
> o crear una vista: <=FIJATE QUE DICE "VISTA"
>
> create view vSabados as <=FIJATE QUE DICE "CREATE VIEW"
> select * from dbo.Fechas('20080101', '20101231') where diasemana=0
> /* 0=Sábado, 1=Domingo, etc. */
> "
> O "CREATE VIEW" no es para definir una VISTA ?
> Si no quisiste decir eso ahora pues estoy seguro de que confundiste
> totalmente al OP y a todo el que lo leyó.
Si y todos son ejemplos. Por eso empieza todo con:
"Ahora podemos utilizarla por ejemplo así:"
>
> >" La expresión que define la vista es implementación... Nadie ha dicho que
> >ponga
> >2010 en su solución final."
>
> De cuál implementación hablas ?
Por eso tienes que ir a leer un libro.
> poner en vez de sólo hasta 2010 poner, por
> ejemplo hasta el 2030 ? Es esa tu "implementación" ?
>
> algo asi?:
> create view vSabados as <=FIJATE QUE DICE "CREATE VIEW"
> select * from dbo.Fechas('20080101', '20301231') where diasemana=0" ?
>
> Supongamos que algo así es tu "implementación". Has pensado en el
> performance de esa llamada a esa función para solo sacar los sábados de un
> solo año o de un sólo mes ? parece que definitivamente no has pensado en
> eso.... entonces de cuál implementación hablas!
Si he pensando en eso. Y por eso también digo que la función
es genérica para poder ser ulizada en muchos contextos.
Y por eso propongo también utilizarla para generar una
tabla y utilizar la tabla. Imbécil, que no sabes ni leer.
> Peor de ahí no puede ser. O quien sabe qué es lo que tu entiendes por
> "implementación", estar modificando las vistas anualmente ?
Por eso tienes que ir a leer un libro.
>
> > Y hasta he propuesto usar una tabla
> >en vez de (o debajo de) la vista. Que no te enteras!
>
> Pues claro que eso es OTRA cosa. Y esa debió ser quizá tu "mejor" solución,
> porque... tabla y vista no es lo mismo, sabías? Tampoco hablaste de "Vista
> materializada". Sabías ? :)
Si. Sabía! Por eso propongo usar la función para generar la tabla.
Y tabla y vista a nivel lógico si son lo mismo, borrico. Solo
la implementación es diferente. Vete a leer anda!
Es uno de los principios de los que te he hablado, pero
no te enteras.
> Pero para eso no tenías que quemarte las neuronas haciendo una función y
> luego salir con el genial "CREATE VIEW" basado en la función con parámetros
> constantes cuyo rango de años va a definirse en la "implementación".
Lo de "implementación" te tiene ocupado eh!?
Ya sabes cual es la solución.
> Todo por no pensar en un store procedure al cual se le puede pasar como
> parámetro getdate() en cualquier versión de SS
Eso también lo puede hacer en una vista en SS2000. Borrico!
> o en su defecto usar la tabla
> persistente como también propuso Alejandro.
Lo que propone Alejandro tiene muchísimo mas sentido que lo
que propones tu. Eso es seguro.
Yo he dado la opción de utilizar la función para generar una
tabla. Lee!
> Que quizas el SP no se puede
> llamar en un FROM?, para eso están las tablas temporales, eso es por lo
> menos mas simple, mas eficiente o mas mantenible que la solucion que das.
> Pero nada, me quedo con lo de la tabla calendario que propone Alejandro.
>
Busca la palabra Calendario en mi primer reacción.
Se te ve el plumero!
> >Tengo para ti un par de conceptos esenciales que se tienen que
> >ener en cuenta con el diseño lógico:
> > Principio de Información
> > Cierre relacional
> > Independiencia lógica de datos
> > Principio de intercambiabilidad
>
> te felicito, se nota que estás leyendo. Seguro que allí nunca verás la
> recomendación de hacer un CREATE VIEW con fechas constantes. O sí? a lo
> mejor quien sabe :)
> Por cierto, lo buscaste en la WikiPedia ???
>
>
>
> > > >Yo evaluaría finalmente la necesidad de tener una vista así y no mejor
> > > >hacer
> > > >un Store procedure.
> > >Yo no.
>
> > Claro que no, es que tu mente anti Store Procedure no te permite admitir
> > la
> > tontería que has planteado y que un store procedure puede usarse alguna
> > vez.
>
> >Yo no soy anti nada, imbécil.
>
> Pues ahora dices que no lo eres porque no te conviene decirlo pero crees que
> no estamos hartos de leer todos tus mensajes al respecto y los de tu
> apreciado compañerito Novoa, donde insultan a todo el que defiende un
> poquito a los store procedures ?
Pues no te has enterado. Criticamos 'cierto' uso de los SP.
>
> >Pero cada cosa para lo que es.
> >Y claro que se pueden usar alguna vez. Y a menudo también.
>
> Eso!!! por fin!... te felicito. :)
>
Te felicito yo a tí por haberte enterado ahora de lo que ya sabe
todo el mundo desde hace tiempo.
>
>
> > Nota: Cuando vuelvas a plagiar la idea de otro, como la de la suma de 7
> > días, por lo menos da los créditos sí? copión! :)
> >:o Vaya acusación! Cómo está el patio! :D
> >Que de sábado a sábado van siete días es una novedad! :)
> >?Te refieres a eso?!!! Si quieres aceptamos eso como tu
> >aportación a la ciencia. Es una idea fundamental!
>
> Pues claro porque hiciste la función originalmente sin eso, yendo día por
> día, luego la corregiste después de leer mi mensaje pero, sabes algo? que
> todavía se puede simplificar más. Anda! te lo dejo como tarea.... no te
> preocupes, te perdono el plagio. :)
Pero que imbécil eres chico! Ya dije en el primer post que
era una función genérica, etc etc.
Tarea tienes tu ya bastante. Hala... a leer eh!
>
> >Vete a leer un libro, anda! Que total no creo que te enteres de
> >que estoy hablando. Idiota! O vete a hacer la contabilidad.
>
> De nuevo, tus insultos te delatan. Para los demás lectores del foro que
> vean de qué es que se tratan tus brillantes argumentos.
Mira quien habla! Eres un desvergonzado después de haberte
comportado tu como te has comportado.
Que tu no entiendas mis 'brillantes argumentos' no los
hace menos 'brillantes' :)
>
> Dime en qué página del libro de tu ídolo CJ Date se recomienda que se
> defina una vista como esta:
y por que no vas y lo lees tu?
>
> "create view vSabados as
> select * from dbo.Fechas('20080101', '20101231') where diasemana=0"
> y peor aún basada en una función como la propuesta?
>
> O es en la Wikipedia que lo dice?
>
> Hombre, hablando con seriedad, a quién se le ocurre ? y menos recomendarlo
> en un foro como este con tanta gente experta.
LOL Ahora hasta me estás pareciendo gracioso. :)
Vete tu a recomendar sp's para todo, anda!
>
> No tienes por qué ponerte así y andar insultando porque alguien haya
> observado ese mal intento que has dado como solución, por no decir otra
> cosa.
>
> Yo te exhorto humildemente que no tomes un foro para recomendar cosas como
> esa, ya que la gente que está aprendiendo puede confundirse como le ha
> pasado sin duda ninguna al OP.
'humildemente' dice! No sabes lo que significa la palabra.
>
> Todavía estás a tiempo. Y, por cierto, contabilidad es mi otra profesión, a
> mucho orgullo, y no me siento denigrado en lo absoluto por tu acostumbrada,
> discriminadora y maliciosa insinuación.
Pero si no es denigración. Solo que pensé que tendrás que saber
hacer algo bien y quizás sea eso.
>
> Vete a tomar un té que le hará bien a ese mal genio. :)
Acabo ya de tomar ya un par, gracias! Aunque estaba de
muy buen genio.
Pero no dá resultado; sigo pensando que eres un gran imbécil.
Espero que entiendas que esta conversación no va a dar mucho
mas de sí. O necesitas que alguien te explique eso también?
Para los demás que leen el foro y quieran estar mejor enterados sepan que en
las versiones 2008 (y creo que en 2005 también) ya eso no es así para
GETDATE, por lo menos.
Búsquenlo en la ayuda.
Y GETDATE seguirá siendo una función 'nondetermistic', lo
cual no es *realmente* una función.
Pero eso no está en la ayuda. Borrico!
Sigues insultando, entiendo tu frustración por dejar al descubierto el
CREATE VIEW mágico que has propuesto jajajajajaj
Sé que vas a soñar varios días con ese CREATE VIEW.
>
> > Y no le quedaría más que decir que quien la pensó no se le ocurrió que
> > hay
> >función.
>>
> >Ahora es "un ejemplo" que pusiste. Si hasta pusiste "CREATE VIEW".
> >Busca
>> tu propio mensaje y lo verás.
>Pone claramente 'podemos.... *por ejemplo* ...'
Y a quién se le ocurre recomendar siquiera la POSIBILIDAD de un CREATE VIEW
con dos fechas constantes ? Hombre, CJ Date pasó por ti sin saber que pasó
:) realmente lo has leído ?... en serio, si quieres me lo dices en un email
privado como los que mandan por ahí que yo no se lo diré a nadie...
>
> No te sientas mal, entiendo tu enfado y tus insultos.
>Nunca me he encontrado mejor y no estoy enfadado.
>Y que entiendas los insultos... lo dudo.
Si no estás enfadado pues peor, ya que demuestras que tienes un genio de
policía de tránsito a las 12 meridiano. Hombre ve a terapia para controles
ese genio. Tu familia lo agradecerá.
> Cualquiera se puede
> equivocar y decir de vez en cuando, o muchas veces :), una barrabasada
> como
> esa, hombre, no eres infalible.
>
> Por cierto, no sé qué es "cateto" pero gracias, "colega".:)
>
>Está en el diccinario con varios significados.
>Me refiero al que no va de geometría.
>
Pero a ti te va mejor la acepción del de que hablaba Pitágoras, sobre todo
el opuesto. No aspiro a que entiendas eso.. pero...
> O "CREATE VIEW" no es para definir una VISTA ?
> Si no quisiste decir eso ahora pues estoy seguro de que confundiste
> totalmente al OP y a todo el que lo leyó.
>
>Si y todos son ejemplos. Por eso empieza todo con:
>"Ahora podemos utilizarla por ejemplo así:"
No hombre, no se vale hacer el ridículo. Admite tu falta y te va mejor,
hasta la "foro-audiencia" termine tomándote respeto. Cómo puedes decir una
cosa tan claramente y negarlo así sin inmutarte? Buenos consejos das a los
que buscan ayuda!
>
> >" La expresión que define la vista es implementación... Nadie ha dicho
> >que
> >ponga
> >2010 en su solución final."
>
> De cuál implementación hablas ?
>Por eso tienes que ir a leer un libro.
>
Si es que para ti implementación es tener que estar pendiente de rediseñar
las vistas con frecuencia. Si CJ Date te lee debe estar con dolor de
estómago de la risa. :)
> poner en vez de sólo hasta 2010 poner, por
> ejemplo hasta el 2030 ? Es esa tu "implementación" ?
>
> algo asi?:
> Supongamos que algo así es tu "implementación". Has pensado en el
> performance de esa llamada a esa función para solo sacar los sábados de un
> solo año o de un sólo mes ? parece que definitivamente no has pensado en
> eso.... entonces de cuál implementación hablas!
>Si he pensando en eso. Y por eso también digo que la función
>es genérica para poder ser ulizada en muchos contextos.
>Y por eso propongo también utilizarla para generar una
>tabla y utilizar la tabla. Imbécil, que no sabes ni leer.
>
Pues por eso te sugiero que te habrías ahorrado desde un principio ese
fatídico CREATE VIEW, por el que habrás de ser recordado de por vida
jajaja... Yo por lo pronto lo he enviado a todos mis amigos y empleados como
ejemplo de las cosas que NO se deben hacer ni mucho menos sugerir pública ni
privadamente jajajajajaj
> Peor de ahí no puede ser. O quien sabe qué es lo que tu entiendes por
> "implementación", estar modificando las vistas anualmente ?
>Por eso tienes que ir a leer un libro.
>
Claro, iré a la Wikipedia como tú y tu compañerito. :)
>
> Pues claro que eso es OTRA cosa. Y esa debió ser quizá tu "mejor"
> solución,
> porque... tabla y vista no es lo mismo, sabías? Tampoco hablaste de "Vista
> materializada". Sabías ? :)
>
>Si. Sabía! Por eso propongo usar la función para generar la tabla.
>
Tienes que estudiar un poco más SQL Server , sin duda. No te culpo, la
Wikipedia causa pereza.
>
>Y tabla y vista a nivel lógico si son lo mismo, borrico. Solo
>la implementación es diferente. Vete a leer anda!
>
>Es uno de los principios de los que te he hablado, pero
>no te enteras.
>
Si revisas o lees tu primer mensaje verás cómo confundes lo lógico con lo
físico cuando incluyes la burrada de incluir FECHAS CONSTANTES en la
definición de una vista.
Que buen concepto de nivel LóGICO tiene el que define una vista que ya el
1ero de Enero del 2011 no funciona.
La Wiki está formando una clase de profesionales!!!
> Pero para eso no tenías que quemarte las neuronas haciendo una función y
> luego salir con el genial "CREATE VIEW" basado en la función con
> parámetros
> constantes cuyo rango de años va a definirse en la "implementación".
>Lo de "implementación" te tiene ocupado eh!?
>Ya sabes cual es la solución.
>
Me disculpas pero debes agradecerme que estoy usando un método para provocar
razonamiento inductivo en ti a ver si terminas reconociendo la barrabasada
que has propuesto y te vuelves humilde por primera vez en tu vida y lo
admites.
> Todo por no pensar en un store procedure al cual se le puede pasar como
> parámetro getdate() en cualquier versión de SS
>
>Eso también lo puede hacer en una vista en SS2000. Borrico!
>
Pero dices en tu "VISTA" basada en una función con PARAMETROS FIJOS ???...
jajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajjajajajajajajajajajajajajajaj
...
Me disculpas pero tuve que pausar 10 minutos por la risa que me produjo tu
brillantez para no admitir que un SP se puede usar.
> o en su defecto usar la tabla
> persistente como también propuso Alejandro.
>Lo que propone Alejandro tiene muchísimo mas sentido que lo
>que propones tu. Eso es seguro.
>Yo he dado la opción de utilizar la función para generar una
>tabla. Lee!
>
Claro, ahora te conviene enfatizar la opción de la función para GENERAR la
tabla. Y el fiasco del CREATE VIEW ??? de eso es que estamos hablando, o ya
lo olvidaste.... ?
>
> Que quizas el SP no se puede
> llamar en un FROM?, para eso están las tablas temporales, eso es por lo
> menos mas simple, mas eficiente o mas mantenible que la solucion que das.
> Pero nada, me quedo con lo de la tabla calendario que propone Alejandro.
>
>Busca la palabra Calendario en mi primer reacción.
>
>Se te ve el plumero!
>
> >Yo no soy anti nada, imbécil.
>
> Pues ahora dices que no lo eres porque no te conviene decirlo pero crees
> que
> no estamos hartos de leer todos tus mensajes al respecto y los de tu
> apreciado compañerito Novoa, donde insultan a todo el que defiende un
> poquito a los store procedures ?
>
>Pues no te has enterado. Criticamos 'cierto' uso de los SP.
>
Esa es la estrategia para los tontos, para dar supuesta validez a tu
mentalidad anti-sp. En el fondo ustedes son eso: "anti-sp" totalmente
radicales.
>
>Te felicito yo a tí por haberte enterado ahora de lo que ya sabe
>todo el mundo desde hace tiempo.
>
Pues quien no se entera eres tu. Yo hace tiempo , seguro que antes de que
hicieras tu primer programa, que no uso SP's para insertar ni borrar ni
actualizar tablas. Ni tampoco los uso cuando una vista o la tabla directa me
da la necesaria flexiblidad para mis queries. Pero sí los uso para cuando
una consulta requiera algún truco en busca de eficiencia o mantenibilidad
como tablas temporales y eso. Y....sobre todo para cuando no procede crear
una vista con un criterio tan simplista y de novato como la barrabasada que
tú propusiste con tu ya famoso CREATE VIEW.
>
>
>
> todavía se puede simplificar más. Anda! te lo dejo como tarea.... no te
> preocupes, te perdono el plagio. :)
>Pero que imbécil eres chico! Ya dije en el primer post que
>era una función genérica, etc etc.
>
>Tarea tienes tu ya bastante. Hala... a leer eh!
>
Es que a alguien que esté aprendiendo se le perdona que haga un "+1" para
encontrar los sábados. Pero nada, los copiones están por todos lados, hasta
en los foros. Te perdono, no te sientas mal por eso tampoco.
Pero no te esfuerces de más que si piensas que por responder cualquier cosa
llegarás a borrar tu antológico CREATE VIEW, te equivocas jajajajajaj
>
>
> De nuevo, tus insultos te delatan. Para los demás lectores del foro que
> vean de qué es que se tratan tus brillantes argumentos.
>Mira quien habla! Eres un desvergonzado después de haberte
>comportado tu como te has comportado.
>Que tu no entiendas mis 'brillantes argumentos' no los
>hace menos 'brillantes' :)
>
Pareces que a tus brillantes argumentos les ha llegado el apagón :)
>
> Dime en qué página del libro de tu ídolo CJ Date se recomienda que se
> defina una vista como esta:
>
>y por que no vas y lo lees tu?
>
Pues fíjate que me atrevo a apostar a que lo leí mucho antes que ciertas
personas.
> O es en la Wikipedia que lo dice?
>
> Hombre, hablando con seriedad, a quién se le ocurre ? y menos recomendarlo
> en un foro como este con tanta gente experta.
>_LOL Ahora hasta me estás pareciendo gracioso. :)
>
Ya he visto como te burlas junto a tu compañerito de verdaderos gurúes que
hay en este foro.
Y por si acaso no estoy hablando de mi, siempre me considero como mi nick
anterior, un principiante. Pero hay algunos más principiantes que yo
queriendo aparentar erudición.
>
>Vete tu a recomendar sp's para todo, anda!
>
Deja ese chantaje. Vete tu a recomendar vistas para todo y sp para nada.
Absolutismo irracional se llama eso.
> pasado sin duda ninguna al OP.
>'humildemente' dice! No sabes lo que significa la palabra.
>
Aquí los que siempre empiezan con su actitud prepotente y discrimadora son
ustedes. Yo sólo me limito a responder al nivel a que me respondan.
Aunque si te fijas bien en este hilo, quien se rebaja eres tú con tus
palabras insultantes ya que te hiciste famoso por tu CREATE VIEW, yo no
tengo culpa de eso y de que te la pases insultando dando razón de que no
encuentras ni qué decir.
>
> Todavía estás a tiempo. Y, por cierto, contabilidad es mi otra profesión,
> a
> mucho orgullo, y no me siento denigrado en lo absoluto por tu
> acostumbrada,
> discriminadora y maliciosa insinuación.
>Pero si no es denigración. Solo que pensé que tendrás que saber
>hacer algo bien y quizás sea eso.
>
También sé pensar mejor la definición de un CREATE VIEW que cierta gente.
Eso lo puedes jurar! :)
>
> Vete a tomar un té que le hará bien a ese mal genio. :)
>Acabo ya de tomar ya un par, gracias! Aunque estaba de
>muy buen genio.
>
>Pero no dá resultado; sigo pensando que eres un gran imbécil.
>
Pues igualmente si eso ta hace feliz pero te repito sinceramente, busca
terapia para ese mal carácter que tu familia te lo agradecerá, si es que
tienes.
>
>Espero que entiendas que esta conversación no va a dar mucho
>mas de sí. O necesitas que alguien te explique eso también?
>
No, para mi no es problema. Podemos seguir hasta que quieras. Es importante
para que los que leen no se confundan con el espectáculo de tu CREATE VIEW.
No es por ti pues sé que en el fondo entiendes lo que digo y me das la
razón. Tu problema es que tu orgullo no te permite admitir la barrabasada
del CREATE VIEW que le recomendaste al OP.
Si admites tu error podemos dejarlo aquí y no pasa nada hombre.
Pero por lo menos hasta mañana no puedo seguir porque aquí ya es de noche.
Revisa tu mensaje o mejora tu redacción. Tienes que tratar de escribir con
más precisión o documentarte mejor, ya que le estás haciendo un mal servicio
a un foro donde entran personas buscando sanamente ayuda de cosas que
desconocen.
Imagínate que el OP o cualquier otro con la misma duda lea eso que tu
escribes en tu involuntaria ignorancia. Si no es porque yo les aclaro que
eso ya está resuelto en las nuevas versiones pues qué va a pasar? que
pensarán que eso no se puede y hasta "mueren pensando eso", claro sin
alusiones personales claro.. :)
"Carlos M. Calvelo" <c_ja...@hotmail.com> escribió en el mensaje
news:ef5e7f39-8aba-4703...@v22g2000pro.googlegroups.com...
No quieres entender que no se trata de frustración ni enfado.
Es para ver si tu también te das cuenta de lo imbécil que eres.
Por eso lo repito varias veces.
<cortado un monton de aire>
<bla bla bla>
> Imagínate que el OP o cualquier otro con la misma duda lea eso que tu
> escribes en tu involuntaria ignorancia. Si no es porque yo les aclaro que
> eso ya está resuelto en las nuevas versiones pues qué va a pasar?
Ufff Imagínate!!! Que todos fueran tan tontaina como tu!
Menos mal que estabas tu aquí para salvarlos a todos
de esa condena!
Eres ridículo total!
Todos ven claro como el Sr. Carlos Calvelo dice "la definición de la vista"
a pesar de que lo niega en otros mensajes.
.....................
Para los que leen el foro y tengan dudas similares a la planteada por el OP
y quieran un consejo más orientado a un mejor performance y mejor
mantenimiento del código de sus vistas:
No se les ocurra ni de asomo basar la definición de una vista en una función
con parámetros fijos y mucho menos de valores de fechas como lo que propone
el Sr. Carlos Calvelo, sobre todo para una función tipo tabla.
Las razones:
1) Mantenimiento: La vista no va a funcionar a partir del 1ero de Enero del
2011. Para que funcione habrá que modificar la definición de la vista. Y no
solo eso sino cada vez que se agote el período fijo que el Sr. Carlos
Calvelo indicó. Eso es una terrible decisión de diseño que ya es costosa
antes de "implementarla".
2)Performance: Aunque a la vista se le envíen parámetros como sugiere en
este mensaje el Sr. Carlos Calvelo, pues qué creen? la función ni se
enterará ya que como quiera para materializar la vista, la función tendrá
que generar la tabla completa para los 3 años, o sea 3 años por 52 sábados
aproximadamente, para solo sacar los pocos registros del parámetro de la
vista. Ni hablar de si en su implementación el Sr. Carlos Calvelo amplía el
rango de la definición de su vista a por ejemplo 30 años, se imaginan? para
sacar ej. los sábados de un solo mes, la función tendría que generar de
todos modos 30 x 52 sábados aproximadamente. Exagerado.
Soluciones:
1)La mejor debería ser la que propone el Sr. Alejandro Mesa y hasta menciona
de refilón el propio Sr. Carlos Calvelo, ya que es una tabla persistente a
la que consultaremos como cualquier tabla.
2)Usar un Store Procedure el cual en ninguna versión de SS tiene limitantes
ni para enviarle getdate() como parámetro ni para usar getdate() dentro de
su lógica. Sin embargo tiene la desventaja que no se puede usar como una
vista o función tipo tabla, es decir, como si fuese una tabla. Pero claro
que depende del uso que se le vaya a dar ya que si lo que se desea es
simplemente generar la tabla y traer los resultados a la aplicación, el SP
te basta y sobra.
3) Cambiarte a una versión más reciente de SQL Server que no tenga la
limitación del GetDate() que tienen las funciones de usuario en la versión
2000. Contrario a lo que sugiere alguien en un mensaje, deben saber que SS
2008 (que es el que uso actualmente) no tiene esa limitante. Pero creo que
ya la versión 2005 no la tenía.
Jose TH
"Tanto a la consulta como a la definición de la vista <==VES?
le puedes añadir condiciones con el where, naturalmente.
Como solo quieres los sábados hasta hoy:
...
WHERE diasemana=0 AND fecha <= getdate()
Saludos,
Carlos"
Pues otra brillante idea de "nivel lógico" le sugeriste ahí al OP.
Asumamos que tu función de parámetros fechas fijos no fuera lo que es...
jejej (perdona pero es que me sigue siendo risible) sino que realmente fuera
lo que tu supones en tu mal intento, crees que es una buena idea añadirle
esas condiciones EN EL WHERE a la definición de una vista ????????????? y
no a esa? a cualquier vista ?????
No piensas que fuera mejor que esa condición se indicase el el Query que
consulte la vista y no en la definición de ésta?
Qué pasaría si mañana fuesen los domingos y no los sábados ? o si mañana no
fuese a GetDate() sino a una fecha arbitraria? o que no fuese "A" una
fecha sino para un rango de fechas arbitrario ?
Te has fijado lo que has escrito ?
Eso también se aprende leyendo a CJ Date ? o es a la Wiki ?
Vuelve a leerte. Por eso es que te reitero que redactes con más cuidado
para que no confundas a la "foro-audiencia" ya que se supone que respondes
mensajes para ayudar no para desayudar.
>
> Sigues insultando, entiendo tu frustración por dejar al descubierto el
>No quieres entender que no se trata de frustración ni enfado.
>Es para ver si tu también te das cuenta de lo imbécil que eres.
>Por eso lo repito varias veces.
><cortado un monton de aire>
>
No, si yo no me ofendo porque me llames imbécil ya que estoy muy seguro de
que no lo soy.
También entiendo y te he dicho las razones por las que insultas, hasta te
comprendo y hasta me estás cayendo simpático :)
Pero no olvides la recomendación sobre el mal carácter que me lo agradecerás
de por vida. Es en serio.
Saludos
A todos los demás:
Mañana espero una visita de la brigada de 'ética y moral'.
Seguro que tendré que aguantar un par de lecciones.
Saludos,
Carlos
Estamos de acuerdo. No te caería nada mal. :)
Saludos
Saludos
Pedro
<Jose TH >>> escribió en el mensaje
news:OjN8WmdS...@TK2MSFTNGP03.phx.gbl...
On 19 nov, 00:58, "Jose TH" <>>> wrote:
> >Tanto a la consulta como a la definición de la vista
> >le puedes añadir condiciones con el where, naturalmente.
>
> >Como solo quieres los sábados hasta hoy:
>
> >...
> >WHERE diasemana=0 AND fecha <= getdate()
>
> Todos ven claro como el Sr. Carlos Calvelo dice "la definición de la vista"
> a pesar de que lo niega en otros mensajes.
>
Qué es lo que he negado? Tienes que aprender a leer.
Si una vista existe tendrá que tener una definición; una expresión
que la defina. Qué he negado?
> .....................
>
> Para los que leen el foro y tengan dudas similares a la planteada por el OP
> y quieran un consejo más orientado a un mejor performance y mejor
> mantenimiento del código de sus vistas:
>
> No se les ocurra ni de asomo basar la definición de una vista en una función
> con parámetros fijos y mucho menos de valores de fechas como lo que propone
> el Sr. Carlos Calvelo, sobre todo para una función tipo tabla.
>
> Las razones:
> 1) Mantenimiento: La vista no va a funcionar a partir del 1ero de Enero del
> 2011. Para que funcione habrá que modificar la definición de la vista. Y no
> solo eso sino cada vez que se agote el período fijo que el Sr. Carlos
> Calvelo indicó. Eso es una terrible decisión de diseño que ya es costosa
> antes de "implementarla".
Y ya desde mi primer reacción he dejado claro que lo del 2010 es
solo un ejemplo de como utilizar la función (sea la que puse yo o
la original que ya tenía el OP, con los cambios necesarios para
hacer posible ese uso). Pero quieres machacar y machacar ahí...
pues machaca.
> 2)Performance: Aunque a la vista se le envíen parámetros como sugiere en
> este mensaje el Sr. Carlos Calvelo, pues qué creen? la función ni se
> enterará ya que como quiera para materializar la vista, la función tendrá
> que generar la tabla completa para los 3 años, o sea 3 años por 52 sábados
> aproximadamente, para solo sacar los pocos registros del parámetro de la
> vista. Ni hablar de si en su implementación el Sr. Carlos Calvelo amplía el
> rango de la definición de su vista a por ejemplo 30 años, se imaginan? para
> sacar ej. los sábados de un solo mes, la función tendría que generar de
> todos modos 30 x 52 sábados aproximadamente. Exagerado.
Y he dejardo muy claro en mi primer reacción que era una función
genérica. Eso significa que no es específica para este caso
(explicación especial para ti).
Además la implementación de la vista se puede cambiar, y lo que hoy
es una vista mañana es una tabla y pasado mañana una vista otra vez.
Y la función que se usa en una vista hoy es una función y mañana es
una tabla normal. Todo eso sin romper el diseño lógico.
Esas posibilidades están todas en mi primer reacción.
Eso no se puede decir de SP's. El OP ya tenía una vista, sabes?
>
> Soluciones:
> 1)La mejor debería ser la que propone el Sr. Alejandro Mesa y hasta menciona
> de refilón el propio Sr. Carlos Calvelo, ya que es una tabla persistente a
> la que consultaremos como cualquier tabla.
De refilón? (Repito) He propuesto también la posibilidad de utilizar
esa misma función para popular una tabla base 'Calendario'. Por eso
es una función genérica, y no solo para sábados.
Con la misma función se puede hacer eso, o meterla en la vista
original del OP, como este ya estaba tratando de hacer. Por eso
es genérica. A ver si repitiendo y repitiendo te enteras.
Mas tarde dices que te gusta más la idea de Alejandro de crear
un calendario. Hago referencia a que yo ya había dado esa opción
y que la función se puede usar para generar los datos en dicho
calendario. Pero muy convenientemente eso se ignora. O ahora al
no poder seguir ignorandolo es 'de refilón'.
Eso cuando tu estabas intentando solo decirle al OP como usar
la función que ya tenía y ni de eso fuistes capaz, para luego
proponer un SP. Solo Alejandro y yo hemos propuesto una
función (como deseaba el OP) y una tabla 'Calendario'.
Alejandro puso como opción una función sobre una tabla Calendario,
para utilizar en una vista. Por qué? Pues porque eso precisamente
era lo que quería el OP. Teniendo la tabla ya no tiene sentido la
función pero, como Alejandro aclaró, le deja la opción al OP.
Por qué digo esto? Son también opciones. Pero tu sin aportar nada
lo único que te interesa es criticar opciones según quien sea el
que las dá.
Qué agenda tienes tu entonces?
> 2)Usar un Store Procedure el cual en ninguna versión de SS tiene limitantes
> ni para enviarle getdate() como parámetro ni para usar getdate() dentro de
> su lógica. Sin embargo tiene la desventaja que no se puede usar como una
> vista o función tipo tabla, es decir, como si fuese una tabla. Pero claro
> que depende del uso que se le vaya a dar ya que si lo que se desea es
> simplemente generar la tabla y traer los resultados a la aplicación, el SP
> te basta y sobra.
Usar un SP es la peor de todas las opciones dadas. Y es precisamente
lo que has propuesto tu, desesperado por no encontrar una solución
directa al problema te tenía el OP con la función.
Por que es la peor? Te remito a los conceptos que te he dejado en
otra reacción; pero que ya has demostrado ampliamente en tus últimas
reacciones sobre lo de diseño lógico e implementación que no lo
entiendes. Ni eres digno de más explicaciones.
Malas decisiones a nivel lógico tienen consecuencias muchos mas
graves que los fallos que uno pueda cometer con la implementación.
> 3) Cambiarte a una versión más reciente de SQL Server que no tenga la
> limitación del GetDate() que tienen las funciones de usuario en la versión
> 2000. Contrario a lo que sugiere alguien en un mensaje, deben saber que SS
> 2008 (que es el que uso actualmente) no tiene esa limitante. Pero creo que
> ya la versión 2005 no la tenía.
>
Vaya opción! Migrar solo porque se necesita una lista de sábados!
Tus opciones han sido un SP y cambiarase de versión.
Y yo que creía que la del SP era la peor. Brillante!
Yo también tengo una conclusión, que repetiré otra vez para que
los leen este foro y tengan alguna duda (como dices tu) sobre qué
tipo de juego haces tu:
1)
En mi primer reacción he dejado ver al OP como podía conseguir
hacer uso de la función en la vista, como él quería. Y he
propuesto además que podía utilizarla para popular una tabla
'Calendario' para usarla en vez de la función. Por eso es genérica.
En cambio tu has hecho varios intentos de dejarle ver al OP como
tenía que hacer uso de la función que este ya tenía y nada mas.
Repito... sin resultado. Y por eso te cambias a lo del SP.
Entretando el OP parece estar satisfecho con el uso de la
función como él mismo quería.
2)
Entonces Alejandro proponer crear una tabla 'Calendario' y
(repito) por si el OP insiste en una función (que ya no sería
necesaria), pues también se la dá.
3)
Es ahora cuando para ti la opción de una tabla base 'Calendario'
parece ser mejor que todo lo que tu has propuesto. Opción que ya
estaba en mi primer reacción.
4)
Analizando ahora nos vienes a decir que las opciones (otras que
la creación de una tabla base como propone Alejandro) son todas
ridículas, y eso basandose en meros ejemplos que se han puesto
y tratando de ignorar que esa misma opción está también en mi
primer reacción en en este hilo.
Esa es mi conclusión.
Mi primera reacción en el hilo está ahí para quien la quiera leer
detenidamente, que tampoco es tan larga.
Otras conclusiones:
"Sr. Carlos Calvelo ..."
"Sr. Alejandro Mesa ..."
Ufff!
Que se vean otros hilos tuyos donde tratas a los demás como se te
ha tratado ahora a tí. Y tu respuesta es entonces tratar a los demás
de 'Señor' y criticar las propuestas iniciales que alguien ha
hecho para después acabar concluyendo que porque lo dice también
el 'Sr.' Alejandro Mesa entonces sí es lo que hay que hacer.
Ni has podido dar respuesta a la pregunta original del OP (como hago
para poder utilizar la función desde la vista?), ni has propuesto
ninguna alternativa de más valor. Solo se te ha ocurrido proponer
una ruptura de la interfaz con las aplicaciones y usuarios sobre la
que el OP, parece ser, ya había tomado una sabia decisión. Pero
estoy hablando otra vez del modelo lógico y de su implementación
y no espero que lo vayas a entender ahora la diferencia, visto ya
lo visto.
Estás jugando un juego sucio y tu agenda en esto debe de oler
bastante mal. Ya aparte de insultos, realmente das asco.
No es por nada que Alfredo ya te ha metido en (como él dice)
en el filtro de *idiotas*.
Puede seguir distorsionando y distorsionando, pero eso no
cambiará para nada aquello que tratas de distorsionar.
Se puede debatir sin insultar a nadie.
Johan
"Carlos M. Calvelo" <c_ja...@hotmail.com> wrote in message
news:79f5ac2c-322c-4493...@a17g2000prm.googlegroups.com...
Johan
"Carlos M. Calvelo" <c_ja...@hotmail.com> wrote in message
news:79f5ac2c-322c-4493...@a17g2000prm.googlegroups.com...
Pues tendré que reaccionar otra vez. Y repetir, repetir y volver a
Pues mira tu que no me había dado yo cuenta de que
lo había insultado. Gracias!
Lo que es verdad es que tu dices que me desmiento y no
dices en qué. Eso si que es verdad.
>
> Se puede debatir sin insultar a nadie.
>
Claro que puede.
No cites todo el post para no reaccionar a nada la próxima vez.
Ya no voy a poder dormir si eso es lo que tu piensas.
"Johan Ramos" <johanr...@gmail.es> wrote in message
news:OBzU%23ZnSJ...@TK2MSFTNGP02.phx.gbl...
"Jose TH >>" wrote in message
news:%23ZAk77d...@TK2MSFTNGP03.phx.gbl...
Claro que lo sé. Son dos y bastante famosos en estos foros. Pero éste por
lo menos me hace reír.
> Pero debo decirte que le has hecho sudar :)
>
Es lógico, cuando no se sabe qué decir después de haber metido la pata
recomendando un CREATE VIEW basado en una función tipo tabla con parámetros
fijos de fecha.
El se delata solito con sus insultos de guardia de muelle.
"Luis" <lui...@yahoo.ar> escribió en el mensaje
news:%23iceH%23nSJH...@TK2MSFTNGP06.phx.gbl...
Yo hasta había llegado a dudar que éste era su principal objetivo. Pero
viendo lo del CREATE VIEW basado en una función tipo tabla con parámetros
fijos de fecha, no me queda que darte la razón a ti y a los demás que dicen
eso de los Troll's.
> y cuando mas que troll son insultantes es mejor ignorar lo que dicen.
>
Es cierto, pero hay que admitir que al menos éste, nos pone a reír. No
queda mal un poco de diversión en un mundo tan ajetreado. :)
"Johan Ramos" <johanr...@gmail.es> escribió en el mensaje
news:Oi6bkanS...@TK2MSFTNGP03.phx.gbl...