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


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 16. Августа 2006
помогите с запросом
24. Ноября 2006 :: 03:51
Печать  
Код
Выбрать все
			ТекстЗапроса = "
			|SELECT ПоказанияСчетчиков.IDDOC [Документ $Документ]
			|,		ПоказанияСчетчиков.IDDOCDEF Документ_вид
			|,	ПоказанияСчетчиков.DATE_TIME_IDDOC ДатаВремяИдДок
			|,  ПоказанияСчетчиков.LINENO_ НомерСтроки
			|,	CAST(LEFT(ПоказанияСчетчиков.Date_Time_IDDoc, 8) as DateTime) as ДатаДок
			|, $ПоказанияСчетчиков.Счетчики [Счетчики $Справочник.Счетчики]
			|, $ПоказанияСчетчиков.Показания Показания
			|FROM $Регистр.ПоказанияСчетчиков AS ПоказанияСчетчиков
			|WHERE (ПоказанияСчетчиков.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
			|GROUP BY ПоказанияСчетчиков.IDDOC
			|,		ПоказанияСчетчиков.IDDOCDEF
			|,	ПоказанияСчетчиков.DATE_TIME_IDDOC
			|,  ПоказанияСчетчиков.LINENO_
			|,  CAST(LEFT(ПоказанияСчетчиков.Date_Time_IDDoc, 8) as DateTime)
			|, $ПоказанияСчетчиков.Счетчики
			|, $ПоказанияСчетчиков.Показания
			|ORDER BY ПоказанияСчетчиков.DATE_TIME_IDDOC DESC
			|,  ПоказанияСчетчиков.LINENO_ DESC";  



Здесь "Счетчики" подчинен справочнику "ЛицевыеСчета".    Надо в запросе добавить поле Владелец тип Лицевые счета.
если добавить
SELECT
                 |, $ПоказанияСчетчиков.Счетчики.ParentExt.ID [ЛицевыеСчета $Справочник.ЛицевыеСчета]


           |GROUP BY
                 |, $ПоказанияСчетчиков.Счетчики.ParentExt.ID
Ругается Не удалось вызвать методы для char.
  
Наверх
 
IP записан
 
Oliver
Junior Member
**
Отсутствует



Сообщений: 25
Местоположение: SPb
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: помогите с запросом
Ответ #1 - 24. Ноября 2006 :: 05:21
Печать  
Я думаю, что просто

$ПоказанияСчетчиков.Счетчики.ParentExt(здесь не надо .ID) [ЛицевыеСчета $Справочник.ЛицевыеСчета]

Зачем еще .ID, ведь в поле ParentExt таблицы справочника Счетчики лежит как раз такое значение, которое соотв. полю ID справочника ЛицевыеСчета.
  
Наверх
 
IP записан
 
Kind
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 16. Августа 2006
Re: помогите с запросом
Ответ #2 - 24. Ноября 2006 :: 05:48
Печать  
Все равно такая же ошибка.
  
Наверх
 
IP записан
 
Kind
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 16. Августа 2006
Re: помогите с запросом
Ответ #3 - 24. Ноября 2006 :: 05:59
Печать  
Я так понимаю парсер  преобразовывает в ПоказанияСчетчиков.Счетчики.ParentExt   "Счетчики" во внутренний идентификатор а поле ParentExt тоже пытается во внутренний преобразовать. пробовал писать ПоказанияСчетчиков.SP197.ParentExt не помогает. ошибка такая же
  
Наверх
 
IP записан
 
Oliver
Junior Member
**
Отсутствует



Сообщений: 25
Местоположение: SPb
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: помогите с запросом
Ответ #4 - 24. Ноября 2006 :: 06:01
Печать  
Сорри.
Ты прав, как всегда сам делаешь - сразу все видишь, а подсказываешь другим ерунду. Улыбка
Вот так надо.
Пробел обязателен.

$ПоказанияСчетчиков.Счетчики .ParentExt [ЛицевыеСчета $Справочник.ЛицевыеСчета]
  
Наверх
 
IP записан
 
Oliver
Junior Member
**
Отсутствует



Сообщений: 25
Местоположение: SPb
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: помогите с запросом
Ответ #5 - 24. Ноября 2006 :: 06:04
Печать  
Про это неявно есть в факах. Поля типа ID, IDDOC, IDDOCDEF, Parent, ParentExt и другие работают так же.
Т.е. сперва заставляешь парсер преобразовать
$ПоказанияСчетчиков.Счетчики в имя таблицы и поля, соотв. внутренним именам таблиц и полей, а потом через пробел добавляешь поле, не требующее работы парсера.
  
Наверх
 
IP записан
 
Kind
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 18
Зарегистрирован: 16. Августа 2006
Re: помогите с запросом
Ответ #6 - 24. Ноября 2006 :: 06:45
Печать  
Привожу то, что пишет во время отладки
Код
Выбрать все
SELECT ПоказанияСчетчиков.IDDOC [Документ $Документ]
,		ПоказанияСчетчиков.IDDOCDEF Документ_вид
,	ПоказанияСчетчиков.DATE_TIME_IDDOC ДатаВремяИдДок
,  ПоказанияСчетчиков.LINENO_ НомерСтроки
,	CAST(LEFT(ПоказанияСчетчиков.Date_Time_IDDoc, 8) as DateTime) as ДатаДок
, ПоказанияСчетчиков.sp197 [Счетчики $Справочник.Счетчики]
, ПоказанияСчетчиков.sp197 .ParentExt [ЛицСчета $Справочник.ЛицевыеСчета]
, ПоказанияСчетчиков.sp198 Показания
FROM ra196 AS ПоказанияСчетчиков
WHERE (ПоказанияСчетчиков.DATE_TIME_IDDOC BETWEEN '20061001' AND '20061031Z')
GROUP BY ПоказанияСчетчиков.IDDOC
,		ПоказанияСчетчиков.IDDOCDEF
,	ПоказанияСчетчиков.DATE_TIME_IDDOC
,  ПоказанияСчетчиков.LINENO_
,  CAST(LEFT(ПоказанияСчетчиков.Date_Time_IDDoc, 8) as DateTime)
, ПоказанияСчетчиков.sp197
, ПоказанияСчетчиков.sp197 .ParentExt
, ПоказанияСчетчиков.sp198
ORDER BY ПоказанияСчетчиков.DATE_TIME_IDDOC DESC
,  ПоказанияСчетчиков.LINENO_ DESC
глТЗ_ПоказанияСчетчика = Запрос1спп.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\DATABASE\НАСЕЛЕНИЕ2005\EXTFORMS\ПОКАЗАНИЯВСЕХ.ERT(39)}: State 42000, native 258, message [Microsoft][ODBC SQL Server Driver][SQL Server]Не удалось вызвать методы для char. 

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



Сообщений: 25
Местоположение: SPb
Зарегистрирован: 25. Мая 2006
Пол: Мужской
Re: помогите с запросом
Ответ #7 - 24. Ноября 2006 :: 07:04
Печать  
Так.
Утро.
Просьба удалить все предыдущие посты с целью не позориться... Улыбка

ПоказанияСчетчиков - это регистр. Таблица, в которой есть поле Счетчик, где хранится ссылка на справочник Счетчики. Т.е. значение, равное ID из таблицы справочника Счетчики.

А поле ParentExt находится в таблице справочника Счетчики, а не в регистре.

Соотв. тебе нужно присоединить справочник счетчики по полю .ID=$ПоказанияСчетчиков.Счетчики и выбрать поле ParentExt из него.

С точностью до ошибок синтаксиса:

Код
Выбрать все
ТекстЗапроса = "
			|SELECT ПоказанияСчетчиков.IDDOC [Документ $Документ]
			|,		ПоказанияСчетчиков.IDDOCDEF Документ_вид
			|,	ПоказанияСчетчиков.DATE_TIME_IDDOC ДатаВремяИдДок
			|,  ПоказанияСчетчиков.LINENO_ НомерСтроки
			|,	CAST(LEFT(ПоказанияСчетчиков.Date_Time_IDDoc, 8) as DateTime) as ДатаДок
			|, $ПоказанияСчетчиков.Счетчики [Счетчики $Справочник.Счетчики]

			//ВОТ ЭТА СТРОЧКА ВЫБИРАЕТ ИЗ СПР. СЧЕТЧИКИ НУЖНОЕ ПОЛЕ
			|,  СпрСчетчики.ParentExt [ЛицевыеСчета $Справочник.ЛицевыеСчета]

			|, $ПоказанияСчетчиков.Показания Показания
			|FROM $Регистр.ПоказанияСчетчиков AS ПоказанияСчетчиков

			//А ЭТИ СТРОЧКИ ПРИСОЕДИНЯЮТ ТАБЛИЦУ СПРАВОЧНИКА
			|Left Join $Справочник.Счетчики as СпрСчетчики
			| on СпрСчетчики.ID=$ПоказанияСчетчиков.Счетчики

			|WHERE (ПоказанияСчетчиков.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
			|GROUP BY ПоказанияСчетчиков.IDDOC  
			|,		ПоказанияСчетчиков.IDDOCDEF  
			|,	ПоказанияСчетчиков.DATE_TIME_IDDOC  
			|,  ПоказанияСчетчиков.LINENO_
			|,  CAST(LEFT(ПоказанияСчетчиков.Date_Time_IDDoc, 8) as DateTime)
			|, $ПоказанияСчетчиков.Счетчики
			|, $ПоказанияСчетчиков.Показания
			|ORDER BY ПоказанияСчетчиков.DATE_TIME_IDDOC DESC
			|,  ПоказанияСчетчиков.LINENO_ DESC";  
 

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