powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ф-ия Eval на SQL-сервере
25 сообщений из 32, страница 1 из 2
ф-ия Eval на SQL-сервере
    #32357305
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа! Помогите плиз с сабджем!
Причем чтоб ее можно было использовать во вью
Существует ли в природе такое? если нет то может поможете с советом как такое возможно реализовать.
Спасибо заранее всем откликнувшимся
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357320
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А что передавать в эту функцию? В Аксессе я понимаю, всякие переменные и т.п. А в SQL-сервере что?
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357480
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во вью возможно использование пользовательских функций
в пользовательскую функцию можно передать в качестве строки любое выражение

если конечно это mssql 2000 или др. сервера с поддержкой функций
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357487
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, ValeRRR имел виду, чтобы он передал в функцию строку "1+2+5*10", а она ему вернула 53. Такого на сиквеле встроенной функции я не знаю. Прийдется клиентом данные готовить
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357516
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SV: Для этого конкретного случая с "1+2+5*10", в принципе, если очень нужно, можно сделать так:

Код: plaintext
1.
2.
3.
4.
declare @s varchar( 15 )
create table #t(i integer)
set @s = '1+2+5*10'
insert #t execute ('select ' + @s)
select * from #t
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357751
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2:Senin Viktor
Да я именно это и имел ввиду. Поясни плиз свою мысль насчет того что клиент должен готовить данные.

2:IgorM
Спасибки за код! скажи можно ли будет эту функцию использовать во вью?
Я бы хотел использовать эту функцию во вью примерно так:

select Function_From_IgorM('1+2+5*10') as [SomeColumn]

естественно что вместо '1+2+5*10' я предполагаю использовать какой-нить столбец из таблицы
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357820
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Поясни плиз свою мысль насчет того что клиент должен готовить данные.

Лучше проясни, что ты хочешь?С примерами.
А то уже почему-то слово столбец по явилось.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32357839
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ValeRRR: В таком виде как у меня - нет, функцию написать не получится.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358010
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2:Senin Viktor
Вот так хочу написать во вью
select Function_From_IgorM(tbl.Col1) as [SomeColumn] FROM tbl

при этом сожержимое tbl:
Col1
'1+2+5*10'
'GetDate()'
'bla-bla-bla'
ну и т.п.

2:IgorM
а в каком виде это могло бы заработать?
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358022
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нарно
execute(SElect column From ...)
тоько надо проверить
что салект вернет строку
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358048
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2:фыыф
>execute(SElect column From ...)
это во вью так написать ты предлагаешь?
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358102
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нарно в хранимой.
А вот что делать во вью - надо посмотреть. (не писал на MS с 6.5, не помню.) Может вызывать хранимую? :)

а вапше есть форум по SQL. Только там про Eval спрашивать не надо :).
Надо сказать примерно так:

"в таблице храню _текст процедуры_, который надо _исполнить_ бла-бла-бла из SQL конструкции, а именно во вью"
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358116
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2:фыыф
спасибо за совет. Сейчас еще там спрошу.
но надеюсь что в этом топике мне тоже помогут!
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358132
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще лучше спросить так:
хочу сделать ......
решил использовать ....
как реализовать ... ?
может быть есть более оптимальный метод?

А то когда спрашивают как сделать ....?
То это не всегда означает, что нет другого, более эффективного подхода.
И вместо того, чтобы решать какие-то нестандартные особенности программирования, лучше поменять логику работы модуля и сделать все при помощи стандартных методов.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358146
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ValeRRR: При таком широком диапазоне входящих параметров вряд ли получится написать что-то универсальное, работающее как функция, т.к. exec в том виде, в каком его использовал я, там не работает.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358222
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2:фыыф, incold
в соседнем форуме спросил как вы и советовали! так там меня в функцию Eval носом ткнули!
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358250
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ValeRRR
Вы уже пишете готовый способ - хранение формул в таблице и спрашиваете как его реализовать, но ни слова о том, какие цели преследуются (какая исходная постановка задачи).

Может быть от такого подхода можно вообще отказаться.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358287
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2:incold
а постановка задачи так и звучит. Нужно выполнить текст из столбца и вернуть его как значение.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358299
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ValeRRR
Это не постановка задачи - это уже кем-то подсказанное решение.
Пользователь(постановщик задачи) не может знать, что такое таблица и столбец.

Если проявить телепатию, то можно предположить примерно так:
пользователь желает где-то сохранять свои формулы, чтобы затем использовать их в расчетах чего-либо
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358319
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 incold
ты прав. примерно так. только твоя формулировка более обощающая и абстрактная. сути то это не меняет. можно конечно же хранить эти формулы и не в таблицах, а в реестре, в файле, и т.п. и файл и реестр можно считать БД. но если есть более мощная система БД смысл тогда извращаться с другими средствами хранения данных? В данном случае мои данные это часть программы.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358367
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ValeRRR
Дело не в месте хранения.
Я помню обсуждение у соседей - там уже говорилось, что БД не предназначена для хранения формул.
Формулы должны быть определены в логике работы системы.


Мне пока что удается доказывать пользователям неэффективность таких подходов.

Лучше сделать на форме/отчете настройку любого поля, которое будет считаться по формуле, чем писать в базу данных формулу, а потом каким-либо образом ее куда-то подставлять.

Т.е. если сказать в общем, то в базе данных должны хранится данные, а формулы должны быть реализованы в интерфейсе/процедурах расчета/отчетах.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358408
ValeRRR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 incold
не всегда получается так разделять данные и код иначе небыло бы смысла в существовании функции Eval в акцессе. да и вообще макроподстановки были еще в клипере.
Дискутировать можно долго по поводу макроподстановок хорошо это или плохо, нужны или нет. Вот у меня есть конкретная проблема, которую я сам решить не в состоянии от недостатка знания предмета (TSQL) и мастерства. Поэтому и спрашиваю о том чего сам сделать не смог.
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358476
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к сожалению во вью можно использовать только пользовательские функции
а в функциях нельзя execute

но в функциях можно использовать расширенные процедуры,
недостатки этого метода
- достаточно сложно
- может нести опасность для сервера.
- после переноса на другй сервак / новой инсталяции придется переносить и свои DLL
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358704
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ValeRRR: расчетные формулы, да и getdate() и т.п. можно реализовать на T-SQL самостоятельным разбором строки. Вопрос в том, стоит ли в твоём случае такая овчинка выделки...
...
Рейтинг: 0 / 0
ф-ия Eval на SQL-сервере
    #32358711
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не всегда получается так разделять данные и код иначе небыло бы смысла в существовании функции Eval в акцессе
Да вообще-то если убрать из аксеса функцию Eval - мало кто это заметит. Это я тебе как доктор говорю.
Точно так же как и добавление функции CallByName мало кем замечено было.
Слишком мал круг задач, где это может понадобится. А уж пересечение этого круга задач с базами данных - совсем мизерно.

Что-то неладно в твоем датском королевстве, раз тебе такое понадобилось...
(имхо)
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ф-ия Eval на SQL-сервере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]