|
@@ -999,6 +999,15 @@ begin
|
|
VSQLVar^.SQLInd^ := 0;
|
|
VSQLVar^.SQLInd^ := 0;
|
|
|
|
|
|
case (VSQLVar^.sqltype and not 1) of
|
|
case (VSQLVar^.sqltype and not 1) of
|
|
|
|
+ SQL_SHORT, SQL_BOOLEAN_INTERBASE :
|
|
|
|
+ begin
|
|
|
|
+ if VSQLVar^.sqlscale = 0 then
|
|
|
|
+ si := AParams[ParNr].AsSmallint
|
|
|
|
+ else
|
|
|
|
+ si := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale));
|
|
|
|
+ i := si;
|
|
|
|
+ Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen);
|
|
|
|
+ end;
|
|
SQL_LONG :
|
|
SQL_LONG :
|
|
begin
|
|
begin
|
|
if VSQLVar^.sqlscale = 0 then
|
|
if VSQLVar^.sqlscale = 0 then
|
|
@@ -1007,15 +1016,18 @@ begin
|
|
i := Round(AParams[ParNr].AsFloat * IntPower10(-VSQLVar^.sqlscale)); //*any number of digits
|
|
i := Round(AParams[ParNr].AsFloat * IntPower10(-VSQLVar^.sqlscale)); //*any number of digits
|
|
Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen);
|
|
Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen);
|
|
end;
|
|
end;
|
|
- SQL_SHORT, SQL_BOOLEAN_INTERBASE :
|
|
|
|
|
|
+ SQL_INT64:
|
|
begin
|
|
begin
|
|
if VSQLVar^.sqlscale = 0 then
|
|
if VSQLVar^.sqlscale = 0 then
|
|
- si := AParams[ParNr].AsSmallint
|
|
|
|
|
|
+ li := AParams[ParNr].AsLargeInt
|
|
|
|
+ else if AParams[ParNr].DataType = ftFMTBcd then
|
|
|
|
+ li := AParams[ParNr].AsFMTBCD * IntPower10(-VSQLVar^.sqlscale)
|
|
else
|
|
else
|
|
- si := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale));
|
|
|
|
- i := si;
|
|
|
|
- Move(i, VSQLVar^.SQLData^, VSQLVar^.SQLLen);
|
|
|
|
|
|
+ li := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale));
|
|
|
|
+ Move(li, VSQLVar^.SQLData^, VSQLVar^.SQLLen);
|
|
end;
|
|
end;
|
|
|
|
+ SQL_DOUBLE, SQL_FLOAT:
|
|
|
|
+ SetFloat(VSQLVar^.SQLData, AParams[ParNr].AsFloat, VSQLVar^.SQLLen);
|
|
SQL_BLOB :
|
|
SQL_BLOB :
|
|
SetBlobParam;
|
|
SetBlobParam;
|
|
SQL_VARYING, SQL_TEXT :
|
|
SQL_VARYING, SQL_TEXT :
|
|
@@ -1056,18 +1068,6 @@ begin
|
|
end;
|
|
end;
|
|
SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TIMESTAMP :
|
|
SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TIMESTAMP :
|
|
SetDateTime(VSQLVar^.SQLData, AParams[ParNr].AsDateTime, VSQLVar^.SQLType);
|
|
SetDateTime(VSQLVar^.SQLData, AParams[ParNr].AsDateTime, VSQLVar^.SQLType);
|
|
- SQL_INT64:
|
|
|
|
- begin
|
|
|
|
- if VSQLVar^.sqlscale = 0 then
|
|
|
|
- li := AParams[ParNr].AsLargeInt
|
|
|
|
- else if AParams[ParNr].DataType = ftFMTBcd then
|
|
|
|
- li := AParams[ParNr].AsFMTBCD * IntPower10(-VSQLVar^.sqlscale)
|
|
|
|
- else
|
|
|
|
- li := Round(AParams[ParNr].AsCurrency * IntPower10(-VSQLVar^.sqlscale));
|
|
|
|
- Move(li, VSQLVar^.SQLData^, VSQLVar^.SQLLen);
|
|
|
|
- end;
|
|
|
|
- SQL_DOUBLE, SQL_FLOAT:
|
|
|
|
- SetFloat(VSQLVar^.SQLData, AParams[ParNr].AsFloat, VSQLVar^.SQLLen);
|
|
|
|
SQL_BOOLEAN_FIREBIRD:
|
|
SQL_BOOLEAN_FIREBIRD:
|
|
PByte(VSQLVar^.SQLData)^ := Byte(AParams[ParNr].AsBoolean);
|
|
PByte(VSQLVar^.SQLData)^ := Byte(AParams[ParNr].AsBoolean);
|
|
else
|
|
else
|