|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
в файле sheet1.prg у меня html страница обрамлённая в text/endtext. в этом файле у меня есть следующая строка: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
формула очень большая из-за этого не генерируется отчёт, фокс просто падает. Если формулу уменьшить буквально на пару действий, тогда всё работает отлично. Поэтому мне нужно как-то сохранить промежуточный результат, разбить на несколько действий. Но как мне сохранить этот результат я не знаю. Допустим я сделаю вычисление (N[[34+i]]*L[[34+i]] + N[[34+i]] * L[[34+i]] * AN[[34+i]]) = 140; Этих 140 мы сохраняем в переменную допустим value. И потом в формуле уже используем value + <и дальше формула> но как мне это оформить я не знаю, подскажите пожалуйста. С фоксом работаю очень мало, поэтому, казалось бы такой простой вопрос и не знаю как решить. Работаю под DOS. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 12:37 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
NCE, попробуй строковую константу разбить на две. т.е. вместо "Очень длинная строка" сделать "Очень длин"+"ная строка" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 13:01 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 13:03 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
Разбить строку на несколько строк не сработало. Почитал статью, и не нашёл то что искал, а то что было не смог применить в своём примере, может я что-то не допонял. у меня в начале было так: Код: 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.
Я хотел сделать что-то вроде такого Код: 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. 36. 37. 38. 39. 40. 41. 42. 43.
вот только проблема в том что за пределаем text/endtext переменные (N[[34+i]]*L[[34+i]]+N[[34+i]]*L[[34+i]]*AN[[34+i]]/100) не будут доступные, соответственно и не получится так вычислить. Не ужели нет больше способов разбить вычисление? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 15:09 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
NCE, А это что за синтаксис такой??? action1 = (N[[34+i]]*L[[34+i]]+N[[34+i]]*L[[34+i]]*AN[[34+i]]/100) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 16:04 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
Я думал, что можно так вынести отдельно, в одну переменную часть формулы, а затем использовать уже вычисленный результат дальше в расчётах, тем самым сократить длину формулы. Но так записать нельзя. Поэтому я и интересуюсь как ещё можно записать, кроме разбивания строки на несколько строк, т.к. такой вариант не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 16:11 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
NCE, Ну тыже ниже это делаешь!!! Типа такого text to action1 N[[34+i]]*L[[34+i]]+N[[34+i]]*L[[34+i]]*AN[[34+i]]/100 endtext А вообще я не понимаю всей этой идеи. Т.Е. в результате надо получить (условно) n40*L40+N40*L40*AN40/100 Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 16:33 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
NCE, Вынесите общие множители за скобки - формула и сократится (в разы). Если ничего не напутал, то будет так Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2009, 16:51 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
PeisovТак? Верно, если подробней то это выглядет так Допустим, у нас есть 3 изделия, стоимость каждой по 1000 рублей. Значит мы сначало должны найти стоимость всех изделий это 1000 * 3 = 3000 - это есть Peisov n40*L40 Теперь мы должны к этой цене добавить оптовую надбавку 2%. Странно, но если в экселе записать прямо 3000 + 2%. то получим 300002,00% если формат ячейки сделать числовой то получим 3000. А нужно 3000 + 2% = 3060. (два процента находим от 3000 и прибавляем к 3000) Поэтому приходиться записывать это подробно, что бы эксель усёк. т.е. 3000 + 3000 * 2 / 100. Отсюда мы имеем Peisov n40*L40+N40*L40*AN40/100 AN40 - это 2%, а не 0,02. А почему такая большая формула потому что нужно к цене добавить отпускную надбавку, затем ндс, затем надбавку магазина, и надбавку на транспортные услуги, и это всё проценты от предыдущего вычисления, поэтому такая длинная формула. Может и можно как-то сократить, но я не уверен что у меня получиться это сделать правильно. попробывал так записать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ругается на LOCAL, пробывал писать private тоже не понимает, говорит не известный идентификатор action1. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2009, 10:17 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
NCE, Ну - погнали наши городских! Ставлю вопрос ребром - зачем в эксель пихать формулу? Не проще ли в программе посчитать то, что нужно, и воткнуть готовое значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2009, 10:58 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
PeisovNCE, Ну - погнали наши городских! Ставлю вопрос ребром - зачем в эксель пихать формулу? Не проще ли в программе посчитать то, что нужно, и воткнуть готовое значение? Эксель - редактируемый формат. У нас множество экселевских форм аналитического отдела содержат формулы. Именно для того, чтобы аналитик мог мобильно поиграться граничными условиями. Поругаю топикстартера: Вобще-то, сочетательный закон умножения проходят в седьмом классе школы. По существу вопроса: SET TEXTMERGE - позволяет вставлять внешние для текста переменные посредством конструкции <<action1>> Почитайте help, чтоли? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2009, 11:29 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
Kruchinin Pahan Эксель - редактируемый формат. У нас множество экселевских форм аналитического отдела содержат формулы. Именно для того, чтобы аналитик мог мобильно поиграться граничными условиями. А, понял. Хотя в такой ситуации наверняка должны быть некие шаблоны документов. И проше втыкать туда данные через оле-автоматизацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2009, 11:42 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
PeisovKruchinin Pahan Эксель - редактируемый формат. У нас множество экселевских форм аналитического отдела содержат формулы. Именно для того, чтобы аналитик мог мобильно поиграться граничными условиями. А, понял. Хотя в такой ситуации наверняка должны быть некие шаблоны документов. И проше втыкать туда данные через оле-автоматизацию. Проще. Не спорю. Только в FoxPro for DOS нет OLE. Поэтому топикстартер выгружает форму в XML формате. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2009, 11:56 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
NCE Код: plaintext 1. 2. 3. 4.
ругается на LOCAL, пробывал писать private тоже не понимает, говорит не известный идентификатор action1 Следует читать HELP той версии, которой Вы пользуетесь. В FoxPro for DOS области видимости LOCAL еще не было. Неизвестная команда. У оператора TEXT..ENDTEXT не было опции TO. Неизвестная опция. Вообще, в FoxPro for DOS эта команда была сильно урезана по возможностям. Просто потоковый вывод. Команда PRIVATE не создает переменных, а "прячет" их (экранирует). Кроме того, давать эту команду внутри цикла FOR - просто бессмысленно. Определение области видимости должно происходить ДО начала цикла. Вообще-то, операторные скобки TEXT...ENDTEXT - это всего-лишь один из способов формирования символьной строки. Но можно ту же самую строку формировать и через переменные пямяти. "В лоб" Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2009, 21:39 |
|
FoxPro + Excel: сохранение промежуточных данных
|
|||
---|---|---|---|
#18+
ВладимирМ"В лоб" Спасибо за дельную подсказку, которая почти совпала с моим вариантом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2009, 10:35 |
|
|
start [/forum/topic.php?fid=41&msg=36126917&tid=1586174]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 357ms |
total: | 508ms |
0 / 0 |