Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема OLEDBCommand::Подготовить() (число прочтений - 1899 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
OLEDBCommand::Подготовить()
26. Ноября 2007 :: 12:51
Печать  
Нехочет работать.
Хотя у ODBCRecordSetработает.
Может мене вразумите как можно его использовать?

Код
Выбрать все
	Текст="
	|insert into "+Имя+" (Row_Id,datein,_user,idobj,timein,timeopen,_close,status) values (?,?,?,?,?,?,?,?)
	|";
	Запрос.Подготовить(Текст);
	Если ЭтоSQL=1 Тогда
		Запрос.ПостроитьПараметры();
	КонецЕсли;
 



Это подготовка.

а вот добавление
Код
Выбрать все
Процедура ДобавитьЗапись(Запрос,Сп)
	Для н=1 По Сп.РазмерСписка() Цикл
		Если ЭтоSQL=1 Тогда
			Запрос.УстПараметр(н,Сп.ПолучитьЗначение(н));
		Иначе
			Запрос.УстановитьПараметр(н,Сп.ПолучитьЗначение(н));
		КонецЕсли;
	КонецЦикла;
	Попытка

		Запрос.ВыполнитьИнструкцию();
	Исключение
		Сообщить(Запрос.ПолучитьОписаниеОшибки());
	КонецПопытки;

КонецПроцедуры	// ДобавитьЗапись
 

  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: OLEDBCommand::Подготовить()
Ответ #1 - 26. Ноября 2007 :: 14:09
Печать  
Это?

spock писал(а) 07. Марта 2007 :: 08:46:
Q: При выполнении параметризированного запроса при помощи OLEDBData/OLEDBCommand через vfpoledb provider v9 возникает ошибка:
Цитата:
Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.

или
Цитата:
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

или
Цитата:
[One or more accessor flags were invalid]: Недопустимый клиент доступа

Что делать?

A: Почитать об этой ошибке в базе знаний MS: http://support.microsoft.com/kb/269495
Положение исправляется добавлением в реестр ключа:
В ветку [HKEY_CLASSES_ROOT\CLSID\{50BAEED9-ED25-11D2-B97B-000000000000}] добавить ключ "OLEDB_SERVICES"=dword:00000000 . Если этот ключ уже есть, то нужно значение установить в 0 (ноль).

  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: OLEDBCommand::Подготовить()
Ответ #2 - 26. Ноября 2007 :: 14:31
Печать  
Нет.
Выдает сообщение Список параметров пуст.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: OLEDBCommand::Подготовить()
Ответ #3 - 26. Ноября 2007 :: 15:40
Печать  
Код
Выбрать все
Текст="insert into "+Имя+" (Row_Id,datein,_user,idobj,timein,timeopen,_close,status) values (?,?,?,?,?,?,?,?)";

cmd.ДобПараметр(1, X, X, X, ""); // param ? №1 (определяемся какие значения нужно подставить вместо X)
cmd.ДобПараметр(1, X, X, X, ""); // param ? №2
cmd.ДобПараметр(1, X, X, X, ""); // param ? №3
cmd.ДобПараметр(1, X, X, X, ""); // param ? №4
cmd.ДобПараметр(1, X, X, X, ""); // param ? №5
cmd.ДобПараметр(1, X, X, X, ""); // param ? №6
cmd.ДобПараметр(1, X, X, X, ""); // param ? №7
cmd.ДобПараметр(1, X, X, X, ""); // param ? №8

Запрос.Подготовить(Текст); // именно в такой последовательности: добавляем, потом готовим

Для Н = 1 По Сп.РазмерСписка() Цикл
	Запрос.УстановитьПараметр(Н, Сп.ПолучитьЗначение(Н));
КонецЦикла;

Запрос.Выполнить(); // зачем ВыполнитьИнструкцию()?, ведь тратится время на создание ТЗ
 

« Последняя редакция: 26. Ноября 2007 :: 16:50 - spock »  
Наверх
ICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: OLEDBCommand::Подготовить()
Ответ #4 - 26. Ноября 2007 :: 16:12
Печать  
Спасибо.
Завтра обязательно проверю.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать