|
|
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
VB6. Работаю с MS SQL SERVER 2005. В цикле пишу следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Код: plaintext 1. 2. 3. 4. 5. Call rs.Open(StrSQL, cnnPBD, adOpenKeyset, adLockOptimistic, adCmdText) ошибка такая: Source : ADODB.Recordset Description: Operation is not allowed when the object is open. Что здесь не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 19:02 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
Уберите Call. Почитайте хотя бы это . И обратите внимание на то, что при модификации связанного рекордсета апдейт вызывается автоматом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 23:15 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
Внимательно прочитал, но ничего нового и полезного для себя не нашел. Там в частности написано: Если курсор перемещён с добавленной или изменённой записи, метод вызывается автоматически. но я не перемещаю курсор посредством MoveNext или другим подобным образом. Каждый раз я делаю rs.Open, работаю с одной записью, а потом делаю опять rs.Open. При более тщательном тестировании оказалось, что если не делать rs.Update, то на rs.Close вырабатывается ошибка: Код: plaintext 1. 2. Мне в данном конкретном случае не жалко делать всегда rs.Update, но хотелось бы понять почему я должен это делать даже тогда когда фактически поля записи не модифицирую ? Убрав call вообще не увидел никаких изменений, ну стало у меня теперь Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 12:17 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
Вы говорите, что внимательно прочитали? Если у вас курсор Keyset, то модификация таблицы вызывается через .UpdateBatch() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 23:13 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
AndreTMВы говорите, что внимательно прочитали? Если у вас курсор Keyset, то модификация таблицы вызывается через .UpdateBatch() В том варианте когда происходит ошибка вообще Update не выполняется. Просто делается rs.close и на следующей второй итерации при вызове Call rs.Open(StrSQL, cnnPBD, adOpenKeyset, adLockOptimistic, adCmdText) происходит ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 14:21 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
если уж делаете rs.AddNew то делайте либо rs.Update , либо rs.CancelUpdate I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 15:53 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
HandKotесли уж делаете rs.AddNew то делайте либо rs.Update , либо rs.CancelUpdate А если не выполняется ни rs.AddNew ни rs.Update а только Open и Close - что делать ? Именно в этом случае на второй итерации ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 16:09 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
выложите наконец сюда свой код с жутким циклом, а мы посмотрим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 16:20 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
Я бы для начала убрал декларации из тела цикла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2008, 18:47 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
PavelT100HandKotесли уж делаете rs.AddNew то делайте либо rs.Update , либо rs.CancelUpdate А если не выполняется ни rs.AddNew ни rs.Update а только Open и Close - что делать ? Именно в этом случае на второй итерации ошибка. если бы ничего этого не было, тогда бы и ошибки не было выложите весь цикл целиком, а не обрезки I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2008, 08:15 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
Спасибо всем! Проблему с которой обращался я решил. Все дело было очень просто, я по невнимательности не заметил, что запись модифицируется Код: plaintext Код: 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. 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. На самом деле в сравниваемых таблицах все записи одинаковые и никаких модификаций быть не должно. Вот такой получается лог, когда процедура работает хорошо. Код: plaintext 1. 2. 3. 4. 5. А вот так когда падает : Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 13:27 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
Провел еще несколько экспериментов, последовательно убираю куски кода и фиксирую факт ошибки. Итак, если убрать код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 19:12 |
|
||
|
Какой то глюк из-за Update
|
|||
|---|---|---|---|
|
#18+
а еще кто-нибудь с этими таблицами работает? I Have Nine Lives You Have One Only THINK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 08:31 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35584102&tid=2161634]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 452ms |

| 0 / 0 |
