我做了一个两层的CS系统。
有这样一个问题:
首先,我从数据库服务器Select一个数据集: select ID,Min(value) from table1 group by ID.
然后用户看到最小值以后,会根据其中一个ID去查询这个ID对应的所有value:
select value from table1 where ID := 用户选择的一个ID.如果有其他用户在这两次查询中加入了新的记录,并且使有些ID的最小值发生了变化,那么就会出现一个问题!
第2次的查询结果和第一次的不相符合!!!
有这样一个问题:
首先,我从数据库服务器Select一个数据集: select ID,Min(value) from table1 group by ID.
然后用户看到最小值以后,会根据其中一个ID去查询这个ID对应的所有value:
select value from table1 where ID := 用户选择的一个ID.如果有其他用户在这两次查询中加入了新的记录,并且使有些ID的最小值发生了变化,那么就会出现一个问题!
第2次的查询结果和第一次的不相符合!!!
解决方案 »
- 如何在delphi中透明显示有多个背景色的GIF文件??
- 怎样把24bit bmp,ico,wav封装在dll中,在程序中如何调用
- 如何在DLL中创建MDI子窗体
- 那个更好
- nt 中的打印问题
- 帮我推荐一个delphi的安装制作工具
- 如何在程序中给ODBC建立一个user DSN
- 怎样用nmstrmserv接收数据时能用progressbar显示进程?60分奉上!60分奉上!60分奉上!
- 用Spcomm , 在收串口数据时,发现十六进制数'11'收不进来! 代码如下::::
- 用delphi创建的excel 文件,能在创建时对他加密吗?
- 一个数据库小问题,高手请进……,在线等之
- SQL General Error. ORA-00932:資料類型不一致。
还不如,先查出 select distinct id from table1 ,让用户选,
然后再查对应用户选择的Id的具体明细,然后按value 给他排个序就可以了。
就是把所有数据都取出来放在缓存中,然后用户选择了一个Id后,
在对缓存中的数据进行过滤,这样就能保证前后的数据是一致的了。
再说,你上面的查询select value from table1 where ID := 用户选择的一个ID.
仅仅是查出对应id的记录(也许这个id已经不是最小的那个了),但有什么关系呢,是用户选择了这个id来查看的啊,数据本来就是不停更新的啊
select value,id from table1 where ID in (select ID,Min(value) from table1 group by ID
)这样能否解决LZ的困惑呢?
所以第一个查询不能省。MoveFirst的方法也用了两次查询,只有间隔时间短了!
用什么方法可以确保两次查询的结果一致了。
然后进行2次查询。