|
|
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Никак не могу справиться.. Посмотрите пожалуйста еще раз.... В общем так. Злосчастная хранимая процедура работает. Проверено в QueryAn. На ASP корректно вызывается. После того, как в конце на ASp пишется cmdProc.Execute - выпоняется. Но, поскольку у меня процедура выдает таблицу значений, т.е. в конце пишется Select * from Result, то на asp нужно выполнение процедуры поставить в RecordSet. Я пишу. rstProc.Open cmdProc.Execute И на эту строку выдает Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. В этом случае, я уж совсем не знаю куда смотреть, т.к. процедура работает, и если её выполнить просто cmdProc.Execute, то ошибки нет, но мне же надо как-то результат получить... Ох,... помогите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 08:35:33 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Перед этой строчкой значения всех входных параметров должны быть указаны в команде cmdProc, свойство ActiveConnection установлено Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 09:19:47 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Переделала. Теперь эту строчку пропускает, но теперь на строку rstProc.MoveFirst орет: Operation is not allowed when the object is closed. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 09:32:12 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Выберите что-нибудь одно: или открытие Recordset'а и метод Оpen rstProc = Server.CreateObject("ADODB.Recordset") ... rstProc.Open("YOurProc",.....) Или выполнение команды и метод Execute cmdProc= Server.CreateObject("ADODB.Command") ..... rstProc=cmdProc.Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 09:32:59 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
А зачем MoveFirst? Полный текст скрипта, пожалуйста. Кроме того, server-side cursor является по-умолчанию ForwardOnly. И MoveFirst там точно не должен работать. И, пожалуйста, прочитайте внимательно следующий текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 09:43:11 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Простите пожалуйста за некорректное описание. Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А далее, я обрабатываю рекордсет,для записи данных из него в таблицу. Что-то вроде этого.... Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 09:52:48 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
SET NOCOUNT ON - в процедуре есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:09:36 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
А если сразу EOF? :-))) Из BOL If the Recordset object does not support backward cursor movement, a call to the MoveFirst or MovePrevious methods generates an error. For example, the default setting of the CursorType property is adOpenForwardOnly, which supports only the MoveLast and MoveNext methods Вы бы почитали что-нибудь......Про ADO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:12:10 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
В первую очередь..... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:17:07 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
А если сразу EOF? :-))) Из BOL If the Recordset object does not support backward cursor movement, a call to the MoveFirst or MovePrevious methods generates an error. For example, the default setting of the CursorType property is adOpenForwardOnly, which supports only the MoveLast and MoveNext methods Вы бы почитали что-нибудь......Про ADO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:17:08 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
MoveFirst убрать. После открытия рекордсета первая запись и так текущая (если она есть, если записей нет, то rstproc.eof=true and ) Цикл for i=1 to a убрать к чертовой матери. Лучше использовать do while not rstproc.eof ... rstproc.movenext loop Исходный текст проверить еще раз. Потому что явных причин для такой ошибки я не вижу. Но возможно, вы открыли один рекордсет, а в цикле пытаетесь использовать другой, на который ссылается другая переменная, не rstProc В начале хранимой процедуры поставить set nocount on Если не поможет, то сообщить о результатах предпринятых действий. И сразу прислать полный исходный текст. От Open и до завершения цикла, в котором выводятся результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:25:22 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Уважаемая Лёля. До вас еще Chicago говорил, что все из-за ForwardOnly . И вообще известно, что с этим курсором передвигаться назад нельзя. Потому и задаю вопрос, что при любых курсорах, рекордсет не работает! Вы бы лучше подсказали почему возникает ошибка, а не что делает тот или иной курсор, этот вопрос я, кажется, не задавала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:25:51 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Профайлер в руки и смотреть чего там запускается и с какими параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:27:54 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
2Леля В принципе согласен. Но если первая запись является текущей, то MoveFirst отрабатывает без ошибок и на ForwardOnly server-side ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:28:03 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
1.Цикл While 2. <tr><td><%= RstProc.Fields("Mark").Value></td></tr> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:39:53 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Не получается. Вот код. Орет ту же ошибку на RstProc.eof Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:48:39 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
3. Вместо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. напишите Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Выберите что-нибудь одно: или открытие Recordset'а и метод Оpen Или выполнение команды и метод Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 11:15:00 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Все то же. Не работает. :( Кстати, в процедуре возвращается один Select, а не несколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 11:21:38 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Так set nocount on есть в процедуре или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 12:00:53 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
А если убрать описание параметров и все собрать в одну текстовую строку cmdProc.commandText = "..." А потом set rstProc = cmdProc.Execute. Это может повлиять на результат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 12:00:56 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Set nocount on есть. В самом начале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 12:03:31 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Ну давайте и я вставлю свои 2 копейки... Если после выполнения команды и присвоения результата рекордсету продолжает ругаться Operation is not allowed when the object is closed - это означает только одно - рекордсет не открыт при возвращении результата. Причин может быть много, т.к. по-умолчанию (если команда возвращает допустимый набор данных) - рекордсет все-таки должен быть уже открытым. Чтобы понять причину - сразу после выполнения команды - выведите состояние объекта Error (Error.Number или Error.Description), возможно - сразу поймете в чем дело... Если ошибки нет, но рекордсет все же не открывается - поменяйте стиль присвоения (например на Set My_RS = My_Connection.Execute("exec My_Procedure @my_parameter1=1")...). Иногда способ присвоения может сыграть злую шутку... Я лично пользуюсь всегда одним и тем же стилем вызовов процедур и построчной обработки рекордсетов (и никогда до сих пор не жаловался): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 12:48:53 |
|
||
|
SQL и ASP
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Пример конечно не из asp,но может поможет,т.к. работает заполнение по тому-же принцыпу. cmd - Адошный комманд ,хп в которую передаються параметры rst - рекордсет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:03:17 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32070627&tid=1818589]: |
0ms |
get settings: |
8ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 377ms |

| 0 / 0 |
