mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 02:49:28 +02:00
+ Patch from Joost van der Sluis to correct AsVariant
This commit is contained in:
parent
04de5a11b7
commit
a31b420eb1
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user