SQL запрос в форме

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

SQL запрос в форме

Сообщение 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
DarkAngel27
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение 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 
Так поидеи должно заработать...
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Сообщение 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_
DarkAngel27
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение DarkAngel27 »

Попробуй сделать следующее: Убрать (ReadOnly), изменить тип выводимого поля и избавиться от переменной:

Код: Выделить всё

......
.fields 
     vsveddk.KATORG.name
.endfields 
.{ 
.begin 
         vsveddk.GetFirst; 
end. 
KATORG_name @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
.....
Так же можно попробовать переименовать таблицу, может имя используется...
А зачем нужно выводить данное поле :?: Оно уже есть в прототипе:
pol - платильщик,
grpol - получатель. Или наоборот.
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

То DarkAngel27

То что ты предлагаешь не проходит тоже.
Задача была составить реквизиты контрагента по некоторому шаблону
Потом меня просто заинтересовало почему так получается, например таблица договоров цепляется нормально а каторг нет.
Глюк виден и на тестовой "Галактической базе"
И еще когда прошу выдать katorg.indexk как я уже писал выше и идет мусор 633____________аYР__оt_I_7____¦Рx__фx______LЪР__оt_
так вот 633 - последние три цифры инн контрагента
DarkAngel27
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение DarkAngel27 »

А если проверить целостность таблицы?
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Проверил естественно
но это подразумевало бы что и тестовые
"Галактические базы" - тоже больные
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение 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. 
может станет понятней в чем ошибка
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Тоже самое
katorg.name выводится а вместо katorg.indexk мусор
запрос в суппорте отрабатывает правильно
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

попробуйте в select перечислить список необходимых полей
* не есть хорошо.
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

to edward_K
Теперь мусора нет
вместо значения katorg.indexk теперь четко выводится katorg.unn :?
все это загадочно
Непонятно становится как рботают sql-запросы в форме
явно не так как в випе или суппорте.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1. Какая платформа? Oracle , Pervasive + версия
Галактика + патчи.
2. не баловились ли вы с добавлением полей и индексов в katsopr?
очень на то похоже.
3. Четко проверте на каком словаре компилите
я сталкивался с тем , что компили на словаре 585, а запускали на 711 - так вот так будет работать в редких случаях. Лучше компилить всегда на той базе на которой это будет использоваться.
4. попробуйте вывести наименование, unn,indexk и следующее поле за indexk текстовое и заполненое.
5. киньте мне в мыло последний вариант ваше формы, проверю на досуге.
6. попробуйте написать ARd в которой вытащить указанные поля katorg.
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Большой thanks господину edward_K!
Глюк шел по пункту 3. Текущая версия 712 а в настройке компилятора была указана база 711. А при докомпиляции c 711 на 712 в katsopr действительно добавляется индекс (кстати добавляется криво и мне пришлось лечить таблу после конвертации).

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

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