|
Аналог команды &
|
|||
---|---|---|---|
#18+
Имеется 2 столбца: в первом алгоритм, а во второй надо записать результат его выполнения. Если прохожу построчно всю таблицу и пишу с1=f.algoritm &с1 все выполняется нормально, но очень долго. А если пишу update то выводит ошибку. Как в update указать на то, что надо выполнить алгоритм содержащийся в ячейке? Помогите пожалуйста!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 17:56 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
Никак. Какое отношение Update-SQL имеет к тому коду, который записан в поле? Да никакого! И даже если вы как-то извернетесь, и напишите хитрый Update-SQL, то он вам принципиально скорость не поднимет. Насколько я понимаю, вы надеетесь, что сканирование таблицы при помощи Update-SQL будет выполняться быстрее чем вручную? Ну, зависит от того, как именно вы делаете это сканирование. Обычно это делается так: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 18:40 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
Я так и делаю, и на выполнение всего кода (это только малая часть) уходит 7 минут. Это достаточно долго. Поэтому решила переписать всё через update, а эту часть не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 19:26 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
Сейчас точно не напишу т.к. уже не на работе. Ну там есть несколько таблиц содержащих данные по зарплате. Вначале прохожу по основной таблице (данные по людям) циклом, в цикле для каждого человека надо посчитать всякие там оклады (данные для подсчета которых берутся из других таблиц), потом подсчитываются надбавки (еще в 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 20:53 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
nastasjal, Попробуйте заменить конструкцию = &CC1 на =evaluate(cc1) Кроме этого (собственный опыт) - не надо делать макроподстановки, лучше завести отдельную табличку по надбавкам... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2008, 23:18 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
Отдельная таблица для надбавок у меня есть, в ней содержится номер надбавки и алгоритм по которому она считается. Исправила свой update таким образом Код: plaintext
выводит ошибку function name is missing ). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 00:11 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
ПЕРЕПИСАЛА ВОТ ТАК: Код: plaintext
И ВСЕ ПОШЛА ЗАМЕЧАТЕЛЬНО!!!!! СПАСИБО ОГРОМНОЕ!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 00:32 |
|
Аналог команды &
|
|||
---|---|---|---|
#18+
Индекс по nk+kod_dlg есть? А то сканируете по этому условию, и если индекса нет - то будет медленно Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2008, 05:08 |
|
|
start [/forum/topic.php?fid=41&msg=35624129&tid=1587130]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 340ms |
total: | 494ms |
0 / 0 |