Простой пример объектного фейса.
Добавлено: 10 окт 2003, 13:41
//Работа с атрибутами
Interface GetAttr_NV;
Create View
var
RecNrec : comp;
NameAtr : string;
FormatV : string;
as select
AttrNam.AttrType,
AttrVal.*
from
AttrNam(READONLY),
AttrVal(READONLY)
where ((
Attrnam.nrec == AttrVal.cAttrNam
and Attrnam.wTable == AttrVal.wTable
and RecNrec == AttrVal.crec
))
and
(UpCase(AttrNam.name) = UpCase(NameAtr))
;
//Проверка существования атрибута
Public Function CheckAtr ( NA : String ) : boolean;
Begin
NameAtr := NA;
If GetFirst AttrNam = tsOk
then CheckAtr := true
else CheckAtr := false;
End;
//Проверка существования атрибута с визуализацией
Public Function CheckAtrD ( NA : String ) : boolean;
Begin
NameAtr := NA;
If GetFirst AttrNam = tsOk
then CheckAtrD := true
else begin
Message ( 'Запрошенный атрибут не найден в БД!' + chr ( 13 ) + NA, Error );
CheckAtrD := false
end;
End;
//Получение значения типа string
Public Function sGetAtr ( NA : string; Rec : comp ) : string;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then sGetAtr := AttrVal.vString
else sGetAtr := '';
End;
//Получение значения типа double
Public Function doGetAtr ( NA : string; Rec : comp ) : double;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then doGetAtr := AttrVal.vDouble
else doGetAtr := 0;
End;
//Получение значения типа date
Public Function dGetAtr ( NA : string; Rec : comp ) : date;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then dGetAtr := AttrVal.vDate
else dGetAtr := date ( 0, 0, 0 );
End;
//Получение значения типа time
Public Function tGetAtr ( NA : string; Rec : comp ) : time;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then tGetAtr := AttrVal.vTime
else tGetAtr := time ( 0, 0, 0, 0 );
End;
END.
Использование. Например ТАКЖ
.....
var OF : GetAttr_NV
.....
MyDate := OF.dGetAtr ( NameAtr, nRec );
.....
Interface GetAttr_NV;
Create View
var
RecNrec : comp;
NameAtr : string;
FormatV : string;
as select
AttrNam.AttrType,
AttrVal.*
from
AttrNam(READONLY),
AttrVal(READONLY)
where ((
Attrnam.nrec == AttrVal.cAttrNam
and Attrnam.wTable == AttrVal.wTable
and RecNrec == AttrVal.crec
))
and
(UpCase(AttrNam.name) = UpCase(NameAtr))
;
//Проверка существования атрибута
Public Function CheckAtr ( NA : String ) : boolean;
Begin
NameAtr := NA;
If GetFirst AttrNam = tsOk
then CheckAtr := true
else CheckAtr := false;
End;
//Проверка существования атрибута с визуализацией
Public Function CheckAtrD ( NA : String ) : boolean;
Begin
NameAtr := NA;
If GetFirst AttrNam = tsOk
then CheckAtrD := true
else begin
Message ( 'Запрошенный атрибут не найден в БД!' + chr ( 13 ) + NA, Error );
CheckAtrD := false
end;
End;
//Получение значения типа string
Public Function sGetAtr ( NA : string; Rec : comp ) : string;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then sGetAtr := AttrVal.vString
else sGetAtr := '';
End;
//Получение значения типа double
Public Function doGetAtr ( NA : string; Rec : comp ) : double;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then doGetAtr := AttrVal.vDouble
else doGetAtr := 0;
End;
//Получение значения типа date
Public Function dGetAtr ( NA : string; Rec : comp ) : date;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then dGetAtr := AttrVal.vDate
else dGetAtr := date ( 0, 0, 0 );
End;
//Получение значения типа time
Public Function tGetAtr ( NA : string; Rec : comp ) : time;
Begin
RecNrec := Rec;
If CheckAtr ( NA )
then If GetFirst AttrVal = tsOk
then tGetAtr := AttrVal.vTime
else tGetAtr := time ( 0, 0, 0, 0 );
End;
END.
Использование. Например ТАКЖ
.....
var OF : GetAttr_NV
.....
MyDate := OF.dGetAtr ( NameAtr, nRec );
.....