Страница 1 из 1

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

Добавлено: 17 июн 2004, 16:46
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?
Может в данных что-то? но что?

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

Добавлено: 18 июн 2004, 05:45
Serges
Зачем такие сложности? В прототипе и в потоке есть поля KODPLATNDS_post и KODPLATNDS_pol.Для 584 они добавлены патчем Gal02Fix49.

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

Добавлено: 18 июн 2004, 08:10
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.

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

Добавлено: 18 июн 2004, 08:13
hope
Когда я это делала этого фикса еще не было.
Просто не понятно в чем все-таки проблема...