|
|
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
[DCC Error] fmReportExecutionProfitU.pas(960): E2283 Too many local constants. Use shorter procedures Там практически один оператор - присвоение текста SQL-запросу. Запрос длинный, с вложенными подзапросами. Код: pascal 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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. Там около 18 длинных подзапросов, по количеству столбцов отчета. И выдает эту ошибку. Без разницы, делаешь все одним текстом ADQueryCoopS.SQL.Text := '...' или с помощью нескольких Add ADQueryCoopS.SQL.Add(...); Как обойти проблему. Более коротким запрос сделать не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:35:32 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:44:23 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Убери вот эти +#13#10. Ни тебе ни SQL компилятору они не помогают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:46:52 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Еще бы накидать неиспользуемых датасетов на форму и там код хранить -- намного удобнее будет копипастить из-в делфи. А если нужна динамическая генерация, то вместо изменяемого кода поставить заглушку типа @MY_IF@ и туда уже через Replace вставлять куски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:55:24 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovУбери вот эти +#13#10. Ни тебе ни SQL компилятору они не помогают. При отладке запроса, когда сохраняешь его SQL.SaveToFile() и потом отдельно смотришь текст в менеджере запросов - это помогает, а иначе запрос получается в одну строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:56:27 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DarkMastersvnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. Как понять, разбить на более мелкие куски? Вот я разбил с помощью SQL.Add, в каждом по 10-20 строк, и в итоге та же самая ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:00:26 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladDarkMastersvnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. Как понять, разбить на более мелкие куски? Вот я разбил с помощью SQL.Add, в каждом по 10-20 строк, и в итоге та же самая ошибка. Разбей процедуру на части. Вместо одной процедуры - две или три. Еще лучше - четыре. Но не больше пяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:05:17 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, Вынеси эти константы из процедуры наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:11:32 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Кажись, в jedi компонентах был контейнер текстов. Кидаешь на форму или датамодуль, создаешь именованные айтемы, в айтемы во встроенном редакторе пишешь любой текст текст. Экземпляры объектов - айтемов внедряются в код класса формы, т.е. доступны в компайл-тайме. Вроде бы. А если недоступны, то доступны в рантайме, типа GetByName('''), :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:12:55 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladПри отладке запроса а что мешает отлаживать запрос в админском для твоей СУБД инструменте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:19:56 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
чччДКажись, в jedi компонентах был контейнер текстов. Кидаешь на форму или датамодуль, создаешь именованные айтемы, в айтемы во встроенном редакторе пишешь любой текст текст. Экземпляры объектов - айтемов внедряются в код класса формы, т.е. доступны в компайл-тайме. Вроде бы. А если недоступны, то доступны в рантайме, типа GetByName('''), :-). Можно тупо на форму положить TMemo с текстом. А если на датамодуль - то TStringValuesList. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:20:24 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Док> а что мешает отлаживать запрос в админском для твоей СУБД инструменте? Вероятно, это динамический запрос - когда составные части (а не параметры) нестатичны. Приходилось как-то такое отлаживать, ужас. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:21:29 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Тот случай, когда "уж лучше бы ты использовал хранимки"... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:45:18 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамВероятно, это динамический запрос - когда составные части (а не параметры) нестатичны.Никакого вероятно, код приведен, в нем нет if. И, кстати, никакого ужаса в отладке тоже нет. Делаешь наряду с выполнением запроса вывод его текста и отлаживаешь спокойно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:52:55 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladDarkMastersvnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. Как понять, разбить на более мелкие куски? Вот я разбил с помощью SQL.Add, в каждом по 10-20 строк, и в итоге та же самая ошибка. Используй темповые (временные) таблицы, если СУБД позволяет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:16:44 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
> Никакого вероятно, код приведен, в нем нет if. Хотя да, if-ов не видно, и если там действительно "практически один оператор", то лучше вынести в ХП. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:19:07 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам> Никакого вероятно, код приведен, в нем нет if. Хотя да, if-ов не видно, и если там действительно "практически один оператор", то лучше вынести в ХП. Может и не выдержать. :) На разных серверах разные ограничения на размер процедуры, "количество контекстов" и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:32:16 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, У тебя получается слишком большая константная строка внутри процедуры. Можно: 1) Написать кучку процедур типа: Код: pascal 1. 2. 3. 4. и звать их как: Код: pascal 1. 2. 3. 4. 5. 6. 2) Сделать Код: pascal 1. Я за второй метод, если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:11:35 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladПри отладке запроса, когда сохраняешь его SQL.SaveToFile() и потом отдельно смотришь текст в менеджере запросов - это помогает Лично я сначала отлаживаю запрос во внешнем инструменте, а только потом копипастю его в программу, обрамляя строки кавычками. Так проще получается. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:16:33 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Ограничения, конечно, есть, но, во-первых, они довольно большие, во-вторых, эта бодяга с клиента всё равно на сервер уйдёт. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:17:53 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsvnvladПри отладке запроса, когда сохраняешь его SQL.SaveToFile() и потом отдельно смотришь текст в менеджере запросов - это помогает Лично я сначала отлаживаю запрос во внешнем инструменте, а только потом копипастю его в программу, обрамляя строки кавычками. Так проще получается. Обычно получается с первого раза. Затыки бывают один на 20 случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:19:53 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad> Обычно получается с первого раза. С первого раза пишешь запросы прямо в Delphi, без DB-tool? Силён. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:30:20 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Можно типа этого Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:35:40 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамsvnvlad> Обычно получается с первого раза. С первого раза пишешь запросы прямо в Delphi, без DB-tool? Силён. Большинство не сложные, а те, что сложные, берутся с других похожих, уже работающих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:38:54 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39538310&tid=2041700]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
201ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 548ms |

| 0 / 0 |
