|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
изменила скрипт с такого варианта: y=0 qd=d2-d1+1 dd1=d1 dd2=d1 i=1 do while i<=qd SELECT ; ZANK.ANK_RN, ; ZANK.JOBBEGIN, ; ZANK.JOBEND, ; 1 as x ; FROM ; ZANK ; WHERE (Zank.jobend <= dd2) or (Zank.jobend >= dd1) ; INTO CURSOR R1 SELECT ; sum(R1.X) as x2 ; FROM ; R1 ; GROUP BY R1.X ; INTO CURSOR R2 y=y+R2.x2 dd2=dd2+1 i=i+1 enddo y=round(y/qd,1) Messagebox("Среднесписочная численность"+" за период с: "+dtoc(d1)+" по: "+dtoc(d2)+" соcтавила "+allt(str(y,18,1))+" человек","Получите результат !") вот до такого: if (empty(d1))or(empty(d2))or(d2<d1) Messagebox("Не верно введён период","Ошибка !") return else y=0 qd=d2-d1+1 dd1=d1 dd2=d1 * Messagebox(qd) i=1 do while i<=qd SELECT ; ZANK.ANK_RN, ; ZANK.JOBBEGIN, ; ZANK.JOBEND, ; 1 as x ; FROM ; ZANK ; WHERE (Zank.jobend <= dd2) or (Zank.jobend >= dd1) ; INTO CURSOR R1 SELECT ; sum(R1.X) as x2 ; FROM ; R1 ; GROUP BY R1.X ; INTO CURSOR R2 y=y+R2.x2 dd2=dd2+1 i=i+1 enddo y=round(y/qd,1) Messagebox("Среднесписочная численность"+" за период с: "+dtoc(d1)+" по: "+dtoc(d2)+" соcтавила "+allt(str(y,18,1))+" человек","Получите результат !") endif если раньше неверно вычислял среднесписочную чиленность Y, то теперь вылетает с ошибкой 96 (ошибка вложения) и говорит что ошибка в строке: do while i<=qd и дело конечно не в добавлении условия, d1, d2 - переменные типа дата, задаваемые пользователем на форме ZANK - название таблицы qd - вычисляемая переменная - количество дней select-ы работают, я их отдельно проверяла. не понятно почему тот же самый код входил в цикл while а сейчас ругается на него? все коды сохраняю в отдельных файликах, чтоб в любой момент откатиться до предыдущего работающего варианта, вот так открыла в блокноте предыдущий код и скопировала (на всякий случай если в новом коде где-то затесалась русская буква), всё-равно ошибка! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:00 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
alyssaвот до такого: if (empty(d1))or(empty(d2))or(d2<d1) Messagebox("Не верно введён период","Ошибка !") return else if (empty(d1))or(empty(d2))or(d2<d1) на if (empty(d1)).or.(empty(d2)).or.(d2<d1) не поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:23 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
Может, я чего-то не понял, но по этому условию вернётся численность вообще всего населения, если dd1<=dd2 или численность всех за исключением интервала [dd2..dd1], если dd1>dd2. Поставьте там AND вместо OR. И ошибку всё-таки приведите целиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:33 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
tanglir Код: plaintext 1. 2. 3. 4. 5. 6.
Может, я чего-то не понял, но по этому условию вернётся численность вообще всего населения, если dd1<=dd2 или численность всех за исключением интервала [dd2..dd1], если dd1>dd2. Поставьте там AND вместо OR. И ошибку всё-таки приведите целиком. нет там надо именно OR я же сказала ошибка не в селектах. я их закоментировала даже, i=1 do while i <= 10 * SELECT ; ZANK.ANK_RN, ; ZANK.JOBBEGIN, ; ZANK.JOBEND, ; 1 as x ; FROM ; ZANK ; WHERE (Zank.jobend <= d1) or (Zank.jobend >= d1) ; INTO CURSOR R1 * SELECT ; sum(R1.X) as x2 ; FROM ; R1 ; GROUP BY R1.X ; INTO CURSOR R2 * y=y+R2.x2 * d1=d1+1 i=i+1 enddo всё-равно в цикл не входит http://xmages.net/storage/10/1/0/a/6/upload/8ff720bd.jpg ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:47 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
fore5taalyssaвот до такого: if (empty(d1))or(empty(d2))or(d2<d1) Messagebox("Не верно введён период","Ошибка !") return else if (empty(d1))or(empty(d2))or(d2<d1) на if (empty(d1)).or.(empty(d2)).or.(d2<d1) не поможет? нет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:48 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
alyssado while i <= 10 это я здесь уже решила попробовать сравнивать с константой ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 12:52 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
WHERE (Zank.jobbegin <= d1) or (Zank.jobend >= d1) ; (принят не позднее) или (уволен не ранее), т.е. к одному человеку относится одно из условий, а не оба если б опечатка влияла на эту ошибку, то при закомментированном селекте ошибки бы уже не было ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:04 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
стёрла всё оставила так: i=1 do while i <= 10 i=i+1 enddo всё-равно, та же ошибка! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:28 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
та же фигня с циклом FOR ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 13:39 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
В коде из первого поста нет ошибок. Это весь код или в реальности выше еще что-то есть? там ничего не правила? Для поиска таких ошибок: на коде правая кнопка мыши, "Beautify" и смотреть чтобы IF заканчивался ENDIF, FOR - ENDFOR и т.д. Эта ошибка показывает не ту строку в которой неправильно, ошибка где-то выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 14:43 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
Dima TВ коде из первого поста нет ошибок. Это весь код или в реальности выше еще что-то есть? там ничего не правила? Для поиска таких ошибок: на коде правая кнопка мыши, "Beautify" и смотреть чтобы IF заканчивался ENDIF, FOR - ENDFOR и т.д. Эта ошибка показывает не ту строку в которой неправильно, ошибка где-то выше. даже если написать вот такой короткий код: i=1 do while i <= 10 i=i+1 enddo тоже скажете ошибка выше? я знаю что do должно заканчиваться enddo, for - endfor, if - endif. как в книге написано так и написала цикл, только потом в инете другой цикл нашла - for, поправила (это есь код, ничего выше нет): for i = 1 to 2 step 1 Messagebox("С") endfor вот это работает. значит вы правы (добавив выше условие против кривых рук пользователей, которые могут забыть ввести период), перестаёт работать: if (empty(d1))or(empty(d2))or(d2<d1) Messagebox("Не верно введён период","Ошибка !") return else y=0 qd=d2-d1+1 for i = 1 to qd step 1 SELECT ; ZANK.ANK_RN, ; ZANK.JOBBEGIN, ; ZANK.JOBEND, ; 1 as x ; FROM ; ZANK ; WHERE (Zank.jobbegin <= d1) or (Zank.jobend >= d1) ; INTO CURSOR R1 SELECT ; sum(R1.X) as x2 ; FROM ; R1 ; GROUP BY R1.X ; INTO CURSOR R2 y=y+R2.x2 d1=d1+1 endfor y=allt(str(round(y/qd,1),18,1)) Messagebox("Среднесписочная численность"+" за период с: "+dtoc(d1)+" по: "+dtoc(d2)+" соcтавила "+y+" человек","Получите результат !") endif выдаёт ошибку 96 в строке 8: for i = 1 to qd step 1 а может просто не хватает где-то знака препинания? (а может лишний знак где-то) *ещё я пробовала проверять qd на формат, написав в строке 7: Messagebox("qd") вышло сообщение с числом. и константу вместо qd в 8й строке писала... не помогло. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 08:16 |
|
ошибка 96 (ошибка вложения)
|
|||
---|---|---|---|
#18+
alyssaвыдаёт ошибку 96 в строке 8: for i = 1 to qd step 1 а может просто не хватает где-то знака препинания? (а может лишний знак где-то) Правильно там все. Вот добавил исходные данные, запустил и работает твой код без каких либо исправлений: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
Не там ты ошибку ищешь, сама же писала: alyssaвсе коды сохраняю в отдельных файликах, чтоб в любой момент откатиться до предыдущего работающего варианта, вот так открыла в блокноте предыдущий код и скопировала (на всякий случай если в новом коде где-то затесалась русская буква), всё-равно ошибка! Смотри окружающий код, вспоминай что еще правила. Как вариант попробуй удалить файл MyProg.FXP, иногда бывают глюки из-за этого. Лучше все файлы FXP удали, это откомпилированные PRG, они сами появятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 08:31 |
|
|
start [/forum/topic.php?fid=41&msg=37083291&tid=1584602]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 286ms |
total: | 431ms |
0 / 0 |