|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
Добрый день. Вот, пытаюсь в своем проекте переписать код работы с базой, конкретно - запись через хранимые процедуры.. И возник вопрос, а как записывать массивы данных? Конкретно у меня - автоматизация мебельного производства, запись заказов. Есть шапка заказа, таблица с составом и таблица с производственными датами по участкам. До этого я делал всё в цикле.. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но может есть способ организовать это через хранимую процедуру? чтобы цикл был уже в ней, и передавать ей несколько параметров, одним из которых будет массив данных. Подскажите, можно ли такое реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 17:02 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
PATRI0TПодскажите, можно ли такое реализовать? Нельзя, запрещаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 17:25 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
PATRI0TПодскажите, можно ли такое реализовать? Формируй строку через разделитель, в процедуре - разбивай её по этому разделителю. Если таких "элементов массива" будет заведомо немного (не нарвёшься на ограничение макс. размера varchar) - то рабочий вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 17:36 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
спасибочки ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 18:20 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
а в ADO нельзя запускать Update-команду с параметрами? что-то вроде такого ? http://bobby-tables.com/adodotnet ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 19:54 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
Ariochа в ADO нельзя запускать Update-команду с параметрами? Можно. Но аффтар не знает как. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 20:00 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochа в ADO нельзя запускать Update-команду с параметрами? Можно. Но аффтар не знает как.1000 "update-комманд" все равно наверняка будет хуже, чем один вызов "такой" процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2018, 22:01 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
YuRock, по скорости - да, но скорость все равно должна упереться в винчестер. даже при временном отключении индексов или при начальном заполнении безиндексной GTT, а потом массовом переливе insert from select зато нет проблем с типами данных, вплоть до SQL Injection ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:12 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
хм.. так и что лучше? 1000 запросов на Update из клиентского приложения или хранимая процедура и передача данных через массив? А еще посоветуйте что-нибудь годное почитать про это.. Статья\ресурс\книга. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:25 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
PATRI0Tтак и что лучше? 1000 запросов на Update из клиентского приложения или хранимая процедура и передача данных через массив? На таких мелких объёмах - сугубо всё равно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:45 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
Хорошие практически полезные книжки про ADO ? не знаю где их искать, но явно не тут. Возможно http://www.sql.ru/forum/visual-basic ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:53 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
PATRI0TНо может есть способ организовать это через хранимую процедуру? зачем? сформулируйте проблему, которая вас беспокоит сейчас, и желаемый результат решения. "использование SP" и "такой же, но с перламутровыми пуговицами", как вы понимаете, не может быть целью, если это не школьное задание. аналогично "неиспользование SP" не может быть проблемой значит и проблема и цель у вас какая-то другая, нам неизвестныe ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 12:56 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
Ну у меня двоякая ситуация. С одной стороны, у меня всё работало нормально через запросы из Excel и оно всё накрылось медным тазом после обновлении Win10 до 1803. Я по этому поводу создавал отдельную тему, помогли найти причину, и, как я понял, исправить ее без Микрософта не получится.. Поэтому нужно придумать другой способ общаться с базой. (Там была такая проблема, что нормально работал SELECT, INSERT, DELETE, но не работал UPDATE) С другой стороны, я очень хотел бы разобраться, как вообще ПРАВИЛЬНО делаются клиент-серверные приложения, освоиться с работой с БД и вообще.. База, которую я писал для автоматизации своего производства, это вообще, первая моя база.. Поэтому там все страшно и плохо. Там нет транзакций, нет хранимых процедур, она даже не нормализована толком.. Поэтому и хотел разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 15:45 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
я подозреваю, что для "правильного клиент-сервера" вообще Excel не подойдёт, хотя бы Access Кроме ADO у Майкрософта есть ещё OLE DB Например https://www.ibprovider.com/rus/documentation.html Но вообще, вопрос как писать К/С на Бейсике лучше задавать в форуме про Бейсик. А так - ну Грабера почитайте, он достаточно абстрактен (ен привязан к конкретным серверам-языкам-библиотекам) http://www.mysql.ru/docs/gruber/ ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2018, 17:33 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#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.
Функция упаковки массива в строку Код: 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.
Основная процедура сохранения в базу Код: 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.
В принципе, мне понравилось работать с ХП.. Но пока побаиваюсь 2х вещей: сложность отладки и требовательность к более внимательному написанию кода (той части, которая выполняется на стороне Базы) Потому как, если в хранимой процедуре что-то напутал - например, по глупости забыл в запросе UPDATE добавить критерий WHERE, то всё.. всем хана.. И самое главное, она все сделает молча. Вот ведь где ужас ) Когда весь код в одном месте, оно как-бы проще.. все перед глазами. А когда вот так, разделено на 2 части, то про особенности реализации давно написанной ХП легко забыть, что у тебя там и как.. И отладка сложна по отдельности.. сначала процедуру с тестовыми данными вылизываем через дебагер IBExpert-а, и потом, когда во всем уже уверены, пишем и отлаживаем код в VBA.. Короче тоже есть свои минусы. == В заключение, очень хотел бы попросить тех, у кого есть опыт и найдется время -- поглядеть на код и покритиковать... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:36 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
PATRI0T, хрень полнейшая. Зачем страдать онанизмом собирая и разбирая строку по разделителям, если можно сразу отправить нужные параметры на сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:43 |
|
Как передать в хранимую процедуру массив (Excel VBA + ADO)
|
|||
---|---|---|---|
#18+
Раньше у меня так и было - правда не через ХП было организовано - макрос делал последовательные запросы к базе. Но случилась проблема из за обновления Win10 и у меня перестал работать Update.. Поэтому пришлось делать всё через ХП А там логика такая - 1. проверить, есть ли заказ с таким ID, 2. удалить все даты из таблицы дат по этому заказу 3. вставить массив дат 4. обновить инфу о ключевых датах в другой таблице.. У меня опыта мало, поэтому я придумал сделать так.. Да и сейчас я это не представляю, как сделать, если разбить на отдельные запросы.. Может потому, что я не умею пользоваться ХП... Подскажите, как надо было? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 16:51 |
|
|
start [/forum/topic.php?fid=40&msg=39695815&tid=1560989]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 306ms |
total: | 440ms |
0 / 0 |