Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) UPDATE у OLE DB (число прочтений - 4707 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
UPDATE у OLE DB
17. Декабря 2007 :: 12:31
Печать  
есть простой текст:
Код
Выбрать все
update 1sjourn
set closed=0
from
1sjourn j
WHERE j.iddocdef=$ВидДокумента.Переоценка_Т and j.ismark<>'*'
 



так вот обновляет все записи.
Хотя тот же текст на ODBCRecordSet работает по усливию нормально.
Что тут не так?
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #1 - 17. Декабря 2007 :: 12:36
Печать  
Код
Выбрать все
update 1sjourn
    set closed=0
WHERE iddocdef=$ВидДокумента.Переоценка_Т and ismark<>'*'
 

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #2 - 17. Декабря 2007 :: 12:41
Печать  
наверно так лучше будет
Код
Выбрать все
and j.ismark=''  

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



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #3 - 17. Декабря 2007 :: 12:47
Печать  
Z1 писал(а) 17. Декабря 2007 :: 12:41:
наверно так лучше будет
Код
Выбрать все
and j.ismark=''  


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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: UPDATE у OLE DB
Ответ #4 - 17. Декабря 2007 :: 12:49
Печать  
Ты смотри!
Вышло спасибо.

Теперь другой момент.
как мне теперь восстановить у журнале информацию которую я завалил предыдущим запросом?
1sjourn до update есть.
т.е. вернуть closed 1 только тем документам у которых он был в журнале до .
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: UPDATE у OLE DB
Ответ #5 - 17. Декабря 2007 :: 12:51
Печать  
на счет ismark спорить не буду.
что
Код
Выбрать все
 ismark=''  


что
Код
Выбрать все
 ismark<>'*'  


разницы никакой.

Вы лучше подскажите как вернуть состояние журнала.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #6 - 17. Декабря 2007 :: 12:53
Печать  
backup ?
  
Наверх
ICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: UPDATE у OLE DB
Ответ #7 - 17. Декабря 2007 :: 13:00
Печать  
spock писал(а) 17. Декабря 2007 :: 12:53:
backup ?

что значит?
если ты имеешь ввиду таблицу 1sjourn до того как я применил update?
то да.
шас она уже не соответствует бекапу потому как в нее уже наштамповали новых документов.
прямой подменой не проканает.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: UPDATE у OLE DB
Ответ #8 - 17. Декабря 2007 :: 13:01
Печать  
Народ!
Выручайте.
Пока мене не съели.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #9 - 17. Декабря 2007 :: 13:04
Печать  
varelchik писал(а) 17. Декабря 2007 :: 12:49:
Ты смотри!
Вышло спасибо.

Теперь другой момент.
как мне теперь восстановить у журнале информацию которую я завалил предыдущим запросом?
1sjourn до update есть.
т.е. вернуть closed 1 только тем документам у которых он был в журнале до .

С трудом понимаю смысл вопроса. Как можно подробней объясни что хочеть.
Если все правильно понял то перед update
сначала сделай точно такой же запрос select и выгрузи результат в ТЗ
после этого делай update.
Что делать если кто-то успеет между select и update изменить документы - не знаю.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: UPDATE у OLE DB
Ответ #10 - 17. Декабря 2007 :: 13:10
Печать  
Если случайно "сделал непроведенным" то откатиться
назад можно проверя флаг регистра (если торговля)
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #11 - 17. Декабря 2007 :: 13:11
Печать  
если ACTCNT не трогал, то по нему можно установить closed если есть хоть одно движение
ну кроме доков которые были проведены, но не имели движений
ps я про опер учет, за бух не скажу
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: UPDATE у OLE DB
Ответ #12 - 17. Декабря 2007 :: 13:19
Печать  
3-й способ - если в каком либо регистре имеется IDDOC документа
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: UPDATE у OLE DB
Ответ #13 - 17. Декабря 2007 :: 13:49
Печать  
все оказалось намого проще.
делаем двумя запросами :
первый восстанавливаем признак не проведенных на основании старого журнала:
_1sjourn это жарнал до update
Код
Выбрать все
update 1sjourn
set closed=0
where iddoc in (select iddoc from _1sjourn where closed=0)
 


а теперь восстанавливаем инфу о проведенных

Код
Выбрать все
update 1sjourn
set closed=1
where iddoc in (select iddoc from _1sjourn where closed=1)
 



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


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: UPDATE у OLE DB
Ответ #14 - 17. Декабря 2007 :: 14:00
Печать  
А вообще юнит-тест или Фанктест тебе бы помог, т.е. сначала нужно тестить Улыбка
ЗЫ это так, мысли вслух Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать