Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Иногда не выпоняется UPDATE! (число прочтений - 3135 )
Bingo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 03. Октября 2007
Иногда не выпоняется UPDATE!
28. Ноября 2007 :: 10:43
Печать  
Иногда срабатывает, иногда нет для одного и того же элемента справчника.

Справочник "СтрокиКаталога" подчиненнный.
База ДБФ.

Код
Выбрать все
База = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Mode=ReadWrite;Data Source=" + КаталогИБ() + ";Collating Sequence=MACHINE";
Рез = База.Соединение(Соединение);
глАК_ODBCRecordset = База.СоздатьКоманду();


ТекстЗапроса = "UPDATE $Справочник.СтрокиКаталога
				|SET $Справочник.СтрокиКаталога.Товар = :Товар
				|WHERE ID = :Ссылка";

глАК_ODBCRecordset.УстановитьТекстовыйПараметр("Ссылка",	СпрКататалогов.ТекущийЭлемент());
глАК_ODBCRecordset.УстановитьТекстовыйПараметр("Товар",	ВремНоменклатура.ТекущийЭлемент());
  
Если глАК_ODBCRecordset.Выполнить(ТекстЗапроса) = 0 Тогда
	Сообщить("Описание ошибки:2 "+ОписаниеОшибки());// + глАК_ODBCRecordset.ПолучитьОписаниеОшибки());
КонецЕсли;  


  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Иногда не выпоняется UPDATE!
Ответ #1 - 28. Ноября 2007 :: 10:53
Печать  
Bingo писал(а) 28. Ноября 2007 :: 10:43:
Код
Выбрать все
Если глАК_ODBCRecordset.Выполнить(ТекстЗапроса) = 0 Тогда
	Сообщить("Описание ошибки:2 "+ОписаниеОшибки());// + глАК_ODBCRecordset.ПолучитьОписаниеОшибки());
КонецЕсли;  



Это работает так как ожидается?
  
Наверх
ICQ  
IP записан
 
Bingo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 03. Октября 2007
Re: Иногда не выпоняется UPDATE!
Ответ #2 - 28. Ноября 2007 :: 10:58
Печать  
Цитата:
Это работает так как ожидается?


Не понял вопроса?
"ID" - существует на момент испонения.
"Товар" - то же.

Но "Выполнить" иногда возвращает 0 иногда 1 для одного и тогоже элемента справочника "СтрокиКаталога".
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Иногда не выпоняется UPDATE!
Ответ #3 - 28. Ноября 2007 :: 11:07
Печать  
1. OLEDBCommand::Выполнить() возвращает кол-во обработанных строк. При том, что 0 - это не ошибка.
2. Если при выполнении OLEDBCommand::Выполнить() возникает ошибка, то выбрасывается исключение. У тебя выбрасывается исключение?
3. ОписаниеОшибки() - работает только для блока Попытка-Исключение-КонецПопытки. При том, что ошибку можно будет получить в Исключение-КонецПопытки.
  
Наверх
ICQ  
IP записан
 
Bingo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 03. Октября 2007
Re: Иногда не выпоняется UPDATE!
Ответ #4 - 28. Ноября 2007 :: 12:10
Печать  
Понял. Переформулирую.
Вместо 3х строк условия следующая строка "глАК_ODBCRecordset.Выполнить(ТекстЗапроса);"

После отработки запроса поле "Товар" обновляется, но не всегда.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Иногда не выпоняется UPDATE!
Ответ #5 - 28. Ноября 2007 :: 13:55
Печать  
Пальцем в небо: провайдер откуда взят (microsoft, UzhastOfBuch design)?
« Последняя редакция: 29. Ноября 2007 :: 08:59 - spock »  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Иногда не выпоняется UPDATE!
Ответ #6 - 28. Ноября 2007 :: 14:33
Печать  
Код
Выбрать все
емент()); 


может у тебя в некоторых случаях
ПустоеЗНачение(СпрКаталогов ) = 1  и программа не знает что надо обновить
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Иногда не выпоняется UPDATE!
Ответ #7 - 28. Ноября 2007 :: 14:52
Печать  
А может ты делаешь ВыбратьЭлементы() и ПолучитьЭлемент() - и потом обновляешь.
Получается динамическая выборка с непредсказуемым результатом.

Или возможно в это время работают другие пользователи и блокируют элемент.

И еще несколько возможных причин ...

  
Наверх
 
IP записан
 
Bingo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 03. Октября 2007
Re: Иногда не выпоняется UPDATE!
Ответ #8 - 29. Ноября 2007 :: 08:02
Печать  
spock писал(а) 28. Ноября 2007 :: 13:55:
Пальцем в небо: провайдер откуда взят (microsoft, UzastOfBuch design)?


vfpoledb.dll 9.0.0.5815 патченная Uzhast
  
Наверх
 
IP записан
 
Bingo
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Зарегистрирован: 03. Октября 2007
Re: Иногда не выпоняется UPDATE!
Ответ #9 - 29. Ноября 2007 :: 08:11
Печать  
kiruha писал(а) 28. Ноября 2007 :: 14:52:
А может ты делаешь ВыбратьЭлементы() и ПолучитьЭлемент() - и потом обновляешь.
Получается динамическая выборка с непредсказуемым результатом.

Или возможно в это время работают другие пользователи и блокируют элемент.

И еще несколько возможных причин ...



Сначала использую  "СпрКататалогов.НайтиПоКоду()".  Если не найден создаю средствами 1С "Новый()". Потом пытаюсь использовать UPDATE, перед этим созданный элемент записывается "Записать()". ВремНоменклатура ищу прямым запросом. Обе ссылки в момент апдейта определены. Кроме меня в базе никого нет. Режим не монопольный.  Улыбка
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Иногда не выпоняется UPDATE!
Ответ #10 - 29. Ноября 2007 :: 12:28
Печать  
Может глупый вопроц... но если заменить всю эту ботву на:
Код
Выбрать все
...
СпрКататалогов.Товар = Товар;
СпрКататалогов.Записать();
ЗафиксироватьТранзакцию();
 


... ничего страшного не случится?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать