gpt4 book ai didi

database - 覆盖 TFields 和 TStringField 中的 AsString

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:39 27 4
gpt4 key购买 nike

当我们将数据库组件从 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;

最佳答案

从 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 定义。

关于database - 覆盖 TFields 和 TStringField 中的 AsString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29028041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com