|
Подключение к SQL
|
|||
---|---|---|---|
#18+
mpkfaЗапрос напрямую из базы данных Если не ошибаюсь, то GroupBy как раз вызывает подсчет строк. Попробуйте добавить SET NOCOUNT ON сразу после USE B2. Попробутей поэкспериментировать с созданием вида или хп, возможно Excel не проглатывает такую команду. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 14:50 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
lbppb, Причем тут NOCOUNT и таймаут??? Если была бы проблема с NOCOUNT, была бы ошибка про BOF/EOF, а у автора ошибка "Таймаут". 45 сек как раз таймаут по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 14:52 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
lbppb, не сработало( ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 14:58 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
mpkfa, точно таймаут? какой текст ошибки? Приведите фрагмент кода, как программируете таймаут и выполняете запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 14:59 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Shocker.Pro, Код: vbnet 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.
Дебуггер выделяет строчку TopLeft.Cells(2, 1).CopyFromRecordset RS а ошибка run-time error '3704' Операция не допускается если объект закрыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 15:14 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
функция query формирует текст запроса аналогичного представленному выше(уже был пример текста запрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 15:16 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Ну и где тут, спрашивается, таймаут???? Почему у вас рекордсет передается ByVal? Естественно он закрыт, а чего еще ожидать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 15:32 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Shocker.Pro, а покажите как надо?)) просто убрать byVal? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 15:40 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
mpkfaShocker.Pro, а покажите как надо?)) просто убрать byVal?Надо просто открыть хелп и прочитать, что такое ByVal, вы же это сами придумали написать, а не где-то скопировали. Должно быть ByRef mpkfaгде то тайм аут выходит а где не понятно.mpkfaЕсть мысль что Connection и recordset живут независимо друг от друга...mpkfaа он рекордсет закрывает.на будущее - не надо никаких домыслов, сразу пишите конкретный код и конкретную ошибку, это решило бы вопрос с первого же ответа ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 15:50 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Мне кажется byval тут ни при чем. С простым запросом то все работает. И recordset нормально данные передает. Когда же запрос выполняется больше 45 сек тогда ошибку выдает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:09 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
C простым запросом работает именно этот код? On Error Resume Next используется? Option Explicit используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:10 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Shocker.Pro, Да, именно этот код. Option explicit стоит самой первой строчкой. On Error Resume Next не использовал. А куда поставить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:14 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Shocker.Pro, вот весь код. Код: vbnet 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.
если я в строке sSql = S '"select top 100 * from B2.dbo.T1" 'Your query оставляю строку запроса S то выдает ошибку, а если запрос из коммента, то работает. Причем напрямую в среде sql запрос S работает и выполняется около 2,5 мин. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:21 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Shocker.Prolbppb, Причем тут NOCOUNT и таймаут??? Если была бы проблема с NOCOUNT, была бы ошибка про BOF/EOF, а у автора ошибка "Таймаут". 45 сек как раз таймаут по умолчанию. У меня была точно такая же ошибка и проблема была как раз в NOCOUNT, и не у одного меня: http://stackoverflow.com/questions/7663617/adodb-open-recordset-fails-operation-is-not-allowed-when-object-is-closed http://www.vbforums.com/showthread.php?569433-VBA-Excel-error-3704-operation-is-not-allowed-when-the-object-is-closed Все дело в том, что когда NOCOUNT OFF, то данные с сервера возвращаются со счетчиком записей и VBA с этим уже не может справиться. При чем запрос исполняется себе и в самом конце, когда данные должны вернуться вылезает ошибка. По симптомам очень даже похоже на случай ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:22 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Shocker.ProНу и где тут, спрашивается, таймаут???? Почему у вас рекордсет передается ByVal? Естественно он закрыт, а чего еще ожидать? ByVal тут абсолютно ни при чем. Вы наверное с чем-то путаете или код не внимательно посмотрели. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:25 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
lbppb, вот такой Код: plsql 1. 2. 3.
запрос тоже работает. Выполняется за 19 сек и выдает все нормально. Значит и не в group by дело... Где то таймер спрятался... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:35 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
mpkfa, Какая версия Excel и сколько строк должно возвращаться с запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:41 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
lbppb, эксель 2007, а строк должно вернуться не более 10 тыс. Просто там много вычисляемых в агрегатных функциях величин, поэтому делается долго. Думаю ограничения по строкам думаю тут ни при чем. А на драйвере подключения не может быть этого оганичения? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:48 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
mpkfalbppb, эксель 2007, а строк должно вернуться не более 10 тыс. Просто там много вычисляемых в агрегатных функциях величин, поэтому делается долго. Думаю ограничения по строкам думаю тут ни при чем. А на драйвере подключения не может быть этого оганичения? Я протестировал, у меня сотни тысяч строк возвращаются и занимает где-то 5 минут. Я не знаю, может у вас на сервере стоит ограничение, но тогда не понятно как у вас раньше работало. Попробуйте тот же самый текст запроса на сервере и вручную в Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:54 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Небольшое отвлечение Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
А если у вас будет 1000 возможных значений, вы 1000 раз напишете ElseIf? Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:55 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Попробуй в папке с ado (у меня это C:\Program Files\Common Files\System\ado\) при помощи regsvr32 зарегистрировать из командной строки все файлы dll. Например: regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll" Или создай батник. Иногда помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:57 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Для тестов таймаута можно просто выполнить: Код: sql 1.
запрос подождет минуту потом вернет одну строку, так будет понятно, в запросе и количестве строк дело или в таймауте ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 16:57 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
Всем спасибо за помощь. Завтра продолжу. Приходите еще))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 17:04 |
|
Подключение к SQL
|
|||
---|---|---|---|
#18+
lbppb, Я не прав, прошу прощения, отсутствие NOCOUNT действительно приведет к такой ошибке, а не к BOF/EOF Правда автор говорит, что "не сработало", но может все-таки не туда или не так вставил. Для проверки этой ситуации можно после Код: vbnet 1.
вставить Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2013, 18:16 |
|
|
start [/forum/topic.php?fid=61&msg=38378730&tid=2174578]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 154ms |
0 / 0 |