一、表结构1、表TK结构:
N1:string; ->名称
N2:string;->内容
t11:string:->类型
tk表存有记录30000条。2、表f-leixin结构:
F1:string;->标识名
leixin:string:->类型(有200个不同类型)
YTI:integer;->记录数
LX表存有不同“类型”的记录200条。3、我用ADO连接ACCESS数据库。
二:要实现的目的。
我想把TK表里符合f_leixin表类型的记录全部查询出来, 并将查询结果进行计数, 然后将值存入
f_leixin表的YT字段。
三: 我自己的编程
我主要是用加循环遍历的方式,用一条SQL语句,先进行查询统计、替换,然后循环f_leixin表,
这样查询的字段值就会根据随着LX表的指针移动进行变动,就实现了上述要求。
代码如下:
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
lx1:=trim(lx1);
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(*) as lnfen2 from tk where t11 like ''%'+lx1+'%'' group by t11');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;
四:问题???]
用我自己的代码很慢,很慢。在网上别人告诉我这样可以:begin
adotable2.Open;
adotable2.edit;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.Add('update f_leixin set yti=(select count(*) from tk where f_leixin.leixin=tk.t11 )');
ADOQUery2.ExecSQL;
adoquery2.sql.clear;
adoquery2.sql.add('select * from f_leixin');
adoquery2.open;
END;
但是执行不了好像ACCESS数据库不支持此SQL语句。请高手帮我想个办法,我搞了一夜啊。!!!!!我在大富翁论坛上别上是这样帮我的但是不行啊:》》》》》
》》》》
我是20082008!!!!!来自:xzh2000, 时间:2003-4-30 8:36:00, ID:1816056
终于搞清楚你要做什么啦,
其实问题时将表结构的创建语法及少许测试数据贴出来大家会更乐意帮你测试按常规猜,你的TK.tt1与f_leixin.leixin内容是一样的。update f_leixin
set yti = (select count(*) from tk group by tt1
where f_leixin.leixin=tk.tt1)update f_leixin
set yti=(select count(*) from tk where tk.t11 = f_leixin.leixin )因为是ACCESS,测试性能的方法很麻烦。
来自:20082008, 时间:2003-4-30 8:47:00, ID:1816097 | 编辑
用哪一句都不行呀??我在ACCESS里调试:
提示不能在查询数据里进行更新。原因或者是主建冲突,
或者是锁定冲突;
或者是有效性冲突;
但是我的TK表里有ID,F-LIXIN表里我把ID删除了也不行啊。???你帮我吧。
来自:xzh2000, 时间:2003-4-30 8:51:00, ID:1816113
那可能ACCESS就不支持这种操作,
用SQL吧。
来自:20082008, 时间:2003-4-30 8:54:00, ID:1816129 | 编辑
可是我的后台数据库用的是ACCESS数据库啊。我不想转呀你帮帮UP以下对了怎么给你分呀。好像ACCESS数据结果统计出来了就是不知替换的问题???
你帮帮我吧我很急的???
N1:string; ->名称
N2:string;->内容
t11:string:->类型
tk表存有记录30000条。2、表f-leixin结构:
F1:string;->标识名
leixin:string:->类型(有200个不同类型)
YTI:integer;->记录数
LX表存有不同“类型”的记录200条。3、我用ADO连接ACCESS数据库。
二:要实现的目的。
我想把TK表里符合f_leixin表类型的记录全部查询出来, 并将查询结果进行计数, 然后将值存入
f_leixin表的YT字段。
三: 我自己的编程
我主要是用加循环遍历的方式,用一条SQL语句,先进行查询统计、替换,然后循环f_leixin表,
这样查询的字段值就会根据随着LX表的指针移动进行变动,就实现了上述要求。
代码如下:
while not adotable2.eof do begin
lx1:=adotable2.fieldbyname('leixin').AsString;
lx1:=trim(lx1);
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.add('select count(*) as lnfen2 from tk where t11 like ''%'+lx1+'%'' group by t11');
adoquery2.Open;
lnfen2:=adoquery2.fieldbyname('lnfen2').asinteger;
adotable2.Edit;
adotable2.fieldbyname('yti').asinteger:=lnfen2;
adotable2.Next;
end;
end;
四:问题???]
用我自己的代码很慢,很慢。在网上别人告诉我这样可以:begin
adotable2.Open;
adotable2.edit;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.Add('update f_leixin set yti=(select count(*) from tk where f_leixin.leixin=tk.t11 )');
ADOQUery2.ExecSQL;
adoquery2.sql.clear;
adoquery2.sql.add('select * from f_leixin');
adoquery2.open;
END;
但是执行不了好像ACCESS数据库不支持此SQL语句。请高手帮我想个办法,我搞了一夜啊。!!!!!我在大富翁论坛上别上是这样帮我的但是不行啊:》》》》》
》》》》
我是20082008!!!!!来自:xzh2000, 时间:2003-4-30 8:36:00, ID:1816056
终于搞清楚你要做什么啦,
其实问题时将表结构的创建语法及少许测试数据贴出来大家会更乐意帮你测试按常规猜,你的TK.tt1与f_leixin.leixin内容是一样的。update f_leixin
set yti = (select count(*) from tk group by tt1
where f_leixin.leixin=tk.tt1)update f_leixin
set yti=(select count(*) from tk where tk.t11 = f_leixin.leixin )因为是ACCESS,测试性能的方法很麻烦。
来自:20082008, 时间:2003-4-30 8:47:00, ID:1816097 | 编辑
用哪一句都不行呀??我在ACCESS里调试:
提示不能在查询数据里进行更新。原因或者是主建冲突,
或者是锁定冲突;
或者是有效性冲突;
但是我的TK表里有ID,F-LIXIN表里我把ID删除了也不行啊。???你帮我吧。
来自:xzh2000, 时间:2003-4-30 8:51:00, ID:1816113
那可能ACCESS就不支持这种操作,
用SQL吧。
来自:20082008, 时间:2003-4-30 8:54:00, ID:1816129 | 编辑
可是我的后台数据库用的是ACCESS数据库啊。我不想转呀你帮帮UP以下对了怎么给你分呀。好像ACCESS数据结果统计出来了就是不知替换的问题???
你帮帮我吧我很急的???
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货