|
@@ -1424,27 +1424,28 @@ begin
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
-// Specific functions
|
|
|
|
|
|
+// Specific functions
|
|
|
|
|
|
-procedure TCustomSqliteDataset.SetDetailFilter;
|
|
|
|
- function FieldToSqlStr(AField: TField): String;
|
|
|
|
|
|
+function GetFieldEqualExpression(AField: TField): String;
|
|
|
|
+begin
|
|
|
|
+ if not AField.IsNull then
|
|
begin
|
|
begin
|
|
- if not AField.IsNull then
|
|
|
|
- begin
|
|
|
|
- case AField.DataType of
|
|
|
|
- //todo: handle " caracter properly
|
|
|
|
- ftString, ftMemo:
|
|
|
|
- Result := '"' + AField.AsString + '"';
|
|
|
|
- ftDateTime, ftDate, ftTime:
|
|
|
|
- Str(AField.AsDateTime, Result);
|
|
|
|
- else
|
|
|
|
- Result := AField.AsString;
|
|
|
|
- end; //case
|
|
|
|
- end
|
|
|
|
|
|
+ case AField.DataType of
|
|
|
|
+ //todo: handle " caracter properly
|
|
|
|
+ ftString, ftMemo:
|
|
|
|
+ Result := '"' + AField.AsString + '"';
|
|
|
|
+ ftDateTime, ftDate, ftTime:
|
|
|
|
+ Str(AField.AsDateTime, Result);
|
|
else
|
|
else
|
|
- Result:=NullString;
|
|
|
|
- end; //function
|
|
|
|
|
|
+ Result := AField.AsString;
|
|
|
|
+ end; //case
|
|
|
|
+ Result := ' = ' + Result;
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ Result := ' IS NULL';
|
|
|
|
+end;
|
|
|
|
|
|
|
|
+procedure TCustomSqliteDataset.SetDetailFilter;
|
|
var
|
|
var
|
|
AFilter: String;
|
|
AFilter: String;
|
|
i: Integer;
|
|
i: Integer;
|
|
@@ -1456,7 +1457,7 @@ begin
|
|
AFilter := ' where ';
|
|
AFilter := ' where ';
|
|
for i := 0 to FMasterLink.Fields.Count - 1 do
|
|
for i := 0 to FMasterLink.Fields.Count - 1 do
|
|
begin
|
|
begin
|
|
- AFilter := AFilter + IndexFields[i].FieldName + ' = ' + FieldToSqlStr(TField(FMasterLink.Fields[i]));
|
|
|
|
|
|
+ AFilter := AFilter + IndexFields[i].FieldName + GetFieldEqualExpression(TField(FMasterLink.Fields[i]));
|
|
if i <> FMasterLink.Fields.Count - 1 then
|
|
if i <> FMasterLink.Fields.Count - 1 then
|
|
AFilter := AFilter + ' and ';
|
|
AFilter := AFilter + ' and ';
|
|
end;
|
|
end;
|