![]() |
![]() |
![]() |
|
Выгрузка в скл | ☑ | ||
---|---|---|---|---|
0
Мисти
30.07.14
✎
10:09
|
Уже мильон табличек в скл из 1С заполнила!
И вдруг - затык, вроде, всё, как обычно, а она ругается - {Форма.Форма1.Форма(1104)}: Ошибка при вызове метода контекста (Parameters) Cmd.Parameters(0).Value = СтрОбъектСКЛ.UI1C; по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Сведения о параметрах не могут быть выведены из инструкций SQL. Задайте сведения о параметрах перед командой подготовки. |
|||
1
Мисти
30.07.14
✎
10:12
|
Для Каждого СтрОбъектыАр из ОбъектыАр Цикл
ЗаписатьОбъектыПолн(СтрОбъектСКЛ,СтрОбъектыАр); ОбработкаПрерыванияПользователя(); ТекстЗапроса = "SELECT top(1) * FROM gtw_Object WHERE [UI1C] = ?"; Cmd.CommandText = ТекстЗапроса; Cmd.Parameters(0).Value = СтрОбъектСКЛ.UI1C; Выборка = Cmd.Execute(); Если Выборка.EOF() Тогда //- нет такой строки, надо добавить ТекстЗапроса = "INSERT INTO gtw_Object VALUES |(NULL, |?, |?, |?, |?, |?, |?, |?, |NULL, |NULL, |NULL, |?, |?, |?, |NULL, |?, |?, |?, |?, |?, |NULL, |?, |?, |?, |?, |?, |?, |?)"; Cmd.CommandText = ТекстЗапроса; //Cmd.Parameters(0).Value = СтрОбъектСКЛ.ID; Cmd.Parameters(0).Value = СтрОбъектСКЛ.UI1C; Вот на последней строчке ругается. |
|||
2
Wobland
30.07.14
✎
10:15
|
что-то не похоже на правду
|
|||
3
Wobland
30.07.14
✎
10:16
|
текст запроса крив: селект топ 1 ...
|
|||
4
Cube
30.07.14
✎
10:17
|
(1) У тебя параметров в запросе-то нет... Массив параметров пуст, а ты обращаешься к первому элементу пустого массива...
|
|||
5
Wobland
30.07.14
✎
10:17
|
(4) окстись. WHERE [UI1C] = ?
|
|||
6
Cube
30.07.14
✎
10:18
|
(1) Какой ужас... Писать код красиво не пробовала? :)
|
|||
7
Мисти
30.07.14
✎
10:18
|
Так она ругается на 2 запрос!
ТекстЗапроса = "INSERT INTO gtw_Object VALUES |(NULL, ...,... (6) Нет, а как красиво? |
|||
8
Cube
30.07.14
✎
10:19
|
(5) Это первый запрос... Потом есть второй...
|
|||
9
Мисти
30.07.14
✎
10:20
|
(8) А там и не должно быть никаких условий - добавляем строку и заполняем столбцы.
|
|||
10
Wobland
30.07.14
✎
10:20
|
(8) с кучей параметров...
|
|||
11
Мисти
30.07.14
✎
10:21
|
(3) Это мне поправил хозяин базы
"SELECT top(1) * FROM gtw_Object WHERE [UI1C] = ?" - говорит, надо так. |
|||
12
Cube
30.07.14
✎
10:21
|
(7) "Нет, а как красиво?"
На Великом и Могучем с нормальными названиями переменных, для начала... |
|||
13
Wobland
30.07.14
✎
10:23
|
(12) ПОВСТАВИТЬ В gtw_ObjectЪ ЭТИ ЗНАЧЕНИЯ
(НУЛЛЪ, ?...) |
|||
14
Cube
30.07.14
✎
10:23
|
Ай, блин! Это вы же с SQL работаете))) Я что-то пропустил :))
Не обращайте на меня внимания) |
|||
15
Мисти
30.07.14
✎
10:23
|
(12) А какие там названия не такие?
|
|||
16
Cube
30.07.14
✎
10:25
|
(15) Всё нормально, не обращай внимания))
|
|||
17
Wobland
30.07.14
✎
10:25
|
короче, я за (2) ;)
|
|||
18
Мисти
30.07.14
✎
10:32
|
Что именно не похоже на правду?
ТекстЗапроса = "INSERT INTO gtw_Object VALUES ? Вообще, возможно, после массовых исправлений этот кусок ни разу и не работал - таблицы уже все были (старые) заполнены и работает второй кусок, где замена. |
|||
19
Wobland
30.07.14
✎
10:33
|
строка 1104 - это та крайняя из (1)?
|
|||
20
Andrewww123
30.07.14
✎
10:35
|
В (4) же написано всё..
|
|||
21
Мисти
30.07.14
✎
10:37
|
(19) Да!
(20) А какие параметры, если это новая строка? |
|||
22
Wobland
30.07.14
✎
10:37
|
(20) текст запроса е подскажешь?
|
|||
23
Andrewww123
30.07.14
✎
10:38
|
(21) В том-то и дело :)
Параметров нет в запросе, значит строка "Cmd.Parameters(0).Value = СтрОбъектСКЛ.UI1C;" лишняя |
|||
24
Andrewww123
30.07.14
✎
10:39
|
(22) Ну там вроде написано всё, выше
|
|||
25
Мисти
30.07.14
✎
10:40
|
А как тогда добавить строку?
|
|||
26
Andrewww123
30.07.14
✎
10:43
|
(25) Закомментировать последнюю строку, которая "Cmd.Parameters(0).Value = СтрОбъектСКЛ.UI1C;"
|
|||
27
Wobland
30.07.14
✎
10:46
|
кстати, как насчёт parameters.refresh?
|
|||
28
rsv
30.07.14
✎
10:51
|
(0) Если 1С на SQL - не проще ли встроенной службой экспорта данных ?
|
|||
29
Мисти
30.07.14
✎
11:05
|
Не проще, потому что я не знаю, что это такое, а таким способом уже всё понаписано.
(26) А заполнить-то как строку? (27) А раньше-то почему работало? |
|||
30
Andrewww123
30.07.14
✎
11:11
|
(29) Что значит заполнить строку?
|
|||
31
Мисти
30.07.14
✎
11:18
|
Проставить значения столбцов.
|
|||
32
Andrewww123
30.07.14
✎
11:23
|
(31) Уже не знаю что отвечать :) Наверное нужно знаки вопроса заменить какими-то значениями и выполнить запрос
|
|||
33
Мисти
30.07.14
✎
11:29
|
Может, у меня второй запрос перестал работать из-за того, что изменился первый?
|
|||
34
Andrewww123
30.07.14
✎
11:30
|
Может, всё может быть :)
|
|||
35
Мисти
30.07.14
✎
11:38
|
Само по себе вот это работает!
Cmd = СоединитьсяСSQL(); ТекстЗапроса = "INSERT INTO gtw_Route VALUES |(NULL, |?, |?)"; Cmd.CommandText = ТекстЗапроса; Cmd.Parameters(0).Value = "Тренировка"; Cmd.Parameters(1).Value = ТекущаяДата(); Cmd.Execute(); Сообщить("Готово!"); |
|||
36
Мисти
30.07.14
✎
11:39
|
(23) Все знаки вопроса - и есть параметры, а не перечислены поименно, потому что идут по порядку.
|
|||
37
Мисти
30.07.14
✎
11:44
|
ТекстЗапроса = "SELECT top(1) * FROM gtw_Object WHERE [UI1C] = ?"; - надо править первый запрос.
Как?? Он у меня работал раньше (не помню, как именно), а потом мне хозяин базы его поправил, сам-то запрос работает и сейчас, но, видимо, это как-то повлияло на второй запрос. |
|||
38
katc
30.07.14
✎
11:47
|
(0)
Cmd.Parameters(0).Value = "{" +СтрОбъектСКЛ.UI1C + "}"; пиши так, если тип в скуле уникидентификатор. |
|||
39
Wobland
30.07.14
✎
11:48
|
(38) от скобок сразу параметр найдётся?
|
|||
40
Wobland
30.07.14
✎
11:49
|
(39) причём двойных. там в строке уже со скобками
|
|||
41
Мисти
30.07.14
✎
11:49
|
(38) Это мы уже проходили! Там он уже построен как надо, ругань - на вообще параметр.
|
|||
42
Мисти
30.07.14
✎
11:49
|
(40) Скажи, пожалуйста, как там первый был запрос написан раньше, ты же знаешь? :)
|
|||
43
Wobland
30.07.14
✎
11:50
|
(42) не скажу - не помню. я ошибков не вижу
|
|||
44
Мисти
30.07.14
✎
11:55
|
По-моему, было
SELECT top 1 вместо SELECT top(1) * |
|||
45
Wobland
30.07.14
✎
11:57
|
(44) сходи в консоль и сделай там select top (1) 'with brackets'. так узнаешь о допустимости скобок. я впервые вижу такое
|
|||
46
Wobland
30.07.14
✎
11:57
|
1ска, кстати, не даёт
{(1, 16)}: Ожидается константа выбрать первые <<?>>(1) "со скобками" |
|||
47
Мисти
30.07.14
✎
12:00
|
"SELECT top 1 FROM gtw_Object WHERE [UI1C] = ?" - вот так пишу?
|
|||
48
Wobland
30.07.14
✎
12:01
|
(47) 1. select top (1) 'with brackets'
2. select top 1 'with brackets' |
|||
49
Wobland
30.07.14
✎
12:01
|
опять текстовая отладка начинается ;)
|
|||
50
Мисти
30.07.14
✎
12:03
|
{Форма.Форма1.Форма(1071)}: Ошибка при вызове метода контекста (Execute)
Выборка = Cmd.Execute(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Неправильный синтаксис около ключевого слова "FROM". |
|||
51
Мисти
30.07.14
✎
12:04
|
Что такое - 'with brackets' ??
|
|||
52
Wobland
30.07.14
✎
12:05
|
(50) в консоли
(51) левый строковый литерал. пиши 40, если смущает |
|||
53
Мисти
30.07.14
✎
12:10
|
SELECT TOP 1 * - работает
|
|||
54
Wobland
30.07.14
✎
12:11
|
(53) не верю. а со скобками?
|
|||
55
Мисти
30.07.14
✎
12:14
|
А второй запрос всё равно не работает!
{Форма.Форма1.Форма(1104)}: Ошибка при вызове метода контекста (Parameters) Cmd.Parameters(0).Value = СтрОбъектСКЛ.UI1C; по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Сведения о параметрах не могут быть выведены из инструкций SQL. Задайте сведения о параметрах перед командой подготовки. И со скобками первый работал. |
|||
56
Мисти
30.07.14
✎
12:26
|
Может, ну ее, ошибку?
Как-нибудь по-другому переписать? |
|||
57
Wobland
30.07.14
✎
12:27
|
(56) у меня вот прямо сейчас есть два варианта для попробовать. но кому это интересно?
|
|||
58
Мисти
30.07.14
✎
12:28
|
Мне, конечно, кому же еще?
|
|||
59
Wobland
30.07.14
✎
12:29
|
(58) -> (27), (32)
|
|||
60
Мисти
30.07.14
✎
12:30
|
Отлично, как это написать-то?
parameters.refresh или знаки вопроса заменить какими-то значениями и выполнить запрос |
|||
61
Wobland
30.07.14
✎
12:34
|
Cmd.Parameters.Refresh(); после установки текста
|
|||
62
Мисти
30.07.14
✎
13:18
|
Форма.Форма1.Форма(1110)}: Ошибка при вызове метода контекста (Refresh)
Cmd.Parameters.Refresh(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Сведения о параметрах не могут быть выведены из инструкций SQL. Задайте сведения о параметрах перед командой подготовки. |
|||
63
Мисти
30.07.14
✎
13:20
|
Если Выборка.EOF() Тогда //- нет такой строки, надо добавить
ТекстЗапроса = "INSERT INTO gtw_Object VALUES |(NULL, |?, |?, |?, |?, |?, |?, |?, |NULL, |NULL, |NULL, |?, |?, |?, |NULL, |?, |?, |?, |?, |?, |NULL, |?, |?, |?, |?, |?, |?, |?)"; Cmd.CommandText = ТекстЗапроса; Cmd.Parameters.Refresh(); |
|||
64
Wobland
30.07.14
✎
13:21
|
а дай пощупать
|
|||
65
Мисти
30.07.14
✎
13:29
|
С удовольствием!
|
|||
67
Fragster
гуру
30.07.14
✎
13:37
|
кто-нибудь уже написал использовать для каждого повторяющегося запроса отдельный объект Adodb.command?
|
|||
68
Wobland
30.07.14
✎
13:46
|
подумаешь, одно поле в запросе лишнее. вот текст и не узнавался
|
|||
69
Мисти
30.07.14
✎
13:46
|
Ларчик просто открывался!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |