powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Аналог команды &
10 сообщений из 10, страница 1 из 1
Аналог команды &
    #35623804
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется 2 столбца: в первом алгоритм, а во второй надо записать результат его выполнения.
Если прохожу построчно всю таблицу и пишу
с1=f.algoritm
&с1
все выполняется нормально, но очень долго.
А если пишу update то выводит ошибку. Как в update указать на то, что надо выполнить алгоритм содержащийся в ячейке?
Помогите пожалуйста!!!!!!!!
...
Рейтинг: 0 / 0
Аналог команды &
    #35623908
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак.

Какое отношение Update-SQL имеет к тому коду, который записан в поле? Да никакого!

И даже если вы как-то извернетесь, и напишите хитрый Update-SQL, то он вам принципиально скорость не поднимет. Насколько я понимаю, вы надеетесь, что сканирование таблицы при помощи Update-SQL будет выполняться быстрее чем вручную? Ну, зависит от того, как именно вы делаете это сканирование. Обычно это делается так:

Код: plaintext
1.
2.
3.
4.
5.
select MyTab
SCAN
      c1 = f.algoritm
      &c1
ENDSCAN
...
Рейтинг: 0 / 0
Аналог команды &
    #35624019
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так и делаю, и на выполнение всего кода (это только малая часть) уходит 7 минут. Это достаточно долго. Поэтому решила переписать всё через update, а эту часть не получается.
...
Рейтинг: 0 / 0
Аналог команды &
    #35624037
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за код-то?
...
Рейтинг: 0 / 0
Аналог команды &
    #35624129
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас точно не напишу т.к. уже не на работе. Ну там есть несколько таблиц содержащих данные по зарплате. Вначале прохожу по основной таблице (данные по людям) циклом, в цикле для каждого человека надо посчитать всякие там оклады (данные для подсчета которых берутся из других таблиц), потом подсчитываются надбавки (еще в 2-х таблицах), а потом с учетом надбавок досчитывается итоговая зарплата.
вот чать кода

SELECT 5
scan for nk+kod_dlg = n+k
SEEK e.nk+e.kod_dlg IN 1
SEEK e.kod_nad IN 6
**
o1=e.namb_nad
o2=a.summa_dolg
**
a1=RECNO(1)
a2=RECNO(2)
a3=RECNO(3)
a4=RECNO(4)
a5=RECNO(5)
a6=RECNO(6)

msum_nad=0
o3=e.kod_nad
CC1 = F.ALGORITM
MSUM_NAD = &cc1
IF o3=13 then
go a1 IN 1
go a2 IN 2
go a3 IN 3
GO a4 IN 4
go a5 IN 5
go a6 IN 6
ENDIF
SELECT 5
replace SUM_NAD with MSUM_NAD

IF f.vx_d_ok=.t. THEN
w1=w1+e.SUM_NAD
ELSE
w2=w2+e.SUM_NAD
endif
endscan
...
Рейтинг: 0 / 0
Аналог команды &
    #35624246
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nastasjal,

Попробуйте заменить конструкцию = &CC1 на =evaluate(cc1)

Кроме этого (собственный опыт) - не надо делать макроподстановки, лучше завести отдельную табличку по надбавкам...
...
Рейтинг: 0 / 0
Аналог команды &
    #35624301
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отдельная таблица для надбавок у меня есть, в ней содержится номер надбавки и алгоритм по которому она считается.

Исправила свой update таким образом

Код: plaintext
UPDATE dolg_nadb SET sum_nad=evaluate(select nadb.algoritm from nadb WHERE nadb.kod_nad=dolg_nadb.kod_nad)

выводит ошибку function name is missing ).
...
Рейтинг: 0 / 0
Аналог команды &
    #35624322
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕРЕПИСАЛА ВОТ ТАК:

Код: plaintext
UPDATE dolg_nadb SET sum_nad=(select EVALUATE(nadb.algoritm) from nadb WHERE nadb.kod_nad=dolg_nadb.kod_nad)

И ВСЕ ПОШЛА ЗАМЕЧАТЕЛЬНО!!!!!
СПАСИБО ОГРОМНОЕ!!!!!!
...
Рейтинг: 0 / 0
Аналог команды &
    #35624398
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индекс по nk+kod_dlg есть?

А то сканируете по этому условию, и если индекса нет - то будет медленно


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Аналог команды &
    #35624460
nastasjal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Индекс есть конечно. Но уже все нормально, все переписываю update'ом и пока все просто летает!!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Аналог команды &
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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