delphi stringlist

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:03:03
查询class表,得到下面的记录信息
select a,b,c from class

a b c
收帐 公司1 财务核算部门
收帐 公司1 往来单位
收帐 公司2 财务核算部门
收帐 公司2 往来单位
付账 公司1 财务核算部门
付账 公司1 往来单位
付账 公司2 财务核算部门
付账 公司2 往来单位

我如何写代码得到下面的结果?
收帐 公司1 财务核算部门,往来单位
收帐 公司2 财务核算部门,往来单位
付账 公司1 财务核算部门,往来单位
付账 公司2 财务核算部门,往来单位

下面是我写的代码:
Itemkbm.First;
vpreCode := Qs(Itemkbm.FieldByName('FSubjectCode').AsString);
vPrecompany := Itemkbm.FieldByName('FCompanyID').AsInteger;

while not Itemkbm.Eof do
begin
SubjectCode := Qs(Itemkbm.FieldByName('a').AsString);
companyid := Itemkbm.FieldByName('b').AsInteger;
caption := Itemkbm.FieldByN

貌似你是刚开始添加了一行,然后‘往来单位'时又添加了一行,所以会有两行同一个公司的。
不要用append,直接取代吧。strings[i]:=strings[i]+caption;

最好用存储过程来查,或者sql语句来写

建议从数据库的角度优化业务逻辑,如加一张表

我有一个方法,可能不是最优的:
就是把你现在的结果集与源数据集作差运算,即可得到你想要的结果。
集合的差运算知道么?
B-A={B中的元素x|x属于B但是x不属于A}