|
Replace
|
|||
---|---|---|---|
#18+
FoxPro-9 Почему лиса ругается на выполнение команды replace где более 3000 символов? Говорит что синтактическая ошибка. (хотя ее там нет) Выполнятеся мокроподстановкой. Если разбить на две строки <3000 символов то все проходит. С Ув. Игорь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:06 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammer, может, код оптимизировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:26 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammerFoxPro-9 Почему лиса ругается на выполнение команды replace где более 3000 символов? Говорит что синтактическая ошибка. (хотя ее там нет) Выполнятеся мокроподстановкой. Если разбить на две строки <3000 символов то все проходит. С Ув. Игорь. возьми листок бумаги, вставь в принтер, в Ворде набери большими буквами: макрападстановка - большое зло (с кучей васклицательных знаков). напечатай. повесь на видном месте. ежедневно смотри на листок. а вообще команда из 3т символов - эта круто. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:31 |
|
Replace
|
|||
---|---|---|---|
#18+
Пример можно? Хотя бы общую схему. 3000 - это значение одного поля или вся команда replace? Если записать сформированную строку в PRG синтаксис будет корректным? А там действительно одна команда, а не несколько? PS: 3000 - это в пределах системных ограничении FoxPro Maximum # of characters per character string or memory variable. 16,777,184 Maximum # of characters per command line. 8,192 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:32 |
|
Replace
|
|||
---|---|---|---|
#18+
прошелмимовозьми листок бумаги, вставь в принтер, в Ворде набери большими буквами: макрападстановка - большое зло (с кучей васклицательных знаков). напечатай. повесь на видном месте. ежедневно смотри на листок.Это надо поместить в здешний ФАК. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:49 |
|
Replace
|
|||
---|---|---|---|
#18+
ВладимирМ, Пример строки: Код: plaintext
Если ее скопировать в прг-файл. то он компилируется но при выполнении говорит син-ошибка. Большая просьба всех "Флудеров" общаться в своем форуме... А не засорять данную тему... С Ув. Игорь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:50 |
|
Replace
|
|||
---|---|---|---|
#18+
прошелмимо и tanglir Макро-подстановка существует не только в Лисе. И успешно применяется. Это все равно что сказать что колесо есть... Но машина и без них может ездить! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:54 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammer, Это случайно, не все поля таблицы? Может, UPDATE ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:00 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorNG, Это выборочные поля пользователем. С Ув. Игорь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:02 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammerПример строки: Код: plaintext
У тебя половину места ноли занимают, сделай их обрезание, программно ведь генеришь строку. И при генерации проверяй длину строки, достиг например 2000 символов, выполнил, дальше генеришь. Два Replace ничем не хуже одного. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:11 |
|
Replace
|
|||
---|---|---|---|
#18+
Проблема не в длине команды, а в количестве полей для Replace Если количество полей меньше 129, то пройдет нормально. Как только количество полей больше или равно 130 - синтаксическая ошибка. Пока не понял как лечится... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:22 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammer, В твоем случае можно без макроподстановок обойтись. Через массивы записать. почитай про SCATTER, GATHER и AFIELDS() ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:33 |
|
Replace
|
|||
---|---|---|---|
#18+
Dima T, там поля не все подряд, а выбираются пользователем. Это же придётся помимо массива с данными иметь массив со структурой, да проверять, что там пользователь понавыбирал, да в оба массива лазить... не-е-ет, МП - оно куда яснее, удобнее, надёжнее и привычнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:40 |
|
Replace
|
|||
---|---|---|---|
#18+
Для проверки ошибки Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Поскольку число 128 - это степень двойки, то, скорее всего, какое-то не явное системное ограничение ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:44 |
|
Replace
|
|||
---|---|---|---|
#18+
ВладимирМ, И что теперь делать? Ведь такой ответ конечного пользователя не устроить. С Ув. Игорь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:54 |
|
Replace
|
|||
---|---|---|---|
#18+
Dima TIgorProgrammerПример строки: Код: plaintext
У тебя половину места ноли занимают, сделай их обрезание, программно ведь генеришь строку. И при генерации проверяй длину строки, достиг например 2000 символов, выполнил, дальше генеришь. Два Replace ничем не хуже одного. Более того, там есть 0.00000000 - можно заменить просто на 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 15:56 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammer, Как вариант, не все пучком обновлять, а отдельно каждое поле REPLACE ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 16:00 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammerВладимирМ, И что теперь делать? Ведь такой ответ конечного пользователя не устроить. Не понял, а при чем тут конечный пользователь? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 16:08 |
|
Replace
|
|||
---|---|---|---|
#18+
tanglirDima T, там поля не все подряд, а выбираются пользователем. Это же придётся помимо массива с данными иметь массив со структурой, да проверять, что там пользователь понавыбирал, да в оба массива лазить... не-е-ет, МП - оно куда яснее, удобнее, надёжнее и привычнее. ХЗ чего там сложного. Получится десяток строк кода, может чуть больше чем у тебя сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 16:09 |
|
Replace
|
|||
---|---|---|---|
#18+
IgorProgrammerВладимирМ, И что теперь делать? Ведь такой ответ конечного пользователя не устроить. С Ув. Игорь. Для VFP9 нашел такую заметку VFP9Updatable Fields in UPDATE - SQL Command The number of fields that can be updated with the UPDATE - SQL Command is no longer limited to 128 as in prior versions of Visual FoxPro. You are now limited to 255, which is the number of fields available in a table. Также есть еще старая ошибка с кодом 1864 (Too many fields in UPDATE ) Другими словами, ограничение на 128 полей все-таки было. Хотя явно и не описывалось. Решение соответственно может быть либо в использовании команды UPDATE-SQL с дописыванием WHERE Код: plaintext 1. 2. 3. 4. 5. 6.
Либо просто банально разбить одну команду REPLACE на 2, если количество полей превысит 128. Исполнить можно либо двумя командами с макроподстановкой, либо ExecScript(). Ну, или действительно в команде REPLACE обновлять по одному полю за раз просто в цикле перебирая все указанные поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 16:10 |
|
Replace
|
|||
---|---|---|---|
#18+
Вот пример с массивами Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 16:24 |
|
|
start [/forum/topic.php?fid=41&msg=37229130&tid=1584410]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 137ms |
0 / 0 |