当我们将数据库组件从ODBC Express交换到ADO时,我们遇到的最大问题之一是ODBC Express“正确修剪”了CHAR字段的结果而ADO没有。
CHAR字段填充整个指定的字段长度,因此当我们使用ADO查询它们时,会获得大量额外空格。
我们有很多数据库和代码,基本上取决于被修剪数据库的结果。
我们的解决方案是编辑delphi源DB.pas并从TField和TStringField更改getasstring方法。
这有效,但不是一个可靠的解决方案是否有另一种方法可以在不更改delphi源代码的情况下修剪这些结果?
当切换到ADO时,我们决定不直接使用TADOQuery类,而是我们自己派生:
TOurAdoQuery = class(TADOQuery)
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function ExecSQL: Integer;
procedure Open;
end;
答案 0 :(得分:4)
从TStringField下降,类似于:
TYourStringField = class(TStringField)
protected
function GetAsString: string; override;
end;
implementation
function TYourStringField.GetAsString: string;
begin
Result := TrimRight(inherited GetAsString);
end;
注册你的课程(你可能会在初始化部分这样做):
RegisterClass(TYourStringField);
将此行放在通常为应用程序初始化内容的位置:
DefaultFieldClasses[ftString] := TYourStringField;
就是这样,下次创建数据集时,所有ftString字段类型都将使用TYourStringField定义。