Галактика 584 для Pervasive и для MS SQL

ПНР и сопровождение

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

Ответить
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Галактика 584 для Pervasive и для MS SQL

Сообщение hope »

Добрый день, Всем!

Есть две Галактики 584: одна работает на Pervasive, другая - на MS SQL.
Пачти устанавливаем практически одновременно в обе Галактики. Свои формы компилируем в отдельный ресусный файл. Подставляем этот файл в обе Галактики. Все нормально подхватывалось и отчеты формировались без проблем.
Но вот сделала форму: печать счетов-фактур с КПП: достаю из KatOrg.KodPlatNDS. В SQL-базе все нормально формируется. А в Pervasive-базе выдает ошибку: не находит запись в KatOrg.

вот кусок кода:
...

.create view NN1
VAR
nnMyOrg:String // наименование организации
AS SELECT *
from
KatOrg (ReadOnly)
where
(
Trim(nnMyOrg)=Trim(KatOrg.Name)
)
;
.var
mykpp1:String // КПП 1организации
mykpp2:String // КПП 2организации
.endvar

...


.begin
nnMyOrg:=MyOrgName
NN1.GetFirst
end.
.{ Table 'NN1'
.begin
mykpp1:=NN1.KatOrg.KodPlatNDS
end.
.} //Table 'NN1'
.begin
nnMyOrg:=OrgName
NN1.GetFirst
end.
.{ Table 'NN1'
.begin
mykpp2:=NN1.KatOrg.KodPlatNDS
end.
.} //Table 'NN1'

В чем может быть проблема? Что разного в SQL и в Pervasive?
Может в данных что-то? но что?
Serges
Местный житель
Сообщения: 228
Зарегистрирован: 29 мар 2005, 17:49

Re: Галактика 584 для Pervasive и для MS SQL

Сообщение Serges »

Зачем такие сложности? В прототипе и в потоке есть поля KODPLATNDS_post и KODPLATNDS_pol.Для 584 они добавлены патчем Gal02Fix49.
Галактика 8.10, Oracle 10g / 10.2.0.4
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Галактика 584 для Pervasive и для MS SQL

Сообщение Maverick »

А если разбираться все-таки в коде, то правильнее бы здесь было сделать так:

.var
MyOrg : string [100];
MyKPP : string [100];
.endvar

В месте, где нужно достать КПП из поля "Код плательщика НДС" делаем
.Begin
MyOrg:=Имя_организации_из_прототипа
RunInterface (SeekMyKPP,MyOrg,MyKPP);
/* в myKPP возвратится КПП*/
End.


Вот сам интерфейс:

Interface SeekMyKPP, AlwaysReturn;
Create View
Var
MyOrg , MyKPP : String [100];
As Select *
From
KatOrg
Where
((
MyOrg == KatOrg.Name;
));
HandleEvent
cmInit : {
If GetFirst KatOrg then
MyKPP:=KatOrg.KodPlatNDS
Else
MyKPP:='????????'
Abort;
};
End;
END.

В Надином куске кода вполне возможно Первасивом неверно отрабатывается условие фильтра(!) в запросе. Я бы рекомендовал все-таки
а) использовать индексное условие
where
((
nnMyOrg==KatOrg.Name
)); - мей би поможет

б) в бегинах делать следующую вещь:
вместо
.begin
nnMyOrg:=MyOrgName
NN1.GetFirst
end.
писать
.begin
Set NN1.KatOrg.Name:=MyOrgName;
NN1.KatOrg.GetFirst;
/*
или
NN1.KatOrg.GetFirst Where ((nnMyOrg == KatOrg.Name));
*/
end.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Галактика 584 для Pervasive и для MS SQL

Сообщение hope »

Когда я это делала этого фикса еще не было.
Просто не понятно в чем все-таки проблема...
Ответить