|
|
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#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. 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. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. В ней есть вот такой кусок кода: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. InsertIntoDB - процедура вставки строки в базу FireBird Код: 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. SaleStr - передача строки чека кассовому аппарату Код: 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. Так, вот раньше процедуры RoundSums (для округления цифр в чеке, чтобы не было лишних копеек) не было Из нее при некоторых условиях вызываются по 1 разу InsertIntoDB и SaleStr (если в чеке есть скидка и еще пара условий, то есть не всегда вызываются). Но вот когда вызываются, но тоже не всегда (!!!!) вылазит ошибка авторParameter "ID_DOC" does not exist in DM.writeQuery. Причем если набить чек заново, то со второй попытки все нормально пробивается! Подскажите пожалуйста в чем может быть затычка! Вот код процедуры RoundSums Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 12:23 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
арт2010, Текст ошибки говорит о том, что у тебя проблемы с записью в БД. Проверяй, как пишешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 12:36 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
DarkMaster, логично. Самое плохое, что ошибка плавающая. Я не могу понять почему она возникает лишь иногда при прочих равных условиях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 12:43 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
арт2010, Очевидно потому, что если у вас округление, вы пытаетесь заполнить несуществующий параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 12:45 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
DarkMaster, это понятно. Непонятно, почему один раз он не существует, а в другой раз - существует. Я же говорю - прочие условия равные (по крайней мере с точки зрения исходных данных). Набивается чек с одними и теми же позициями (то есть округление срабатывает в обоих случаях) на одной и то же машине. Но один раз ошибка вылазит, а во второй раз - нет. Такое ощущение, что дело в скорости набития чека или еще чего то, что оказывает влияние на запись строки в базу и отправки ее кассовому аппарату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 12:51 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
арт2010Непонятно, почему один раз он не существует, а в другой раз - существует. Может дело в том, что текст запроса у dm.writeQuery меняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 12:58 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
арт2010, В пишущей query SQL запрос динамически формируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 13:00 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
Да Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Потом в цикле подставляются параметры посредством InsertIntoDb Код: 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. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. И все работал без сбоев, пока не появился еще один вызов InsertIntoDB из RoundSums: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Но вроде вызывается то InsertIntoDB все равно последовательно, так что не могу понять, откуда взялась эта ошибка и главное почему она плавающая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 13:12 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
Текст SQL запроса покажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 13:14 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
Кажется понял в чем дело, у меня dm.writeQuery.ExecQuery вызывается каждый раз из InsertIntoDB, а должен только один раз уже после цикла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 13:17 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
арт2010Кажется понял в чем дело, у меня dm.writeQuery.ExecQuery вызывается каждый раз из InsertIntoDB, а должен только один раз уже после цикла? ExecQuery выполняет query. Что будет, если вы в InsertIntoDB установите параметры, но не выполните? Правильно, данные не попадут в БД. Ошибка арт2010Parameter "ID_DOC" does not exist in DM.writeQuery. говорит о том, что такого параметра не нашли. А не найти его можно, когда текст запроса меняется. Он у вас вообще меняется? Или только один раз установили и не трогаете, и не очищаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 13:30 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
goldmi45, 1. Да, все верно, уже понял. 2. Текст запроса не меняется, только параметры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 13:32 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
Появилась мысль, что дело не в SQL. Процедура RoundSums вызывается не только при пробитии чека, но и до его пробития (и после) в процедуре вывода цифр на экран RefreshLabels: Код: 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. Поэтому поставил условие чтобы отделить простое округление с выводом экран и реальное пробитие позиции в чеке и запись его в БД Код: pascal 1. 2. 3. Которое иногда видимо срабатывает слишком рано Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Сделаю тогда две разных процедуры и буду смотреть что получится Всем спасибо за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 14:04 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
арт2010И все работал без сбоев, пока не появился еще один вызов InsertIntoDB из RoundSums:Очевидно же, что процедура RoundSums меняет текст запроса. Ищите где ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 14:48 |
|
||
|
Помогите найти непонятную ошибку!
|
|||
|---|---|---|---|
|
#18+
Не очевидно. Я же приводил листинг RoundSums, текст запроса там нигде не изменяется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 16:04 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39667126&tid=2040684]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
194ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 536ms |

| 0 / 0 |
