当lbb(类别表)主表移动时,我不想jbxx(基本信息)从表, 相关的数据库全都显示出来。大约有5000条记录吧, 也就是一个类别里头有5000条记录。一个form最多显示50条, 在form上加上了上一页、 下一页。当点击下一页取出50条显示出来。 能不能执行到adoquery.active:=True;
时不把所有的记录都取出来。 只取出50条,以后 点击下一页时再显示出来
时不把所有的记录都取出来。 只取出50条,以后 点击下一页时再显示出来
解决方案 »
- 为什么Delphi XE的TIniFile不是以unicode字符串保存的呢
- group by 语句在 access 中的问题
- 如何把文件上传到数据库/下载到本地!!
- 有没有人能帮我解释一下这个功能是如何实现的呀
- 请问大家哪儿有没有上传软件的地方,可供随时在互联网各个终端下载,最好是免费的哟!
- 如何不使用ADO和BDE读取ACCESS的数据?我的信誉分是109,如果可行,我是肯定给分的!!!
- delphi 制作PDF水印
- 唉,使用QuickReport果然是费力不讨好,请大家推荐一个好的报表控件,没时间上网查了
- 有一40M的硬盘,用Win98启动盘启动到Dos状态,是否完全可以访问到硬盘的全部容量?
- delphi6 和5有很大不同么????
- Query删除数据库的问题
- 用ADOQuery删除记录的问题
必须限制每次提取到客户端的记录数.
[email protected]
当主表移动时, 会执行哪些操作或方法。 我记得有个事件是把对应相应从表的数据过滤出来我想只显示过滤的前50条记录。 这样做可以吗?
但是对于图片的形式我不态了解;
还有,请教各位ado的异步执行模式是什么原理,请多赐教!
可以用语句select top 100 * from MyDb,然后再用cursor取后面的数据
这样速度会很快的
2.写sql语句只取需要的数据,比如一页50行,就只取50条记录。其余的翻页时再取。
1、在select 语句中不要加入图片字段,用户想看图片时可以考虑通过双击弹出另一个窗体的方法来专门显示图像,这样可以解决缓冲的问题
2、想分页显示,那么可以利用这个表的主关键字(注意:主关键字必须是一个字段,两个字段或两个以上的复合主键不能用这种方法)来排序,查询语句是这样的: select top 30 field1,field2 from table1 where key>:Value
你每次点击下一页时,先执行一个adoquery的last操作,放一个变量来取得最末一条记录的值,再把这个数值放到select语中,就可以选择下一页的数据了
3、如果想做得好一些,那么需要另放一个adocommand的控件,通过它来一次性取得记录的总条数,再除以每页多少条记录来得出总页数,这样最到最末一页时就可以控制下一页的按钮变灰
4、如果单纯只是按下一页存取,这都简单,但如果客户想按“上一页”时取出上一页的记录,这时select语句就要复杂一些,有兴趣再和我讨论
procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
begin
if ADODataSet1photo.BlobSize <> 0 then
LoadFromTField
else Image1.Picture := nil;
end;//从数据库得到图形,显示在Image1中。
procedure TForm1.LoadFromTField;
var
jpeg : TJPEGImage;
BS : TADOBlobStream;
begin
BS := TADOBlobStream.Create(ADODataSet1photo, bmRead);
jpeg := TJPEGImage.Create;
try
jpeg.LoadFromStream(BS);
Image1.Picture.Graphic := jpeg;
//Image1.Picture.Assign(jpeg);也是对的。
finally
jpeg.Free;
BS.Free;
end;
end;这个方式是在记录被浏览时,动态的从数据库中提取图片信息。其速度很快很快。
我的程序有退格的,传上来后居然全部左对齐了。
做的歪···
在网站上的大数据量的展示是分页来实现的,一般都会开辟一个缓冲,来存放后面的数据,比如一次去50条,那么第一次就会去150条左右,有100条是在缓冲中,这样可以满足数据上的需求。
提取到内存来,尝试为100或者左右的值,你会发现速度大大加快,而且内存占用大大减少。 God Luck!
1)新增========== INSERT (只处理一条记录)
2)修改========== UPDATA (只处理一条记录)
3)删除========== DELETE (只处理一条记录)
4)查询========== SELECT (符合要求的记录)前三种情况SQL执行的很快没有问题
第四种情况你只有限制条件,速度也不会是大问题的。不论什么操作都先把大数据集打开,编程方便,使用不便!从表加内部序列号,用TOP N分组 或者根据序号加限制条件。