Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема подготовленный запрос с датой и PutObjectList (число прочтений - 2252 )
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
подготовленный запрос с датой и PutObjectList
05. Февраля 2011 :: 16:43
Печать  
Код
Выбрать все
sql = "
|declare @d1 datetime
|declare @d2 datetime
|declare @sub1 varchar(9)
|set @d1 = ?
|set @d2 = ?
|set @sub1 = ?
|select						        
|	СуммаОборотКт sum
|from $БИОбороты.Основной(@d1,
|                         @d2~,
|                         ,
|                         ,
|                         Счет = :acc,
|                         ,
|                         (Субконто1 = @sub1)),
|                         БезКорСчетов,
|                         БезСубконто) ob
|";
acc = CreateObject("AccountsRecordset");
acc.AddParam(1,8,8,0);
acc.AddParam(1,8,8,0);
acc.AddParam(1,14,9,0);
acc.SetTextParam("acc", Сч);
acc.Prepare(sql);

acc.SetParam(1, ДатаНачРасч);
acc.SetParam(2, ДатаКонРасч);
acc.SetParam(3, Суб);
s = acc.ExecuteScalar();
 



помогите разобраться:
-какой все-таки тип данных использовать при объявлении даты?
-какие параметры указывать в AddParam() для даты?
-как передать в подготовленный запрос список значений при помощи PutObjectList?
Поиск курил, пробовал всё ((1,8,8,0), (1,10,17,0), datetime, datetime(8)) в разных сочетаниях.
Заранее благодарен за помощь.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #1 - 05. Февраля 2011 :: 16:58
Печать  
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #2 - 07. Февраля 2011 :: 06:41
Печать  
Пробовал и AddParam(1,10,20,0) и AddParam(1,10,22,0), даже комп перезагружал  Exclaim как сказано в ссылке - AccountsRecordset::СформироватьОшибку(Строка Ошибка=Неправильный формат времени!) : Неправильный формат времени! (код как в 1-м посте)
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #3 - 07. Февраля 2011 :: 07:16
Печать  
Слона то я и не приметил.  Ужас

В этих параметрах должна быть позиция документа во внутреннем формате, дата как текстовый параметр или дата в формате ODBC - {d 'yyyy-mm-dd'}
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #4 - 07. Февраля 2011 :: 08:49
Печать  
если делать запрос
Код
Выбрать все
|from $БИОбороты.Основной('20110101',
|                         '20110131Z', 


то всё гуд.
понимаю так: нужно передать строковый параметр длиной 9 байт, т.е.:
declare @d1 varchar(9)
declare @d2 varchar(9)

AddParam(1,14,9,0)
AddParam(1,14,9,0)

SetParam(1, "" + format(ДатаНачРасч, "d yyyymmdd"))
SetParam(2, "" + format(ДатаКонРасч, "d yyyymmdd") + "Z")

Выдаёт ту же ошибку. Что не так у меня с мозгами?
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #5 - 07. Февраля 2011 :: 09:48
Печать  
Собственно, вопрос переходит в разряд "как передать строку длиной 9 символов" (или строку вида ('<id1>','<id2>',...,'<idn>') - это к вопросу как передать список объектов)
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #6 - 07. Февраля 2011 :: 09:55
Печать  
vinogradoff писал(а) 07. Февраля 2011 :: 08:49:
Что не так у меня с мозгами?

С мозгами у тебя всё хорошо, но передать дату в ВТ AccountsRecordset таким способом не получится. Даты должны быть известны ещё на этапе парсинга - для формирования текста подзапроса ВТ. Для оптимизации используй RPCMode.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #7 - 07. Февраля 2011 :: 11:00
Печать  
Спасибо за помощь.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: подготовленный запрос с датой и PutObjectList
Ответ #8 - 11. Февраля 2011 :: 14:41
Печать  
А все-таки, подскажите кто-нибудь пример рабочего кода препарированного параметризированного запроса, где в качестве параметров передаются даты и СписокЗначений для AccountsRecordset на примере:
Код
Выбрать все
sql = "
|declare @d1 datetime
|declare @d2 datetime
|declare @sub1 varchar(9)
|declare @sub2 varchar(9)
|set @d1 = ?
|set @d2 = ?
|set @sub1 = ?
|set @sub2 = ?
|select						        
|	sum(СуммаОборотКт) sum
|from $БИОбороты.Основной(@d1,
|                         @d2~,
|                         ,
|                         ,
|                         Счет = :acc,
|                         ,
|                         (Субконто1 = @sub1 and Субконто2 in (select val from #sub2)),
|                         БезКорСчетов,
|                         БезСубконто) ob
|";
acc = CreateObject("AccountsRecordset");
acc.AddParam(1,8,8,0);
acc.AddParam(1,8,8,0);
acc.AddParam(1,14,9,0);
acc.AddParam(1,14,9,0);
acc.SetTextParam("acc", Сч);
acc.Prepare(sql);

acc.SetParam(1, ДатаНачРасч);
acc.SetParam(2, ДатаКонРасч);
acc.SetParam(3, Суб);
acc.SetParam(4, Суб2);
s = acc.ExecuteScalar(); 



(там где and Субконто2 in (select val from #sub2) понимаю, что не правильно, хотелось бы получить примерно такое)

или пример согласно Ответ #6
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать