Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Трудности перевода (в гл.р. Д.Белуши)  [new]
albert t
Member

Откуда: Харьков
Сообщений: 301
Трудолюбивый Незнайка уже почти спит но из последних сил спрашивает совета.

Есть база данных. Необходимо дать возможность использовать её на разных языках. Решение самое простое в использовании функции перевода в результатах запросов. Всё работает. Но очень хотелось бы чтобы функция (или нечто иное) в случае отсутствия перевода в таблице переводов вставляла бы пустую строку в эту таблицу. Сама по себе функция вставлять любым образом ничего не может и не хочет.

Поясню на всякий случай о чём речь.

SELECT IdTovar, Translate(NameTovar,'eng') FROM tblTovar

то есть процедура Translate() ищет перевод названия на английский язык в таблице переводов. И очень бы хотелось чтобы она добавляла в таблицу переводов запись с названием товара и отсутствующим переводом если товар не переведен.

Так понятно?

Возможно есть какие мысли у кого? Шамбала вас не забудет.
19 окт 09, 00:38    [7802847]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
Процедуру напишите, и будет вам щастье.
19 окт 09, 00:51    [7802864]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
albert t
Member

Откуда: Харьков
Сообщений: 301
Гавриленко Сергей Алексеевич,

Прошу прощения, как использовать процедуру в результатах запроса.

Куда?

SELECT NameTovar FROM Tovar
19 окт 09, 01:09    [7802878]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
albert t
Гавриленко Сергей Алексеевич,

Прошу прощения, как использовать процедуру в результатах запроса.

Куда?

SELECT NameTovar FROM Tovar
Вместо запроса использовать. А запрос и всю логику в процедуру.
19 окт 09, 01:15    [7802885]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
albert t
Member

Откуда: Харьков
Сообщений: 301
Гавриленко Сергей Алексеевич,

Ситуация сложнее. База уже есть. Доступ к ней только с поомщью сохранённых процедур. Теперь надо добавить возможность переводить результаты которые возвращают процедуры. Самы простой способ, на мой взгляд, добавить в результаты функцию. То есть вместо SELECT NameTovar..... переписать SELECT Translate(NameTovar,'rus')....

Всё работает. Но поскольку база и данные уже есть, то хотелось бы переложить обязательства по созданию таблицы перевода на пользователей. То есть если бы функция Translate могла бы в случае отсутствия перевода добавить пустую строку в таблицу то было бы счастье. Потом менеджер зашёл бы увидел бы пустую строку и перевёл бы её.
19 окт 09, 01:22    [7802889]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
albert t
Гавриленко Сергей Алексеевич,

Ситуация сложнее. База уже есть. Доступ к ней только с поомщью сохранённых процедур. Теперь надо добавить возможность переводить результаты которые возвращают процедуры. Самы простой способ, на мой взгляд, добавить в результаты функцию. То есть вместо SELECT NameTovar..... переписать SELECT Translate(NameTovar,'rus')....

Всё работает. Но поскольку база и данные уже есть, то хотелось бы переложить обязательства по созданию таблицы перевода на пользователей. То есть если бы функция Translate могла бы в случае отсутствия перевода добавить пустую строку в таблицу то было бы счастье. Потом менеджер зашёл бы увидел бы пустую строку и перевёл бы её.
Функция ничего никуда добавить не сможет.
19 окт 09, 01:23    [7802890]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
albert t
Member

Откуда: Харьков
Сообщений: 301
Гавриленко Сергей Алексеевич,

Собственно говоря я поэтому и спрашиваю у почтенной публики - у кого какие соображения есть по этому поводу. Или вообще по реализации многоязычных баз данных. Сверх задача - один товар на разных языках. Размер и вес один а названия разные
19 окт 09, 01:41    [7802898]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
albert t
Гавриленко Сергей Алексеевич,

Собственно говоря я поэтому и спрашиваю у почтенной публики - у кого какие соображения есть по этому поводу. Или вообще по реализации многоязычных баз данных. Сверх задача - один товар на разных языках. Размер и вес один а названия разные
У вас не многоязычная база, а нежелание написать процедуру с нужной логикой.
19 окт 09, 01:56    [7802906]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Moriarti
Member

Откуда: Ultima Thule
Сообщений: 744
albert t,

[оффтоп]В Трудностях Перевода Билл Мюррей снимается, а не Белуши[/оффтоп]
19 окт 09, 08:02    [7803019]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
StillZero
Member

Откуда:
Сообщений: 15
если костыли приделывать, то можно и так как вы сделали
+ добавить запуск отдельного скрипта, который будет заполнять эту таблицу соответствий наименований
+ костыли, в триггере например, при добавлении нового товара
19 окт 09, 08:02    [7803020]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Уверен, функцию из SELECTа можно вообще выбросить.
Заменить на её содержимое. И запрос заодно сразу взлетит.
19 окт 09, 08:45    [7803077]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
albert t,

функция всё же может добавлять в таблицу. Для этого в ней надо вызвать extended stored procedure (придётся самостоятельно изготовить DLL),
а, начиная с 2005-го, можно сделать CLR-функцию.

Но это будет тормоз в квадрате, как мне кажется.
Меня, наверно, даже побьют сейчас за такие советы.

Да, и надо помнить, что в будущих версиях ESP запретят.
19 окт 09, 08:52    [7803089]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
albert t
Member

Откуда: Харьков
Сообщений: 301
Трудолюбивый Незнайка

1. Конечно Б.Мюррей. Это просто час ночи.
2. Вопрос снят. Всю ночь не спал и понял что этот подход, с добавлениями несуществующего перевода, неверен. Не нужно ответственную функцию заполнения таблицы перекладывать на юзеров.
19 окт 09, 09:56    [7803370]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Жмурик
Member

Откуда: Оттуда
Сообщений: 382
Та чо, можно и на юзеров. Например - Добавить новый язык.
Но при этом надо отделить редакцию справочника от его оперативного использования.
19 окт 09, 12:37    [7804493]     Ответить | Цитировать Сообщить модератору
 Re: Трудности перевода (в гл.р. Д.Белуши)  [new]
Жмурик
Member

Откуда: Оттуда
Сообщений: 382
А функция должна возвращать
isnull(Справочник.[Перевод], [Оригинальное слово]) Перевод
19 окт 09, 12:40    [7804526]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить