|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Люди, помогите кодом! Мне нужно запускать хранимую процедуру в SQL-server'е из екселя с вводом параметра. То есть, ввожу в ячейку 0,56, запускаю макрос - ХП выполняется. И ещё как-то бы получать в качестве обратной связи сообщения типа, "Не удалось записать значение плотности" или "Параметр успешно записан" - это предусмотрено скриптом ХП. Оговорюсь сразу: из SQLа процедура успешно работает с выдачей диагностических сообщений, строка подключения тоже верна. Приведённый скрипт посоветовали, но не фурычит он, ругается "Type mismatch". Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Модератор: Учимся использовать тэги оформления кода - FAQ ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2018, 22:13 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovax, у вас есть на сервере процедура с именем SPNetWriteGasDensity0.56 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2018, 23:37 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Для начала в этом коде синтаксическая ошибка (там где кавычки в строке подключения) - кавычки в текстовых литералах нужно задваивать А дальше надо почитать что-нить о том, как запускать процедуры с параметрами первое попавшееся http://www.askit.ru/custom/vba_office/m9/09_06_ado_command.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2018, 23:41 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Shocker.Pro, 0,56 - это значение, которое процедура SPNetWriteGasDensity должная записать в прибор. Указанная процедура, разумеется, есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 00:16 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxShocker.Pro, 0,56 - это значение, которое процедура SPNetWriteGasDensity должная записать в прибор. Указанная процедура, разумеется, есть.нет, я спросил именно про имя "SPNetWriteGasDensity0.56" Потому что именно такую вы пытаетесь запустить Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 10:12 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Shocker Pro, чёт я Вас не понимаю: Вы что имеете в виду? В вышеуказанную строку я вкладываю следующий смысл: exec(пробел)имя процедуры(пробел)значение. Может, в этом ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 19:51 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxимя процедуры( пробел )значениеи покажите мне этот самый пробел ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 20:56 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Хм, как его показать-то... Просто нажатие клавиши пробела. Может быть, надо: cmd = "exec SPNetWriteGasDensity 0.56"? В понедельник на работе попробую. Да, и на строку подключения внимания не обращайте - она у меня в других макросах используется - проверено, работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 21:13 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxХм, как его показать-то.Ну как. Я же давал ссылку на то, как оформлять сообщения. Там есть и средства выделения в коде.kovaxПросто нажатие клавиши пробела.нажатие клавиши пробела не означает появления пробела в тестовом литерале.kovaxДа, и на строку подключения внимания не обращайте - она у меня в других макросах используется - проверено, работает.строка может и рабочая, но это не значит, что втупую скопированная она будет правильно присвоена переменной.kovaxМожет быть, надо: cmd = "exec SPNetWriteGasDensity 0.56"?как вариант. А вообще, ссылку как запускать процедуру с параметрами я давал выше kovaxПриведённый скрипт посоветовали, но не фурычит онне знаю, кто там вам чего советовал, но этот скрипт ни о чем, он ничего не делает, даже если исправить в нем ошибки ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2018, 22:38 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Так, запускать процедуру с параметром я научился, наконец-таки! Осталось решить задачу с обратной связью - чтобы в виде MsgBox'ов выводилось сообщение, которое выводится, если я эту процедуру выполняю из кверианализера. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 09:29 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Shocker Pro, прошу Вас помочь в этом деле! Знаю теперь, что можете! Привожу скрипт ХП (авторство не моё, если что): Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 09:35 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3.
Типа того ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 10:04 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Выскакивает ошибка "Run-time error '3265'. "Не удаётся найти объект в семействе, соответствующий требуемому имени или порядковому номеру". Пробовал подставлять вместо Diagnostic ErrorMessage (@ErrorMessage) - то же самое ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 10:55 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
первым оператором хранимки напиши Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 11:44 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Вставил. После AS (т.е. 4-ой строкой SET NOCOUNT ON). Ничего не изменилось. Почти: если писать не "Diagnostic", а "Diagnostics", тогда выскакивает MsgBox "Ok". Правда, он выскакивает всегда, даже если в счётчик не записалось значение. А до ввода SET NOCOUNT ON даже такая "диагностика" не работала. В общем, не то, что нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 14:06 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
На всякий случай... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 14:08 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Вы что-то мутите, потому что никакого Diagnostics в вашем коде нет. Поставьте точку останова на MsgBox, посмотрите, что возвращается в rst ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 14:36 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Ещё раз скрипт ХП и скриншот Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 14:54 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Виноват, скрипт чуть изменил Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 14:56 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Скрин с результатом точки останова на MsgBox ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 15:19 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
А вот для варианта Diagnostics ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 15:22 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Ну так на скрине с QA всё же видно! В первом рекордсете у вас Diagnostics="Ok", что вы голову морочите. Чтобы получить данные из второго рекордсета, нужно брать данные из rs.NextRecordset() ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 15:33 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Но я бы в данном случае, раз вложенные процедуры возвращают какие-то свои рекордсеты, получал бы сообщение через @ErrorMessage, объявив его как output-параметр процедуры ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2018, 15:35 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Заработало, как хотел. Добавил строку Код: vbnet 1.
Shocker Pro, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 08:37 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Shocker Pro, может быть, подскажете, в чём дело? Обычно я ввожу число, где разделителем служит точка - тогда ХП пишет "Успешно". Если поставить разделителем запятую и попытаться запустить ХП через QA, то анализер будет ругаться, а число не запишется - проверено. Если так же сделать, используя ексель, он выдаст сообщение "Успешно", хотя ХП ведь не выполнит запись! Даже если перезагрузить комп (чтобы исключить сохранение Recordset'ов), открыть книгу и сразу попытаться записать число с "неправильным"разделителем- всё равно пишет, что успешно. Меня вот это напрягает! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 09:38 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
сделайте параметр @Density числовым ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 09:52 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxShocker Pro, может быть, подскажете, в чём дело? Обычно я ввожу число, где разделителем служит точка - тогда ХП пишет "Успешно". Если поставить разделителем запятую и попытаться запустить ХП через QA, то анализер будет ругаться, а число не запишется - проверено. Если так же сделать, используя ексель, он выдаст сообщение "Успешно", хотя ХП ведь не выполнит запись! Даже если перезагрузить комп (чтобы исключить сохранение Recordset'ов), открыть книгу и сразу попытаться записать число с "неправильным"разделителем- всё равно пишет, что успешно. Меня вот это напрягает! Почему Вы решили, что "ХП ведь не выполнит запись" Если Вам вернулось "Успешно", то ХП отработала на "ура" Вы не путайте запуск ХП в QA и из других мест. В QA разделитель целой и дробной части всегда точка. Он упадет на этапе компиляции запроса. В Экселе, если Вы создали парамер типа число, то туда и будет передаваться число (по-возможности конвертица) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 13:25 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
HandKotВ Экселе, если Вы создали парамер типа число, то туда и будет передаваться число (по-возможности конвертица)В том-то и дело, косяк тут Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:01 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
HandKot, прежде чем писать сюда, я проверяю всегда результат, чтобы ни самому, ни других участников не запутать. Ещё вот раз попытался значение с запятой из экселя отправить - не записалось, я это прямо в приборе (газовый счётчик, СПТ-761) смотрю. Shocker Pro, QA "согласна работать" только с varchar. Ни с real, ни c float не хочет никак, самому странно! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:40 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxQA "согласна работать" только с varchar. Ни с real, ни c float не хочет никак, самому странно!а) ерунду говорите б) решение я сказал - меняйте varchar на число и ADO сам разберется, как туда корректно передать число, независимо от локализации винды ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:42 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Или Вы имеете в виду, что в ХП оставить @Dencity как есть, то есть varchar, а adVarChar заменить другим типом (числовым)? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:43 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxв ХП оставить @Dencity как естьнет, менять в обоих местах, да и в xp_SPNet_set_array тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:44 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Не, в тот файл я не полезу, это файл типа *dll, выполняет роль драйвера счётчика для SQL. С этим пока всё. Ломаю голову теперь над другой ХП, которая бы эту плотность теперь из памяти счётчика получала, а в перспективе - на лист екселя (в качестве обратной связи). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 14:54 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxНе, в тот файл я не полезуну хотя бы на входе в свою ХП надо поставить число, а при вызове xp_SPNet_set_array конвертировать в строку ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 15:28 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Понял, попробую! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 15:29 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxПонял, попробую! Мне кажется поменять будет бесполезно, проблема видать в вызове ХП master..xp_SPNet_set_array внутри ХП SPNetWriteGasDensity Сделайте простой костыль, т.к параметр @Density используется только при вызове ХП master..xp_SPNet_set_array , то просто забейте костыль добавьте строку Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 07:53 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
HandKot, работает! Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 10:31 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Нашёл в списке ХП процедуру для чтения плотности из газового счётчика. Кто-то до меня её ещё написал, не знаю даже, рабочая ли - надо проверить, запустив её в кверианализере и указав значения переменных, в том числе и @SPNetHandle. И вот с ней проблема! Что это такое, как узнать её величину - понятия не имею! Эта же переменная есть в ХП для записи, текст которой я уже приводил, но там она, видимо, сама вычисляется, а здесь её значение нужно указать при попытке запуска в QA. Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 13:47 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
kovaxЭта же переменная есть в ХП для записи, текст которой я уже приводилнету ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 13:57 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Впрочем, там есть @Handle, ну так она возвращается из xp_SPNet_connect kovax Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 13:58 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Shocker Pro, а есть идеи, что это может быть? У меня единственная версия - SPNetHandle - это номер сети, (приборы объединены в сеть), в данном случае 1. И каждая сеть соединяется со своим СОМ-портом. Делаю такой запрос в QA Код: sql 1.
Пишет в ответ "1 row affected = 0" - типа, все строки пустые. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 14:19 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
скажем так, это условный номер некоего объекта соединения, которое создается xp_SPNet_connect и через которое идет обмен со счетчиком. Придумать его нельзя - нужно использовать xp_SPNet_connect для его получения ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 14:29 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
Заставил, наконец, работать процедуру Код: sql 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.
Не знаю только что с getdate делать - она выводит дату-время, а мне нужно только дату. Что нужно дописать? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 15:45 |
|
Запуск хранимой процедуры из Excel
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 15:53 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2155103]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
others: | 270ms |
total: | 432ms |
0 / 0 |