+ Patch from Joost van der Sluis to correct AsVariant

This commit is contained in:
michael 2004-12-29 20:27:08 +00:00
parent 04de5a11b7
commit a31b420eb1

View File

@ -231,6 +231,7 @@ Const
SDateTime = 'TDateTime';
SFloat = 'Float';
SInteger = 'Integer';
SVariant = 'Variant';
SString = 'String';
constructor TField.Create(AOwner: TComponent);
@ -327,6 +328,13 @@ begin
AccessError(SInteger);
end;
function TField.GetAsVariant: Variant;
begin
AccessError(SVariant);
end;
function TField.GetAsInteger: Integer;
begin
@ -339,6 +347,20 @@ begin
AccessError(SString);
end;
function TField.GetOldValue: Variant;
var SaveState : tDatasetState;
begin
with FDataset do
begin
SaveState := State;
SetTempState(dsOldValue);
Result := GetAsVariant;
RestoreState(SaveState);
end;
end;
function TField.GetCanModify: Boolean;
begin
@ -482,6 +504,13 @@ begin
AccessError(SFloat);
end;
procedure TField.SetAsVariant(AValue: Variant);
begin
AccessError(SVariant);
end;
procedure TField.SetAsLongint(AValue: Longint);
begin
@ -699,6 +728,18 @@ begin
Result:='';
end;
function TStringField.GetAsVariant: Variant;
Var s : string;
begin
If GetValue(s) then
Result:=s
else
Result:=Null;
end;
function TStringField.GetDataSize: Word;
begin
@ -831,6 +872,17 @@ begin
Result:=0;
end;
function TLongintField.GetAsVariant: Variant;
Var L : Longint;
begin
If GetValue(L) then
Result:=L
else
Result:=Null;
end;
function TLongintField.GetAsString: string;
Var L : Longint;
@ -902,6 +954,12 @@ begin
RangeError(Avalue,FMinrange,FMaxRange);
end;
procedure TLongintField.SetAsVariant(AValue: Variant);
begin
SetAsLongint(AValue);
end;
procedure TLongintField.SetAsString(const AValue: string);
Var L,Code : longint;
@ -984,6 +1042,17 @@ begin
Result:=0;
end;
function TLargeIntField.GetAsVariant: Variant;
Var L : Largeint;
begin
If GetValue(L) then
Result:=L
else
Result:=Null;
end;
function TLargeintField.GetAsLongint: Longint;
begin
@ -1173,6 +1242,17 @@ begin
Result:=0.0;
end;
function TFloatField.GetAsVariant: Variant;
Var f : Double;
begin
If GetData(@f) then
Result := f
else
Result:=Null;
end;
function TFloatField.GetAsLongint: Longint;
begin
@ -1270,6 +1350,17 @@ begin
Result:=False;
end;
function TBooleanField.GetAsVariant: Variant;
Var b : boolean;
begin
If GetData(@b) then
Result := b
else
Result:=Null;
end;
function TBooleanField.GetAsString: string;
Var B : boolean;
@ -1353,6 +1444,16 @@ begin
Result:=0;
end;
function TDateTimeField.GetAsVariant: Variant;
Var d : tDateTime;
begin
If Getdata(@d) then
Result := d
else
Result:=Null;
end;
function TDateTimeField.GetAsFloat: Double;
@ -1583,6 +1684,17 @@ begin
result := C;
end;
function TBCDField.GetAsVariant: Variant;
Var c : system.Currency;
begin
If GetData(@c) then
Result := c
else
Result:=Null;
end;
function TBCDField.GetAsFloat: Double;
begin
@ -2095,7 +2207,10 @@ end;
{
$Log$
Revision 1.19 2004-12-13 19:20:42 michael
Revision 1.20 2004-12-29 20:27:08 michael
+ Patch from Joost van der Sluis to correct AsVariant
Revision 1.19 2004/12/13 19:20:42 michael
* Patch from Joost van der Sluis
- fixed bug #3180, TFields.Clear implemented
- implemented TLargeintField