Страница 1 из 1
					
				SQL запрос в форме
				Добавлено: 14 май 2005, 13:44
				 oiko
				Есть форма текст ниже
.linkform ’Raspor’ prototype is ’PRBDOC’
.NameInList ’Myform’
.group 'Продажа'
.var
plkontr:string
.endvar
.create view vsveddk
as select  *
from
basedoc(readonly), dogovor(readonly), katorg(readonly)
where
((comp(BaseDocNrec)==Basedoc.nrec and
basedoc.corg==katorg.nrec));
.fields
Plkontr
.endfields
.{
.begin
vsveddk.GetFirst Basedoc;
vsveddk.GetFirst katorg;
Plkontr:= vsveddk.KATORG.name;
end.                                     
KATORG.name ^
.{ CheckEnter IsExClass
.}
.{ CheckEnter IsGroup
.}
.{
.}
.if Delimiter
.end
.}
.endform
 
При отработке Галактика либо вылетает либо выдает мусор - отчаялся понять почему. Версия 7.12
			 
			
					
				
				Добавлено: 14 май 2005, 15:25
				 DarkAngel27
				Договора выгружаешь, а связку не делаешь, вот мусор и гонится...
* Я пометил те места, которые изменял
Код: Выделить всё
.linkform ’Raspor’ prototype is ’PRBDOC’ 
.NameInList ’Myform’ 
.group 'Продажа' 
.var 
      plkontr:string 
.endvar
.create view vsveddk 
as select * 
from 
       basedoc(readonly), dogovor(readonly), katorg(readonly) 
where 
((
    BaseDocNrec == Basedoc.nrec and 
    basedoc.corg==katorg.nrec
*    and basedoc.cdogovor == dogovor.nrec
)); 
.fields 
       Plkontr 
.endfields 
.{ 
.begin 
*      vsveddk.GetFirst; 
        Plkontr:= vsveddk.KATORG.name; 
end. 
KATORG.name ^ 
.{ CheckEnter IsExClass 
.} 
.{ CheckEnter IsGroup 
.} 
.{ 
.} 
.if Delimiter 
.end 
.} 
.endform 
Так поидеи должно заработать...
 
			 
			
					
				
				Добавлено: 14 май 2005, 15:44
				 oiko
				Это была описка с договором не имеющая значения
так тоже не идет
.linkform ’Raspor’ prototype is ’PRBDOC’ 
.NameInList ’Myform’ 
.group 'Продажа' 
.var 
      plkontr:string 
.endvar 
.create view vsveddk 
as select * 
from 
       basedoc(readonly), katorg(readonly) 
where 
(( 
    BaseDocNrec == Basedoc.nrec and 
    basedoc.corg==katorg.nrec 
)); 
.fields 
       Plkontr 
.endfields 
.{ 
.begin 
        vsveddk.GetFirst; 
        Plkontr:= vsveddk.KATORG.name; 
end. 
KATORG.name ^ 
.{ CheckEnter IsExClass 
.} 
.{ CheckEnter IsGroup 
.} 
.{ 
.} 
.if Delimiter 
.end 
.} 
.endform 
Самое интересное в первазив версии отчет выдает все правильно
под ораклом вылетает
eсли меняю поле на katorg.indexk то под ораклом по-прежнему вылетает а первазив дает мусор типа 633____________аYР__оt_I_7____¦Рx__фx______LЪР__оt_
			 
			
					
				
				Добавлено: 15 май 2005, 21:41
				 DarkAngel27
				Попробуй сделать следующее: Убрать (ReadOnly), изменить тип выводимого поля и избавиться от переменной:
Код: Выделить всё
......
.fields 
     vsveddk.KATORG.name
.endfields 
.{ 
.begin 
         vsveddk.GetFirst; 
end. 
KATORG_name @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
.....
Так же можно попробовать переименовать таблицу, может имя используется...
А зачем нужно выводить данное поле 

  Оно уже есть в прототипе:
pol - платильщик, 
grpol - получатель. Или наоборот.
 
			 
			
					
				
				Добавлено: 16 май 2005, 08:54
				 oiko
				То DarkAngel27 
То что ты предлагаешь не проходит тоже.
Задача была составить реквизиты контрагента по некоторому шаблону
Потом меня просто заинтересовало почему так получается, например таблица договоров цепляется нормально а каторг нет.
Глюк виден и на тестовой "Галактической базе"
И еще когда прошу выдать katorg.indexk как я уже писал выше и идет мусор 633____________аYР__оt_I_7____¦Рx__фx______LЪР__оt_
так вот 633 - последние три цифры инн контрагента
			 
			
					
				
				Добавлено: 16 май 2005, 15:15
				 DarkAngel27
				А если проверить целостность таблицы?
			 
			
					
				
				Добавлено: 16 май 2005, 15:59
				 oiko
				Проверил естественно
но это подразумевало бы что и тестовые
"Галактические базы" - тоже больные
			 
			
					
				
				Добавлено: 16 май 2005, 16:22
				 Max_Fin
				Попробуйте заменить это
oiko писал(а):
.begin 
        vsveddk.GetFirst; 
        Plkontr:= vsveddk.KATORG.name; 
end. 
на
Код: Выделить всё
.begin 
        Plkontr:= '';
        if vsveddk.GetFirst BaseDoc = tsOk
        {
          if vsveddk.GetFirst KatOrg = tsOk
          {
             Plkontr:= vsveddk.KATORG.name; 
          }
          else Plkontr:= '?!' + vsveddk.BaseDoc.cOrg;
        }
end. 
может станет понятней в чем ошибка
 
			 
			
					
				
				Добавлено: 17 май 2005, 10:49
				 oiko
				Тоже самое
katorg.name выводится а вместо katorg.indexk мусор
запрос в суппорте отрабатывает правильно
			 
			
					
				
				Добавлено: 17 май 2005, 12:07
				 edward_K
				попробуйте в select перечислить список необходимых полей
* не есть хорошо.
			 
			
					
				
				Добавлено: 18 май 2005, 09:17
				 oiko
				to edward_K
Теперь мусора нет 
вместо значения katorg.indexk теперь четко выводится katorg.unn  
 
все это загадочно
Непонятно становится как рботают sql-запросы в форме
явно не так как в випе или суппорте.
 
			 
			
					
				
				Добавлено: 18 май 2005, 11:23
				 edward_K
				1. Какая платформа? Oracle , Pervasive + версия
   Галактика + патчи.
2. не баловились ли вы с добавлением полей и индексов в katsopr?
  очень на то похоже. 
3. Четко проверте на каком словаре компилите
 я сталкивался с тем , что компили на словаре 585, а запускали на 711 - так вот так будет работать в редких случаях. Лучше компилить всегда на той базе на которой это будет использоваться.
4. попробуйте вывести наименование, unn,indexk и следующее поле за indexk текстовое и заполненое.
5. киньте мне в мыло последний вариант ваше формы, проверю на досуге.
6. попробуйте написать ARd в которой вытащить указанные поля katorg.
			 
			
					
				
				Добавлено: 18 май 2005, 12:41
				 oiko
				Большой thanks господину edward_K!
Глюк шел по пункту 3. Текущая версия 712 а в настройке компилятора была указана база 711. А при докомпиляции c 711 на 712 в katsopr действительно добавляется индекс (кстати добавляется криво и мне пришлось лечить таблу после конвертации).
Тема закрыта и пусть послужит остальным уроком.
АРД не использую - лучше напишу на випе интерфейс под отчет -  так эргономичнее.