Страница 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 действительно добавляется индекс (кстати добавляется криво и мне пришлось лечить таблу после конвертации).

Тема закрыта и пусть послужит остальным уроком.

АРД не использую - лучше напишу на випе интерфейс под отчет - так эргономичнее.