- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过包含整数的 StringField 对 ClientDataset 进行排序。这些整数用作发票上的项目编号。当我使用简单索引按该字段对 ClientDataset 进行排序时,结果如下:
1
10
100
101
11
110
111
12
120
但是我希望它们像 IntegerField 一样排序:
1
10
11
12
100
101
110
111
120
有没有快速的方法来做到这一点?
最佳答案
您无需将现有字段更改为其他类型。相反,一种实现您想要的方法是在 CDS 上定义一个 ftInteger 字段,它是 FieldFind fkInternalCalc 的字段。然后在 CDS 的 OnCalcFields 事件中,通过将字符串字段的值转换为整数来设置字段的值。
设置计算字段的 find tp fkInternalCalc 的要点是 CDS 可以在 fkInternalCalc 字段上建立索引,因此可以按 fkInternalCalc 字段排序,这与 fkCalculated 字段不同。因此,通过在添加的 fkInternalCalc 字段上对 CDS 进行索引,记录应按数字顺序显示,而不是字符串字段的字母数字顺序。
代码:
procedure TForm1.CDS1CalcFields(DataSet: TDataSet);
begin
if CDS1IntField.IsNull then
CDS1IntField.AsInteger := StrToInt(CDS1StringField.AsString);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
CDS1.CreateDataSet;
for i := 1 to 100 do
CDS1.InsertRecord([IntToStr(i)]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CDS1.IndexFieldNames := 'IntField';
end;
关于delphi - TClient数据集: Is there a way to make a StringField behave like an IntegerField when setting an index?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48060840/
能否在不丢失数据的情况下重构 TClientDataSet XML 文件?是否有任何演示应用程序或源代码可以展示如何进行此类重组? 最佳答案 是和否,xml 文档是使用 XLST 进行转换的,因此它需
对于 WCF 客户端,我有一个 IServiceProxyFactory 接口(interface)来设置凭据。 public interface IServiceProxyFactory {
我是一名优秀的程序员,十分优秀!