Добрый день, Всем!
Есть две Галактики 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?
Может в данных что-то? но что?
Галактика 584 для Pervasive и для MS SQL
Модераторы: m0p3e, edward_K, Модераторы
Re: Галактика 584 для Pervasive и для MS SQL
Зачем такие сложности? В прототипе и в потоке есть поля KODPLATNDS_post и KODPLATNDS_pol.Для 584 они добавлены патчем Gal02Fix49.
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Галактика 584 для Pervasive и для MS SQL
А если разбираться все-таки в коде, то правильнее бы здесь было сделать так:
.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.
.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
Когда я это делала этого фикса еще не было.
Просто не понятно в чем все-таки проблема...
Просто не понятно в чем все-таки проблема...