Sustituir valor de un campo en selecc

30/12/2009 - 09:09 por José Antonio Muñoz | Informe spam
Hola al grupo,

Tengo una aplicación realizada con Sql Server y múltiples consultas,
triggers, procedimientos almacenados, funciones, etc donde utilizo para una
determinada tabla un campo llamado descripcion_es que almacena la
descripción de un artículo escrita en castellano. Además de este campo
existen otros campos: descripcion_en, descripcion_fr, descripcion_it, etc.
donde se almacena la descripción en inglés, francés, italiano, etc. Las
consultas ya están hechas con el campo descripcion_es y en toda la
aplicación se hace referencia a este campo. ¿Existe alguna manera de crear
un procedimiento almacenado, trigger, etc. en el que pueda reemplazar el
valor del campo descripcion_es por el de otro campo según el idioma? es
decir como si descripcion_es se le agregara dos parentesis y escribiendo la
funcion descripcion_es( ) que devuelve el texto según el idioma seleccionado
para el usuario x, pero sin agregarle los paréntesis ya que tendría que
estar buscando en toda la aplicación ese campo y agregarle los paréntesis.
(existen cientos de referencias para este campo)

saludos,
José Antonio Muñoz

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
30/12/2009 - 10:01 | Informe spam
No creo que sea el diseño más limpio. Mejor me parece tener una tabla de
idiomas y otra de descripciones que tenga una FK con esta de idiomas y otra
FK con la principal. Luego tan sólo tendrías que hacer un JOIN, filtrando
por el idioma del usuario y ya tendrías la descripción multiidioma que estás
buscando

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:edLh%
Hola al grupo,

Tengo una aplicación realizada con Sql Server y múltiples consultas,
triggers, procedimientos almacenados, funciones, etc donde utilizo para
una determinada tabla un campo llamado descripcion_es que almacena la
descripción de un artículo escrita en castellano. Además de este campo
existen otros campos: descripcion_en, descripcion_fr, descripcion_it, etc.
donde se almacena la descripción en inglés, francés, italiano, etc. Las
consultas ya están hechas con el campo descripcion_es y en toda la
aplicación se hace referencia a este campo. ¿Existe alguna manera de crear
un procedimiento almacenado, trigger, etc. en el que pueda reemplazar el
valor del campo descripcion_es por el de otro campo según el idioma? es
decir como si descripcion_es se le agregara dos parentesis y escribiendo
la funcion descripcion_es( ) que devuelve el texto según el idioma
seleccionado para el usuario x, pero sin agregarle los paréntesis ya que
tendría que estar buscando en toda la aplicación ese campo y agregarle los
paréntesis. (existen cientos de referencias para este campo)

saludos,
José Antonio Muñoz

Respuesta Responder a este mensaje
#2 Dani Sánchez
30/12/2009 - 12:48 | Informe spam
Hola José Antonio,

Tal y como apunta Carlos Sacristán, no creo que sea el mejor diseño. De
todos modos, prueba esto:

select campo1, campo2,
case campo_idioma
when 1 then campo_descripcion_idioma1
when 2 then campo_descripcion_idioma2
...
end as descripcion_idioma
from tabla where ...

Un saludo,

"José Antonio Muñoz" escribió en el mensaje de
noticias:edLh#
Hola al grupo,

Tengo una aplicación realizada con Sql Server y múltiples consultas,
triggers, procedimientos almacenados, funciones, etc donde utilizo para
una determinada tabla un campo llamado descripcion_es que almacena la
descripción de un artículo escrita en castellano. Además de este campo
existen otros campos: descripcion_en, descripcion_fr, descripcion_it, etc.
donde se almacena la descripción en inglés, francés, italiano, etc. Las
consultas ya están hechas con el campo descripcion_es y en toda la
aplicación se hace referencia a este campo. ¿Existe alguna manera de crear
un procedimiento almacenado, trigger, etc. en el que pueda reemplazar el
valor del campo descripcion_es por el de otro campo según el idioma? es
decir como si descripcion_es se le agregara dos parentesis y escribiendo
la funcion descripcion_es( ) que devuelve el texto según el idioma
seleccionado para el usuario x, pero sin agregarle los paréntesis ya que
tendría que estar buscando en toda la aplicación ese campo y agregarle los
paréntesis. (existen cientos de referencias para este campo)

saludos,
José Antonio Muñoz

Respuesta Responder a este mensaje
#3 José Antonio Muñoz
30/12/2009 - 13:15 | Informe spam
Gracias por vuestra colaboración, pero creo que he resuelto el problema
creando un campo calculado Desc_es que apunta a una función "Traducir" que
le envía como parámetro el valor de otro campo de la misma tabla
llamado"descripción" (con el texto en castellano) y la función devuelve el
resultado de un determinado campo según el idioma al buscar el texto en
castellano en una tabla, que contiene tantos campos como idiomas disponga la
aplicación.

saludos,
José Antonio Muñoz

"Dani Sánchez" escribió en el mensaje de noticias
news:%
Hola José Antonio,

Tal y como apunta Carlos Sacristán, no creo que sea el mejor diseño. De
todos modos, prueba esto:

select campo1, campo2,
case campo_idioma
when 1 then campo_descripcion_idioma1
when 2 then campo_descripcion_idioma2
...
end as descripcion_idioma
from tabla where ...

Un saludo,

"José Antonio Muñoz" escribió en el mensaje de
noticias:edLh#
Hola al grupo,

Tengo una aplicación realizada con Sql Server y múltiples consultas,
triggers, procedimientos almacenados, funciones, etc donde utilizo para
una determinada tabla un campo llamado descripcion_es que almacena la
descripción de un artículo escrita en castellano. Además de este campo
existen otros campos: descripcion_en, descripcion_fr, descripcion_it,
etc. donde se almacena la descripción en inglés, francés, italiano, etc.
Las consultas ya están hechas con el campo descripcion_es y en toda la
aplicación se hace referencia a este campo. ¿Existe alguna manera de
crear un procedimiento almacenado, trigger, etc. en el que pueda
reemplazar el valor del campo descripcion_es por el de otro campo según
el idioma? es decir como si descripcion_es se le agregara dos parentesis
y escribiendo la funcion descripcion_es( ) que devuelve el texto según el
idioma seleccionado para el usuario x, pero sin agregarle los paréntesis
ya que tendría que estar buscando en toda la aplicación ese campo y
agregarle los paréntesis. (existen cientos de referencias para este
campo)

saludos,
José Antonio Muñoz

Respuesta Responder a este mensaje
#4 Carlos Sacristan
30/12/2009 - 13:29 | Informe spam
¿Has probado el rendimiento de eso?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Gracias por vuestra colaboración, pero creo que he resuelto el problema
creando un campo calculado Desc_es que apunta a una función "Traducir" que
le envía como parámetro el valor de otro campo de la misma tabla
llamado"descripción" (con el texto en castellano) y la función devuelve el
resultado de un determinado campo según el idioma al buscar el texto en
castellano en una tabla, que contiene tantos campos como idiomas disponga
la aplicación.

saludos,
José Antonio Muñoz

"Dani Sánchez" escribió en el mensaje de noticias
news:%
Hola José Antonio,

Tal y como apunta Carlos Sacristán, no creo que sea el mejor diseño. De
todos modos, prueba esto:

select campo1, campo2,
case campo_idioma
when 1 then campo_descripcion_idioma1
when 2 then campo_descripcion_idioma2
...
end as descripcion_idioma
from tabla where ...

Un saludo,

"José Antonio Muñoz" escribió en el mensaje
de noticias:edLh#
Hola al grupo,

Tengo una aplicación realizada con Sql Server y múltiples consultas,
triggers, procedimientos almacenados, funciones, etc donde utilizo para
una determinada tabla un campo llamado descripcion_es que almacena la
descripción de un artículo escrita en castellano. Además de este campo
existen otros campos: descripcion_en, descripcion_fr, descripcion_it,
etc. donde se almacena la descripción en inglés, francés, italiano, etc.
Las consultas ya están hechas con el campo descripcion_es y en toda la
aplicación se hace referencia a este campo. ¿Existe alguna manera de
crear un procedimiento almacenado, trigger, etc. en el que pueda
reemplazar el valor del campo descripcion_es por el de otro campo según
el idioma? es decir como si descripcion_es se le agregara dos parentesis
y escribiendo la funcion descripcion_es( ) que devuelve el texto según
el idioma seleccionado para el usuario x, pero sin agregarle los
paréntesis ya que tendría que estar buscando en toda la aplicación ese
campo y agregarle los paréntesis. (existen cientos de referencias para
este campo)

saludos,
José Antonio Muñoz






Respuesta Responder a este mensaje
#5 José Antonio Muñoz
30/12/2009 - 14:32 | Informe spam
No lo he probado, ¿por qué lo preguntas? Si la tabla de idiomas tiene un
índice por el campo "Castellano" no creo que eso sea un inconveniente. Esa
tabla podría tener entre 10000 y 20000 registros de traducción.

José Antonio Muñoz

"Carlos Sacristan" escribió en el mensaje de noticias
news:
¿Has probado el rendimiento de eso?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"José Antonio Muñoz" wrote in message
news:
Gracias por vuestra colaboración, pero creo que he resuelto el problema
creando un campo calculado Desc_es que apunta a una función "Traducir"
que le envía como parámetro el valor de otro campo de la misma tabla
llamado"descripción" (con el texto en castellano) y la función devuelve
el resultado de un determinado campo según el idioma al buscar el texto
en castellano en una tabla, que contiene tantos campos como idiomas
disponga la aplicación.

saludos,
José Antonio Muñoz

"Dani Sánchez" escribió en el mensaje de noticias
news:%
Hola José Antonio,

Tal y como apunta Carlos Sacristán, no creo que sea el mejor diseño. De
todos modos, prueba esto:

select campo1, campo2,
case campo_idioma
when 1 then campo_descripcion_idioma1
when 2 then campo_descripcion_idioma2
...
end as descripcion_idioma
from tabla where ...

Un saludo,

"José Antonio Muñoz" escribió en el mensaje
de noticias:edLh#
Hola al grupo,

Tengo una aplicación realizada con Sql Server y múltiples consultas,
triggers, procedimientos almacenados, funciones, etc donde utilizo para
una determinada tabla un campo llamado descripcion_es que almacena la
descripción de un artículo escrita en castellano. Además de este campo
existen otros campos: descripcion_en, descripcion_fr, descripcion_it,
etc. donde se almacena la descripción en inglés, francés, italiano,
etc. Las consultas ya están hechas con el campo descripcion_es y en
toda la aplicación se hace referencia a este campo. ¿Existe alguna
manera de crear un procedimiento almacenado, trigger, etc. en el que
pueda reemplazar el valor del campo descripcion_es por el de otro campo
según el idioma? es decir como si descripcion_es se le agregara dos
parentesis y escribiendo la funcion descripcion_es( ) que devuelve el
texto según el idioma seleccionado para el usuario x, pero sin
agregarle los paréntesis ya que tendría que estar buscando en toda la
aplicación ese campo y agregarle los paréntesis. (existen cientos de
referencias para este campo)

saludos,
José Antonio Muñoz









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