|
|
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladwadmanпропущено... Одна функция с тремя параметрами: тип операции, две id. Там, если заметили id то разные. У одной это id карты, у другой - id подтипа груза, у третьей - id номенклатуры, у четвертой - id партии. Это ничего не меняет. Тип операции, старый ид, новый ид. Уж по операции то сумеешь определить, что к чему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 07:37 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladпропущено... Там, если заметили id то разные. У одной это id карты, у другой - id подтипа груза, у третьей - id номенклатуры, у четвертой - id партии. Это ничего не меняет. Тип операции, старый ид, новый ид. Уж по операции то сумеешь определить, что к чему? Ну да, можно же присвоить в зависимости от типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 10:17 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladЧерез каждые 90 секунд форма обновляется, чтобы отобразить изменения, если они, возможно, сделаны другим сетевым пользователем ... период заморозки составляет до 10 секунд при плохом соединении. Так вот - можно ли как-то сделать сам процесс перечитывания данных из базы в Thread-е, а уже их отображение - в основном потоке? Думаю, это бы значительно улучшило дружественность программы к пользователям. Ну, капитан Очевидность задал бы вопрос: "Что будет, если 10 пользователей при плохом соединении будут постоянно перечитывать данные?" Как-то процесс перечитывания можно сделать так: Соединение с БД и все запросы должны создаваться и выполняться в самом Thread, можно всё что нужно для TTread вынести в отдельный TDataModule и при чтении создавать и разрушать его. Внутри TThread после загрузки всех наборов данных, копируем их содержимое (см. метод Synchronize) в какие-нибудь наборы данных в памяти (TMemDataSet, TClientDataset и т.п.), которые работают в основном потоке и показываются в гридах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:12 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbКак-то процесс перечитывания можно сделать так: Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanroschinspbКак-то процесс перечитывания можно сделать так: Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. Можно еще завести спец. поле в которое автоматически заносить текущую дату при любом изменении и читать только те записи в которых значение этого поля больше времени последнего чтения. Но чето подозреваю это слишком сложно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:29 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbwadmanпропущено... Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. Можно еще завести спец. поле в которое автоматически заносить текущую дату при любом изменении и читать только те записи в которых значение этого поля больше времени последнего чтения. Но чето подозреваю это слишком сложно... Сам догадался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:30 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
roschinspbНо чето подозреваю это слишком сложно... Не совсем. Триггеры, доп.условие в where да обновление измененных записей в памяти. Еще решить, что делать в конфликтных ситуациях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 16:32 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladСегодня опять не перерисовывается. Так что нужны они. Нет. Значит проблема в каком-то другом месте. Может например у вас "1" выполняется 5 секунд, а "2" и "3" выполняются мгновенно? Тогда ProgressBar показывает вполне корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 23:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanroschinspbНо чето подозреваю это слишком сложно... Не совсем Сложно в контексте Сегодня опять не перерисовывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 12:03 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
MinGWsvnvladСегодня опять не перерисовывается. Так что нужны они. Нет. Значит проблема в каком-то другом месте. Может например у вас "1" выполняется 5 секунд, а "2" и "3" выполняются мгновенно? Тогда ProgressBar показывает вполне корректно. Нет, всё равномерно выполняется. Сейчас сделал в треде, все нормально работает, только осталась в конце ближе к уничтожению треда какая-то ошибка доступа 5 вылазит. Но по данным все записывается четко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:24 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmanroschinspbКак-то процесс перечитывания можно сделать так: Я-бы еще добавил после с датой/временем изменения на ключевые таблицы и обновление только по нему делал. Там есть такая проверка. Просто само обновление сеток очень долго идет. Даже когда вручную нажимаешь кнопку обновить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2018, 19:26 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, что не так: возникает ошибка Access Violation. Ошибка доступа 5. При работе деструктора на строке FfmProgress.Free; Код: 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. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad Код: pascal 1. 2. Там что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:34 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadman, Код: 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. Да, и если закомментировать в деструкторе FfmProgress.Free;, то окошко так и остается висеть на экране. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:45 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad, а если в конструктор потока передавать уже созданную форму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:47 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladДа, и если закомментировать в деструкторе FfmProgress.Free;, то окошко так и остается висеть на экране. Просто закрывай окно, а в событии OnClose выставь action := caFree. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:51 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
goldmi45svnvlad, а если в конструктор потока передавать уже созданную форму? То же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:18 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
wadmansvnvladДа, и если закомментировать в деструкторе FfmProgress.Free;, то окошко так и остается висеть на экране. Просто закрывай окно, а в событии OnClose выставь action := caFree. Теперь нормально. А почему так? Видимое окно нельзя освобождать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:26 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladgoldmi45svnvlad, а если в конструктор потока передавать уже созданную форму? То же самое. Ну и в деструкторе потока не убивать форму, а уничтожать в главном потоке в событии OnTerminate потока.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:29 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladПодскажите пожалуйста, что не так: возникает ошибка Access Violation. Ошибка доступа 5. При работе деструктора на строке FfmProgress.Free; Ну давай думать. Эта строчка у тебя в деструкторе. Деструктор вызывается при уничтожении потока. Уничтожение потока при FreeOnTerminate = true происходит в самом потоке. Итого, операции с формой в левом потоке. Что говорится по этому поводу в VCL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:33 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvladwadmanпропущено... Просто закрывай окно, а в событии OnClose выставь action := caFree. Теперь нормально. А почему так? Видимое окно нельзя освобождать? Потому что поток еще "работает" с окном. Поменяй эти две строки местами. svnvlad Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 14:43 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
softwarerУничтожение потока при FreeOnTerminate = true происходит в самом потоке. Этот момент упустил из виду. В общем, с caFree тогда единственный из простых вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 15:06 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
В общем получилось красиво. Если интересно, в главной форме: Код: 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. Класс потока: Код: 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. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 16:34 |
|
||
|
Как в процессе исполнения ряда SQL-запросов отображать прогресс-бар? (thread?)
|
|||
|---|---|---|---|
|
#18+
svnvlad, портянки стоит в спойлер прятать. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 20:02 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39712546&tid=2040313]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 497ms |

| 0 / 0 |
