powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / TVP и Excel
13 сообщений из 13, страница 1 из 1
TVP и Excel
    #37818335
Никогда раньше не приходилось особо сталкиваться с макросами в Офисе, посему не знаю даже с какой стороны подойти
Есть книга Excel, нужно взять данные с одного листа(допустим, Лист2), передать их в хранимую процедуру MSSQL и результатами выполнения заполнить некую таблицу на листе1.
Хранимая процедура принимает параметром TVP(nvarchar, int, int)
Вопрос - как это сделать? Единственная мысль пока которая пришла - создать ADODB.Recordset нужной структуры, заполнить его, и передать как параметр для ADODB.Command, но как понимаю это не катит (во всяком случае, тип параметра adUserDefined не прокатывает)
Посоветуйте, в какую сторону смотреть..
...
Рейтинг: 0 / 0
TVP и Excel
    #37818344
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_не_люблю_vbaв какую сторону смотреть..В MSSQL есть возможность импортировать данные из файла Эксель, может туда посмотреть?
...
Рейтинг: 0 / 0
TVP и Excel
    #37818370
В MSSQL есть возможность импортировать данные из файла Эксель, может туда посмотреть?
Не, тут просто отчёт построить, в мсскл эти данные и не нужны как бы)
Проще тогда написать формочку какую нибудь, чтобы открывала книгу экселя, брала данные, сама запрашивала сервер и заполняла бы этот отчёт. Но хотелось бы сделать это прямо из самой книги, без внешних приблуд.
...
Рейтинг: 0 / 0
TVP и Excel
    #37818380
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, прошу прощения, я неправильно прочитал задачу.

guest_не_люблю_vbaсоздать ADODB.Recordset нужной структуры, заполнить его, и передать как параметр для ADODB.Commandнет, у ADODB.Command есть коллекция Parameters - ее и нужно заполнить параметрами
...
Рейтинг: 0 / 0
TVP и Excel
    #37818385
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно, если не сильно привередничать просто выполнить из коннекшна команду:
Код: vbnet
1.
Conn.Execute "exec MyProc @Param1='dfdfd', @Param2=5, @Param3=9"
...
Рейтинг: 0 / 0
TVP и Excel
    #37818424
Shocker.Pro,
это если бы процедура принимала несколько скалярных параметров, а она принимает один табличный, поэтому и была мысль заполнить Recordset и попробовать засунуть его как параметр, в общем - мне надо аналог адонетовского SqlDbType.Structured)
...
Рейтинг: 0 / 0
TVP и Excel
    #37818432
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через ADO вроде бы нельзя передать табличный параметр. Сериализация или последовательные запросы...
...
Рейтинг: 0 / 0
TVP и Excel
    #37818434
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще открыть рекордсет по записи и занести в него все на стороне клиента. Правда, по сути, это все равно превратится в последовательность запросов.
...
Рейтинг: 0 / 0
TVP и Excel
    #37818443
Жаль.. тогда похоже остаётся крайний случай - формировать XML, и сделать обёртку с помощью sp_xml_preparedocument, наверное, только так
...
Рейтинг: 0 / 0
TVP и Excel
    #37818512
guest_не_люблю_vbaЖаль.. тогда похоже остаётся крайний случай - формировать XML, и сделать обёртку с помощью sp_xml_preparedocument, наверное, только такОстается ещё случай заполнить "из excel" (временную)таблицу на сревере и скормить её процедуре в качестве параметра.
...
Рейтинг: 0 / 0
TVP и Excel
    #37822331
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам недавно решал подобную проблему для своей новой системы(Excel - SQL Server). В результате продолжительных поисков и исследований, пришёл к выводу, что передачу tvp из Excel в хранимку лучше всего реализовывать через dll. Последовательность
получилась такая:

Посредством ADO подключение к книге Excel(в моём случае - открытой)
Заполнение объекта Table данными
Посредством ADO.NET подключение к SQL Server
Передача объекта Table в хранимую процедуру как параметр

Быстродействие такого решения оказалось сопоставимо с XML на уровне погрешности, а внедрение в проект - на несколько порядков проще.
...
Рейтинг: 0 / 0
TVP и Excel
    #37822423
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElenHim,

Но необходимо наличие нетфреймворка на клиенте. Если эта программа для себя, то не страшно, но усложняется дистрибуция.
...
Рейтинг: 0 / 0
TVP и Excel
    #37822476
ElenHim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Это так. Но не стоит забывать, что framework бесплатен, поэтому проблема дистрибуции решается малой кровью.
В моём случае, у половины пользователей фреймворк уже был установлен, остальным - дали указание IT отделу установить.
В конечном счёте всё зависит от критичности использования tvp.

На последок, пара ссылок
Arrays and Lists in SQL Server 2008 Using Table-Valued Parameters
Arrays and Lists in SQL Server 2005 and Beyond When TVPs Do Not Cut it

PS Вообще, имхо, стоит заморочиться с фреймворком, т.к. MS активно продвигают .NET и задвигают VB.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / TVP и Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]