Запись в SQL, ошибка - выход за границы массива #743195


#0 by palladyi
Помогите разобраться: пытаюсь исполнить такой код:      при выполнении ругается: Ошибка при вызове метода контекста (Execute)     Команда.Execute(СтрокаПользователь, по причине: Выход за границы массива ЧЯДНТ??? Не могу понять, что с ним, это мой первый опыт записи напрямую в sql, так что не бейте сильно ногами, желательно говорить медленно и по два раза...
#1 by Ёпрст
в инсерте 3 параметра - передаешь 4
#2 by palladyi
А строка пользователь - это параметр? Это же сам инсерт и есть вроде...
#3 by Fragster
вторым параметром должет быть ComSafeArray с параметрами для запроса, ЕМНИП
#4 by Ёпрст
+1 тьфу млин, не в инсерте , а в Execute, естесственно
#5 by palladyi
эмм... а можно пример? А то не понял что-то...
#6 by palladyi
попробовал так:     СтрокаЭлАд); теперь Типы не совпадают
#7 by Ёпрст
тебе, чтоб не забивать голову параметром, достаточно писать так: ТекстЗапроса = "INSERT INTO users (username,userphone,email)  VALUES ('"+СтрокаИмя   +"','"+СтрокаТелефон+"','"+СтрокаВася+"');"; и вызов Команда.Execute(ТекстЗапроса);
#8 by Господин ПЖ
буквари читать не пробовал? в msdn все ясно написано
#9 by palladyi
читаю в данный момент, благодаря этому родил то, что есть...
#10 by Господин ПЖ
и эта хрень:     СтрокаИмя, к реальной жизни отношения не имеет Команда.Execute принимает в сигнатуре 3 переменных, вторая их них - массив с параметрами
#11 by Господин ПЖ
+1
#12 by palladyi
О, спасибо!
#13 by palladyi
Вылетает ошибка: Не был задан текст команды для объекта команды.
#14 by Ёпрст
Тьфу мл..копипасте погубит :)
#15 by Fragster
#16 by palladyi
=)
#17 by Ёпрст
#18 by Fragster
#19 by palladyi
Массив = Новый COMSafeArray(<<?>>VT_VARIANT, 3); переменная не определена. В кавычках нужно?
#20 by Fragster
ну посмотри в СП, а?
#21 by palladyi
Посмотрел, спс. Но все равно вылетает ошибка "Не был задан текст команды для объекта команды."
#22 by palladyi
Всем спасибо! В итоге получилось вот так:
#23 by Ёпрст
вот только Строка( выкини везде из кода, аж в глазах рябит от лишнего кода
#24 by Fragster
я делал так: ....     Команда = СоздатьКомандуАДО(Соединение,         "INSERT INTO FSInventBarcode1C
#25 by Fragster
или так:
#26 by palladyi
ОК)
#27 by sapphire
а засiрать процедурный кеш кошерно, да?
#28 by palladyi
хм... буду курить, спасибо)
#29 by palladyi
в смысле?
#30 by sapphire
когда-нибудь вкурите :)
#31 by palladyi
Еще вопрос: как получить ID только что внесенной записи? SELECT LAST_INSERT_ID возвращает COMОбъект, а нужны цифры..
#32 by Fragster
там, где-то внутри твоего ком объекта есть искомое значение
#33 by sapphire
+1
#34 by palladyi
а как оно звучит неизвестно? там просто очень много всего...
#35 by Fragster
предлагаю тебе уйти на MSDN, где почитать про ADODB.Command, метод Execute, какой объект он возвращает и какие у него есть методы и свойства. потом покурить примеры, хотть они и на c#, но всё равно всё понятно должно быть...
#36 by palladyi
Ок, попробую, спасибо)
#37 by sapphire
+ Мускул зло, а скуль рулит :)
#38 by sapphire
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С