![]() |
|
v7: "Пакетный" прямой запрос - как правильно? | ☑ | ||
---|---|---|---|---|
0
mikecool
25.09.12
✎
17:16
|
1с++
Взлетит такое: " CREATE TABLE TempTable Column тут далее по тексту GO INSERT INTO TempTable ... GO" или может есть способ проще, ибо надо загнать в виде параметра запроса список со строками длиной 17 символов? |
|||
1
Mikeware
25.09.12
✎
17:17
|
ВыполнитьИзТЗ() ?
|
|||
2
Ёпрст
гуру
25.09.12
✎
17:18
|
взлетит
|
|||
3
mikecool
25.09.12
✎
17:19
|
(1) что то там строки более 15 символов вроде не обрабатываются
|
|||
4
mikecool
25.09.12
✎
17:19
|
(2) я к чему спросил, помню рисовал пакет для обрезки базы и он как то на первом GO завис ((
|
|||
5
Mikeware
25.09.12
✎
17:20
|
(3) хм. Это почему? у меня проблема была только с записью времени...
|
|||
6
mikecool
25.09.12
✎
17:24
|
(5) попробую, но читал в описании метода супер длинная строка - 15 символов
|
|||
7
Mikeware
25.09.12
✎
17:34
|
(6) это если ты используешь растипизацию объектов 1С. Если преобразование не делаешь - параметр преобразования не ставишь, и пишется в том же виде
|
|||
8
mikecool
25.09.12
✎
17:35
|
(7) ок, спасибо, но табличку все равно создать придется )
|
|||
9
КонецЦикла
25.09.12
✎
19:17
|
А кто мешает разделить батчи на 2 инструкции или писать так?
ТекстЗапроса = " |if exists (select * from tempdb..sysobjects where id = object_id('tempdb..#TempRA')) |drop table #TempRA |create table #TempRA (dt datetime, tov char(9), apt char(9), delta numeric(14,3), prod numeric(14,3) primary key clustered (dt, tov, apt)) | |INSERT INTO #TempRA |SELECT CAST(LEFT(j.DATE_TIME_IDDOC,8) AS DATETIME) Dt |, r.SP18757 Tov |, r.SP18756 Apt ... |
|||
10
mikecool
26.09.12
✎
09:09
|
(9) а такие запросы не будут выполняться одновременно?
|
|||
11
mikecool
26.09.12
✎
11:28
|
не робит чего то (
пишу ТЗ.НоваяКолонка("Поле", "Строка", 17) ... ОбъектРекордСет.ВыполнитьИнструкцию("CREATE TABLE tempdb..#ListTable (Pole Char(17))") ОбъектРекордСет.Prepare("Insert into tempdb..#ListTable (Pole) values(?)") ОбъектРекордСет.ВыполнитьSQL_ИЗТз(ТЗ) получаю Произошла ошибка при формировании автоматических параметров. Необходимо выполнить подготовку запроса или проверить синтаксис! Invalid descriptor index |
|||
12
mikecool
26.09.12
✎
11:44
|
типа я как то не так подсовываю параметры, но как правильно - не понимаю (
|
|||
13
mikecool
26.09.12
✎
11:59
|
апну чтоли
а то щас перепишу формирование текста запроса на сборный ) |
|||
14
Mikeware
26.09.12
✎
12:09
|
(12)
попробуй все-таки не указывать базу (временные таблицы и так в темпдб создадутся) ну, и попробуй добавить параметры в запрос (метод AddParam, или автоматически, BuildParam) |
|||
15
mikecool
26.09.12
✎
12:22
|
(14) да как бы описание метода ВыполнитьSQL_ИЗТз не требует этого...
забил я на него, переписал на цикличный инсерт |
|||
16
val
26.09.12
✎
12:44
|
(15) Кусок из рабочего кода:
ТЗ2=СоздатьОбъект("ТаблицаЗначений"); ТЗ.Выгрузить(ТЗ2,,,"Штрихкод,Размер"); ТЗ2.УстановитьПараметрыКолонки("Штрихкод","Строка",14,,,,,); ТЗ2.УстановитьПараметрыКолонки("Размер","Строка",12,,,,,); лRecordSet = СоздатьОбъект("ODBCRecordSet"); лRecordSet.Выполнить("CREATE TABLE #КодыПерекоды (val char(14),val2 char(12))"); лRecordSet.ДобПараметр(1,14,14,0); лRecordSet.ДобПараметр(1,14,12,0); Если лRecordSet.Prepare("INSERT INTO #КодыПерекоды (val,val2) VALUES(?,?)") = 0 Тогда Сообщить("Ошибка"+лRecordSet.GetLastError(), "!"); Возврат 0; КонецЕсли; лRecordSet.ВыполнитьSQL_ИзТЗ(ТЗ2,0); |
|||
17
mikecool
26.09.12
✎
12:48
|
(16) а, блин, надо было параметры добавлять
щас попробую, спасибо |
|||
18
mikecool
26.09.12
✎
12:56
|
имею
ДобПараметр(1, 14, 17, 0) ВыполнитьSQL_ИзТЗ ... получаю ошибку String data, right truncation чего еще ему надо? ) |
|||
19
val
26.09.12
✎
13:01
|
(18) Обрати внимание в (16) на:
1) ТЗ2.УстановитьПараметрыКолонки("Штрихкод","Строка",14,,,,,); 2) CREATE TABLE #КодыПерекоды (val char(14), Размеры и тип должны быть одинаковы и задаеы явно. |
|||
20
mikecool
26.09.12
✎
13:05
|
(19) ну как бы
ТЗ.НоваяКолонка("Поле", "Строка", 17) ... ОбъектРекордСет.ВыполнитьИнструкцию("CREATE TABLE tempdb..#ListTable (Pole Char(17))") ОбъектРекордСет.Prepare("Insert into tempdb..#ListTable (Pole) values(?)") ОбъектРекордСет.ВыполнитьSQL_ИЗТз(ТЗ) |
|||
21
mikecool
26.09.12
✎
13:06
|
(19) щас попробую еще добавить УстановитьПараметрыКолонки
|
|||
22
val
26.09.12
✎
13:15
|
(20) В ТЗ колонка Поле - это единственная колонка?
|
|||
23
mikecool
26.09.12
✎
13:47
|
(22) да, одна, но я в нее выгружаю из другой тз, но там тож колонка строка(17)
|
|||
24
mikecool
26.09.12
✎
13:56
|
помогло после выгрузить установитьпараметрыколонки
спасибо за помощь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |