平台里的sql构造器是这样子的(你可以跟踪调试看下他的实现)
业务模型\系统空间\用户界面基础\界面库\系统接口\简单SQL条件构造窗体
procedure TSimpleSQLFilterEditor.EditorToText(var AText: string);
const
cBinaryText = '%s %s %s';
cUnaryText = '%s %s';
cBetweenText = '%s %s %s AND %s';
var
lBizField: TBizField;
lRightEdit : String;
begin
AText := '';
if FLeftEdit.ItemIndex = -1 then Exit;
lBizField := CurBizField;
case OprKind of
TOprKind.okBinary:
begin
if (SysUtils.SameText(FRelationOpr.Text, 'LIKE')) and
(copy(FRightEdit.Text,1,1) <> '%') and (copy(FRightEdit.Text,length(FRightEdit.Text),1) <> '%') then
lRightEdit:= '%'+FRightEdit.Text+'%'
else
lRightEdit:= FRightEdit.Text;
AText := Format(cBinaryText, [lBizField.Origin.FullID, FRelationOpr.Text,
TextToValue(lBizField.DataType, FIsINOpr, lRightEdit)]);
end;
TOprKind.okUnary:
AText := Format(cUnaryText, [lBizField.Origin.FullID, FRelationOpr.Text]);
TOprKind.okBetween:
AText := Format(cBetweenText, [lBizField.Origin.FullID, FRelationOpr.Text,
TextToValue(lBizField.DataType, FIsINOpr, FRightEdit.Text),
TextToValue(lBizField.DataType, FIsINOpr, FBetweenEdit.Text)]);
else
OprKindError;
end;
end; |