|
Параметры в запросе MS SQL | ☑ | ||
---|---|---|---|---|
0
Ayvengo
31.07.12
✎
17:39
|
ADOConnection = ПодключитьсяКMSSQL(Отказ);
Если Отказ Тогда Возврат; КонецЕсли; Выборка = Новый COMОбъект("ADODB.Recordset"); Выборка.ActiveConnection = ADOConnection; ТекстЗапроса = "EXEC tc_FrameRefuelling_FromFileGasNet @fileData; Выборка.Open(ТекстЗапроса, ADOConnection); @fileData varbinary(max) как мне можно передать двоичные данные на сервер ms sql? |
|||
1
Rie
31.07.12
✎
17:42
|
Объект Parameter и CreateParameter
|
|||
2
Rie
31.07.12
✎
17:44
|
+(1) Только тогда не Recordset, а Command надо
|
|||
3
Ayvengo
31.07.12
✎
17:52
|
(1) я на сколько понял CreateParameter(Name, Type, Direction, Size, Value)
Name - строка Type - как задать в 1Ске, если Value = Двоичные данные? Пишет, что типы не совпадают. |
|||
4
Ayvengo
31.07.12
✎
17:53
|
попробовал "adVarBinary" - но видимо не то :(
|
|||
5
izekia
31.07.12
✎
17:54
|
(4) все эти константы имеют числовое представление, читай документацию
|
|||
6
izekia
31.07.12
✎
17:55
|
а, сорри, (5) не в тему
|
|||
7
Ayvengo
31.07.12
✎
17:56
|
(5) почему, по идее 204 :)
|
|||
8
Ayvengo
31.07.12
✎
17:58
|
Но все-равно не пашет.. (:
|
|||
9
izekia
31.07.12
✎
18:01
|
покажи полностью код?
|
|||
10
Rie
31.07.12
✎
18:02
|
(4) adVarBinary - оно то... Вот только насчёт возможности туда ДвоичныеДанные запихнуть - сомнительно.
Может, через COMSafeArray попробовать? |
|||
11
Ayvengo
31.07.12
✎
18:04
|
(9) остальное - это подключение и опен, смысла нет показывать.
Выборка = Новый COMОбъект("ADODB.Command"); Выборка.ActiveConnection = ADOConnection; Выборка.CreateParameter("fileData",204,,,);// ошибка не вылетает :) если в последнее добавить двоичные данные, досвидос :( ТекстЗапроса = "EXEC tc_FrameRefuelling_FromFileGasNet"; |
|||
12
izekia
31.07.12
✎
18:05
|
(11) размер кажется надо проставить
и посмотри (10) |
|||
13
Ayvengo
31.07.12
✎
18:08
|
Цель задачи у меня извращенная :) в sql просто парсер сделан, который прочитает мне файл и выдаст мне результат. Не хочу в 1Ске парсить файл просто :)))
COMSafeArray никогда не пользовал, не знаю как с ним быть :( (12) попробую размер проставить. |
|||
14
Ayvengo
31.07.12
✎
18:12
|
Эх ... Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.
|
|||
15
sash-ml
31.07.12
✎
18:13
|
можно попрбовать Выборка.CreateParameter("fileData",204,,,Base64Строка(МоиДвоичныеДАнные))
|
|||
16
Rie
31.07.12
✎
18:14
|
(13) Так а почему бы файл непосредственно из SQL не прочитать? А имя файла передать параметром?
|
|||
17
Ayvengo
31.07.12
✎
18:28
|
(16) проблемно. да и процедура уже используется в других местах. можно, конечно и условий понапихать, но чет не айс.
(15) хитрец какой ... я так могу и в тексте запроса параметр указать, но это не то ... (12) размер не помогает... |
|||
18
Ayvengo
31.07.12
✎
18:36
|
на форуме тут нашел:
ТекстЗапроса = "tc_FrameRefuelling_FromFileGasNet @filData"; Выборка.CommandText = ТекстЗапроса; Выборка.Parameters.Refresh(); Выборка.Parameters.Item(0).Value = 1; Но почему-то параметров нету :( Вот как процедура выглядит в SQL ALTER PROCEDURE [dbo].[tc_FrameRefuelling_FromFileGasNet] @filData varbinary(max) AS BEGIN |
|||
19
Ayvengo
31.07.12
✎
18:59
|
Выборка.ActiveConnection = ADOConnection;
Выборка.CommandType = 4; Выборка.CommandText = "tc_FrameRefuelling_FromFileGasNet;1"; Выборка.Parameters.Refresh(); Выборка.Parameters(1).Value = ДД; Похоже на правду, но опять несоответствие :( |
|||
20
Serginio1
31.07.12
✎
19:03
|
А попробуй сэйваррай
|
|||
21
Ayvengo
31.07.12
✎
20:02
|
Выборка.ActiveConnection = ADOConnection;
Выборка.CommandType = 4; Выборка.CommandText = "tc_FrameRefuelling_FromFileGasNet;1"; Выборка.Parameters.Refresh(); Выборка.Parameters(1).Value = Base64Строка(ДД); работает, но запрос неверно отрабатывает.. завтра буду разбираться |
|||
22
smaharbA
31.07.12
✎
20:14
|
куйня
|
|||
23
Ayvengo
01.08.12
✎
10:40
|
(22) познавательно ;)
|
|||
24
Serginio1
01.08.12
✎
18:02
|
(21) Потому, что Base64Строка это строка а не двичные данные Safearray
Попробуй через ADODB.Stream и его метод read получить и передать даннные например ADODB запись в таблицу SQL Server - не пашет |
|||
25
Serginio1
01.08.12
✎
18:06
|
||||
26
Ахиллес
01.08.12
✎
18:28
|
Если на скуль сервер передавать басе64, а потом уже на сервере декодировать обратно? http://www.motobit.com/help/scptutl/sa307.htm
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |