1. 报表要显示就用一个,打开了 RunningSum 属性 做“在组之上”的 文本框就可以了
2. 窗体显示不能修改数据集 的话 就用 all join
select * from tests where serialno='xxx' .........保存为查询 "serialtest"
select b.count([id]) as 第n次测试, a.* from serialtest as a, serialtest as b
where a.testStart >= b.testStart
group by a.id
3. 窗体动态显示就
在文本框里用 =locateCount([id])
并建立 public function locateCount()
locateCount = dcount( ........)
end function
但是,你只是为了 《显示》这个每个serial的第几次测试编号的话,会挺浪费cpu资源的!
即使你可以 在 触发测试时,插入记录时,就插入 第几次测试
nz(dcount("[test.主键]", "测试表", "[serial]='" & serialnum & "'"),0)+1 或者
nz( dmax("[第几次]","测试表","[serial]='" & serialnum & "'"),0)+1
不过都是很浪费计算资源的。
看你 数据发现几秒钟就有新纪录的,告诉你下面这些!
不过你认为
- 没有用户投诉反应慢就交货收钱,
- 你的电脑有多余的资源可以浪费 或 你永远不会用 云数据库/云计算,
- 你没有准备当系统分析师,
- 你认为未来你不会做每秒有1000笔交易的,
以上随便一个原因,都可以不用往下看了!
告诉你,最快的处理方式 是
建 serial 表,含 id 和 一个 已测次数, 和 其他统计信息字段(如 成功次数,首次次成功测试次数,成功比率 等)
每次测试 保存在 test 表,含serialid字段,新加一个“测试次数”字段;
当 有测试结果就 更新 统计信息;
最关键的就是 插入新 记录的时候,就从serial表的 “已测次数”上 更新加1,保存在 serial表 和 test表。
记得要用数据库引擎的事务处理(BeginTrans, CommitTrans, RollBack 等,sql 数据库也需要)。