Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) SQL. / УложитьСписокОбъектов(). (число прочтений - 8999 )
unnamed
Full Member
***
Отсутствует


0x1c = 28

Сообщений: 166
Местоположение: Chelyabinsk
Зарегистрирован: 01. Ноября 2007
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #15 - 20. Мая 2008 :: 11:37
Печать  
последний вариант и правильный. только 'B1' убери, я так понял ты как раз $Вид36 этим пытался и заменить...
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #16 - 20. Мая 2008 :: 11:48
Печать  
unnamed писал(а) 20. Мая 2008 :: 11:37:
последний вариант и правильный. только 'B1' убери, я так понял ты как раз $Вид36 этим пытался и заменить...


Точно! Я просто не знал за модификатор 36.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #17 - 21. Мая 2008 :: 07:03
Печать  
сзКонтрагенты1 - список складов.
сзКонтрагенты2 - список контрагентов.
Код
Выбрать все
	ИдСкл = глMDW.ЧислоВСтроку(глMDW.ИДСправочника("Склады"),36);
	ИдСкл = Формат("","С"+Число(4-СтрДлина(ИдСкл)))+ИдСкл;

	ИдКонтр = глMDW.ЧислоВСтроку(глMDW.ИДСправочника("Контрагенты"),36);
	ИдКонтр = Формат("","С"+Число(4-СтрДлина(ИдКонтр)))+ИдКонтр;

ТекстЗапроса = "
		|SELECT $Остатки.Товар [Товар $Справочник.Товары]
		|	, Sum($Остатки.Кво) СуммаКво
		|	, Sum($Остатки.СуммаПродажи) СуммаСуммаПродажи
		|FROM $Регистр.Остатки AS Остатки With (NOLOCK)
		|WHERE 	(Остатки.date_time_iddoc Between :НачДата And :КонДата~)
		|	AND  $Остатки.ХозОперация IN (SELECT VAL FROM #XO)
		| And  $Остатки.Контрагент IN (Select '"+ИдСкл+"'+Val From #KA1
		|				     UNION ALL
		|				     Select '"+ИдКонтр+"'+Val From   #KA2)
		|GROUP BY $Остатки.Товар
		|";

	рс.УложитьСписокОбъектов(сзТоргОперации, "#XO", "ХозОперации");
	рс.УложитьСписокОбъектов(сзКонтрагенты1, "#KA1","Склады");
	рс.УложитьСписокОбъектов(сзКонтрагенты2, "#KA2","Контрагенты");
	рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
	рс.УстановитьТекстовыйПараметр("КонДата", КонДата);
	тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
	тз.ВыбратьСтроку(); 

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


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #18 - 21. Мая 2008 :: 08:35
Печать  
А что это за зверь глMDW. ?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #19 - 21. Мая 2008 :: 08:54
Печать  
VasilyKushnir писал(а) 21. Мая 2008 :: 08:35:
А что это за зверь глMDW. ?

MetaDataWork ?
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #20 - 21. Мая 2008 :: 08:56
Печать  
Salimbek писал(а) 21. Мая 2008 :: 08:54:
MetaDataWork ?


Подозреваю, что да... Но как это все обявить у меня?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #21 - 21. Мая 2008 :: 08:59
Печать  
VasilyKushnir писал(а) 21. Мая 2008 :: 08:56:
Salimbek писал(а) 21. Мая 2008 :: 08:54:
MetaDataWork ?


Подозреваю, что да... Но как это все обявить у меня?

???
Перем глMDW Экспорт;
глMDW = СоздатьОбъект("MetaDataWork")
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #22 - 21. Мая 2008 :: 10:05
Печать  
Баранею на глазах....
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #23 - 21. Мая 2008 :: 10:15
Печать  
Цитата:
Перем глMDW Экспорт;
глMDW = СоздатьОбъект("MetaDataWork")


Вообще то у ODBCRecordSet есть атрибут МД типа MetaDataWork

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


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #24 - 21. Мая 2008 :: 10:39
Печать  
Все равно выдает пустой запросс (слава богу хоть уже не матерится...)

Код
Выбрать все
	ТекстЗапроса = "
		|SELECT $Остатки.Товар [Товар $Справочник.Товары]
		|	, Sum($Остатки.Кво) СуммаКво
		|	, Sum($Остатки.СуммаПродажи) СуммаСуммаПродажи
		|FROM $Регистр.Остатки AS Остатки With (NOLOCK)
		|WHERE 	(Остатки.date_time_iddoc Between :НачДата And :КонДата~)
		|	AND  $Остатки.ХозОперация IN (SELECT VAL FROM #XO)
		| And  $Остатки.Контрагент IN (Select '"+ИдКонтр+"'+Val From #KA1
		|				UNION ALL
		|					Select '"+ИдСклад+"'+Val From   #KA2)
		|GROUP BY $Остатки.Товар
		|";

	ИдСклад	= глMDW.ЧислоВСтроку(глMDW.ИДСправочника("Склады"), 36);
	ИдСклад	= Формат("","С"+Число(4-СтрДлина(ИдСклад)))+ИдСклад;

	ИдКонтр = глMDW.ЧислоВСтроку(глMDW.ИДСправочника("Контрагенты"),36);
	ИдКонтр = Формат("","С"+Число(4-СтрДлина(ИдКонтр)))+ИдКонтр;

	рс.УложитьСписокОбъектов(сзТоргОперации, "#XO", "ХозОперации");
	рс.УложитьСписокОбъектов(сзКонтрагенты, "#KA1", "Контрагенты");
	рс.УложитьСписокОбъектов(сзСклады, "#KA2", "Склады");
	рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
	рс.УстановитьТекстовыйПараметр("КонДата", КонДата);
	тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
	тз.ВыбратьСтроку();
 

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #25 - 21. Мая 2008 :: 11:09
Печать  
Поставь РС.Отладка(1); скопируй полученный текст запроса в QueryAnalizer и гоняй его, пока не поймешь, где собака порылась
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #26 - 21. Мая 2008 :: 11:41
Печать  
WHERE      (Остатки.date_time_iddoc Between '20080401' And '20080430Z')
     AND  Остатки.sp4330 IN (SELECT VAL FROM #XO)
And  Остатки.sp4331 IN (Select ''+Val From #KA1
                       UNION ALL
                             Select ''+Val From   #KA2)
Хотя по
Сообщить (ИдСклад);
Выдает
3FW
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #27 - 21. Мая 2008 :: 12:20
Печать  
Откель "+" перед Val ???
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: SQL. / УложитьСписокОбъектов().
Ответ #28 - 21. Мая 2008 :: 12:35
Печать  
Если б я знал.... Исходная конструкция
Select '"+ИдСклад+"'+Val From   #KA2)
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: SQL. / УложитьСписокОбъектов().
Ответ #29 - 21. Мая 2008 :: 12:38
Печать  
А ничё, что ты сначала текст запроса формируешь, а потом ИдСклад вычисляешь?  Подмигивание
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать