fórmula sujeto a cambios

08/04/2010 - 01:21 por Erick Martinez | Informe spam
Buenas tardes

estimados colegas, les hago la siguiente consulta para ver si me puede
hechar una mano:
hace unos anios me toco desarrollar un sistema, el cual una buena parte de
las consultas ya sea para procesos y reportes llevan un calculo que se
compone de varios campos de una tabla y un campo de otra tabla estando
relacionadas ambas tablas, pero resulta que pasados unos meses me pidieron
que realizara un cambio en dicha fórmula, y me di cuenta que tenía que
modificar una serie de procedimientos almacenados, todo esto lo hice, luego
pasadas unas semanas me pidieron que restaura la fórmula, como se darán
cuenta resulta engorroso estar yendo a cada procedimiento almacenado y estar
cambiando esta fórmula, ya que son alrededor de unos 40-50 procedimientos
almacenados, entonces mi consulta es, existe alguna forma de poder tener
dicha formula centralizada en un solo lado y que cuando me toque hacer el
cambio, solo lo haga en un solo lado, algo parecido a una función, a
continuación les expongo el ejemplo, una formula un poco corta como para
darme entender, porque la fórmula que en realidad uso es bien compleja, bien
usa alrededor de unos 10 campos:

SELECT (Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1) as Total
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

de antemano les agradezco mucho por su tiempo

saludos

Erik Martínez
Analista programador

Preguntas similare

Leer las respuestas

#1 L. Garcia
08/04/2010 - 09:52 | Informe spam
Hola:

Yo siempre que he necesitado 'algo parecido' a tu problema lo que hago es
crear una vista con los campos calculados, joins, etc, necesarios y entonces
'siempre' utilizo esta vista como base para el resto de storeds e incluso de
otras vistas. De esta forma, simplemente cambiando esta vista 'base', toda
la base de datos queda 'actualizada'.

En tu caso, después de crear la vista 'base', tendrías que repasar toda la
base de datos y mirar que vistas/storeds deberías cambiar para que accedan a
esta nueva vista. Puedes cambiarlas 'a lo bestia' o mejor crear versiones
nuevas (ya sabes, si algo funciona no lo toques ;-DD)

Por cierto, que a mi me sirva/funcione no significa que sea la mejor
solucion ;-)

Saludos

"Erick Martinez" escribió en...
Buenas tardes

estimados colegas, les hago la siguiente consulta para ver si me puede
hechar una mano:
hace unos anios me toco desarrollar un sistema, el cual una buena parte
de las consultas ya sea para procesos y reportes llevan un calculo que se
compone de varios campos de una tabla y un campo de otra tabla estando
relacionadas ambas tablas, pero resulta que pasados unos meses me pidieron
que realizara un cambio en dicha fórmula, y me di cuenta que tenía que
modificar una serie de procedimientos almacenados, todo esto lo hice,
luego pasadas unas semanas me pidieron que restaura la fórmula, como se
darán cuenta resulta engorroso estar yendo a cada procedimiento almacenado
y estar cambiando esta fórmula, ya que son alrededor de unos 40-50
procedimientos almacenados, entonces mi consulta es, existe alguna forma
de poder tener dicha formula centralizada en un solo lado y que cuando me
toque hacer el cambio, solo lo haga en un solo lado, algo parecido a una
función, a continuación les expongo el ejemplo, una formula un poco corta
como para darme entender, porque la fórmula que en realidad uso es bien
compleja, bien usa alrededor de unos 10 campos:

SELECT (Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1) as
Total FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

de antemano les agradezco mucho por su tiempo

saludos

Erik Martínez
Analista programador
Respuesta Responder a este mensaje
#2 Ele
08/04/2010 - 16:28 | Informe spam
Buenas tardes
Esto me suena a que hay varios casos para dicha formula lo que suguiero es
que dejes los procedimientos programados para ambos casos agregando un nuevo
parametro a todos los procedimientos y desde la aplicacion elegir cual caso
desea. Supongamos que el valor de 1 es para modo A (formula original) y 2 es
modo B (formula cambiada) inclusive si llegarana pedir una tercera solo
agregas otro caso. entonces en el codigo del stored proc. lo cambias por if
@parametro = 1 entonces formula original
if @parametro = 2 entonces formula cambiada

espero te ayude mi comentario

"Erick Martinez" escribió en el mensaje
news:
Buenas tardes

estimados colegas, les hago la siguiente consulta para ver si me puede
hechar una mano:
hace unos anios me toco desarrollar un sistema, el cual una buena parte
de las consultas ya sea para procesos y reportes llevan un calculo que se
compone de varios campos de una tabla y un campo de otra tabla estando
relacionadas ambas tablas, pero resulta que pasados unos meses me pidieron
que realizara un cambio en dicha fórmula, y me di cuenta que tenía que
modificar una serie de procedimientos almacenados, todo esto lo hice,
luego pasadas unas semanas me pidieron que restaura la fórmula, como se
darán cuenta resulta engorroso estar yendo a cada procedimiento almacenado
y estar cambiando esta fórmula, ya que son alrededor de unos 40-50
procedimientos almacenados, entonces mi consulta es, existe alguna forma
de poder tener dicha formula centralizada en un solo lado y que cuando me
toque hacer el cambio, solo lo haga en un solo lado, algo parecido a una
función, a continuación les expongo el ejemplo, una formula un poco corta
como para darme entender, porque la fórmula que en realidad uso es bien
compleja, bien usa alrededor de unos 10 campos:

SELECT (Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1) as
Total FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

de antemano les agradezco mucho por su tiempo

saludos

Erik Martínez
Analista programador
Respuesta Responder a este mensaje
#3 Erick Martinez
08/04/2010 - 18:27 | Informe spam
buen día

te agradezco muco por tu apoyo, sinceramente no tengo experiencia trabajando
con vistas, de esto no mas tengo algo de teoría, según lo que entiendo, tu
me recomiendas que haga lo siguiente:
crear la vista con lo siguiente
CREATE VIEW VTabla1
AS
SELECT
Tabla1.IDCampo,(Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1)
as Total FROM Tabla1
INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

y como por lo general estas consultas llevan una serie de condiciones sería
algo así:
SELECT VTabla1.total, Tabla3.Fecha, Tabla3.Cantidad FROM VTabla INNER JOIN
Tabla3.IDCampo=VTabla.IDCampo WHERE Tabla3.Fecha between @ Fecha1 and
@Fecha2

si realmente es así como tu me recomiendas, en lo que se refiere a
cuestiones de redimiento, es factible poder trabajar así de manera
eficiente, consulto esto como te digo que no tengo mucha experiencia
trabajando con vistas, y consulto sobre el rendimiento porque la Tabla1 es
una tabla muy cargada y entonces de la vista traería todos los registros y
luego en hasta en la otra sentencia ya traería solo los filtrados, asumo que
esto así funciona, pero no se si este equivocado, si tu o alguien más podría
aclararme le agradecere mucho

saludos



"L. Garcia" escribió en el mensaje de noticias
news:%
Hola:

Yo siempre que he necesitado 'algo parecido' a tu problema lo que hago es
crear una vista con los campos calculados, joins, etc, necesarios y
entonces 'siempre' utilizo esta vista como base para el resto de storeds e
incluso de otras vistas. De esta forma, simplemente cambiando esta vista
'base', toda la base de datos queda 'actualizada'.

En tu caso, después de crear la vista 'base', tendrías que repasar toda la
base de datos y mirar que vistas/storeds deberías cambiar para que accedan
a esta nueva vista. Puedes cambiarlas 'a lo bestia' o mejor crear
versiones nuevas (ya sabes, si algo funciona no lo toques ;-DD)

Por cierto, que a mi me sirva/funcione no significa que sea la mejor
solucion ;-)

Saludos

"Erick Martinez" escribió en...
Buenas tardes

estimados colegas, les hago la siguiente consulta para ver si me puede
hechar una mano:
hace unos anios me toco desarrollar un sistema, el cual una buena parte
de las consultas ya sea para procesos y reportes llevan un calculo que se
compone de varios campos de una tabla y un campo de otra tabla estando
relacionadas ambas tablas, pero resulta que pasados unos meses me
pidieron que realizara un cambio en dicha fórmula, y me di cuenta que
tenía que modificar una serie de procedimientos almacenados, todo esto lo
hice, luego pasadas unas semanas me pidieron que restaura la fórmula,
como se darán cuenta resulta engorroso estar yendo a cada procedimiento
almacenado y estar cambiando esta fórmula, ya que son alrededor de unos
40-50 procedimientos almacenados, entonces mi consulta es, existe alguna
forma de poder tener dicha formula centralizada en un solo lado y que
cuando me toque hacer el cambio, solo lo haga en un solo lado, algo
parecido a una función, a continuación les expongo el ejemplo, una
formula un poco corta como para darme entender, porque la fórmula que en
realidad uso es bien compleja, bien usa alrededor de unos 10 campos:

SELECT (Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1) as
Total FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

de antemano les agradezco mucho por su tiempo

saludos

Erik Martínez
Analista programador




Respuesta Responder a este mensaje
#4 Erick Martinez
09/04/2010 - 17:45 | Informe spam
buen día

te agradezco muco por tu apoyo, sinceramente no tengo experiencia trabajando
con vistas, de esto no mas tengo algo de teoría, según lo que entiendo, tu
me recomiendas que haga lo siguiente:
crear la vista con lo siguiente
CREATE VIEW VTabla1
AS
SELECT
Tabla1.IDCampo,(Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1)
as Total FROM Tabla1
INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

y como por lo general estas consultas llevan una serie de condiciones sería
algo así:
SELECT VTabla1.total, Tabla3.Fecha, Tabla3.Cantidad FROM VTabla INNER JOIN
Tabla3.IDCampo=VTabla.IDCampo WHERE Tabla3.Fecha between @ Fecha1 and
@Fecha2

si realmente es así como tu me recomiendas, en lo que se refiere a
cuestiones de redimiento, es factible poder trabajar así de manera
eficiente, consulto esto como te digo que no tengo mucha experiencia
trabajando con vistas, y consulto sobre el rendimiento porque la Tabla1 es
una tabla muy cargada y entonces de la vista traería todos los registros y
luego en hasta en la otra sentencia ya traería solo los filtrados, asumo que
esto así funciona, pero no se si este equivocado, si tu o alguien más podría
aclararme le agradecere mucho

saludos

"L. Garcia" escribió en el mensaje de noticias
news:%
Hola:

Yo siempre que he necesitado 'algo parecido' a tu problema lo que hago es
crear una vista con los campos calculados, joins, etc, necesarios y
entonces 'siempre' utilizo esta vista como base para el resto de storeds e
incluso de otras vistas. De esta forma, simplemente cambiando esta vista
'base', toda la base de datos queda 'actualizada'.

En tu caso, después de crear la vista 'base', tendrías que repasar toda la
base de datos y mirar que vistas/storeds deberías cambiar para que accedan
a esta nueva vista. Puedes cambiarlas 'a lo bestia' o mejor crear
versiones nuevas (ya sabes, si algo funciona no lo toques ;-DD)

Por cierto, que a mi me sirva/funcione no significa que sea la mejor
solucion ;-)

Saludos

"Erick Martinez" escribió en...
Buenas tardes

estimados colegas, les hago la siguiente consulta para ver si me puede
hechar una mano:
hace unos anios me toco desarrollar un sistema, el cual una buena parte
de las consultas ya sea para procesos y reportes llevan un calculo que se
compone de varios campos de una tabla y un campo de otra tabla estando
relacionadas ambas tablas, pero resulta que pasados unos meses me
pidieron que realizara un cambio en dicha fórmula, y me di cuenta que
tenía que modificar una serie de procedimientos almacenados, todo esto lo
hice, luego pasadas unas semanas me pidieron que restaura la fórmula,
como se darán cuenta resulta engorroso estar yendo a cada procedimiento
almacenado y estar cambiando esta fórmula, ya que son alrededor de unos
40-50 procedimientos almacenados, entonces mi consulta es, existe alguna
forma de poder tener dicha formula centralizada en un solo lado y que
cuando me toque hacer el cambio, solo lo haga en un solo lado, algo
parecido a una función, a continuación les expongo el ejemplo, una
formula un poco corta como para darme entender, porque la fórmula que en
realidad uso es bien compleja, bien usa alrededor de unos 10 campos:

SELECT (Tabla1.Campo1*Tabla1.Campo2)/(Tabla1.Campo3-Tabla2.Campo1) as
Total FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IDCampo=Tabla2.IDCampo

de antemano les agradezco mucho por su tiempo

saludos

Erik Martínez
Analista programador




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida