假如有名字如下:
Abrandy
Alan
.....
Atala
Azyne
Ben
Benny
Bin
Bonny
....
Cindy
用户在TEDIT上键入B,则在TDBGird上列出所有姓名是B的,且,列出姓名是A中的最后俩个(Atala, Azyne)
当用户接着在TEdit键入i,则列出姓名是Bi的,且列出姓名在Bi前的最后俩个 (Ben, Benny)问题一:如何得到符合搜索标准之前的俩个记录?
问题二:不想每按键一次,就去Server上query一下,比如按B了后,Bi已经在客户端了,不应该再去query了谢谢!
Abrandy
Alan
.....
Atala
Azyne
Ben
Benny
Bin
Bonny
....
Cindy
用户在TEDIT上键入B,则在TDBGird上列出所有姓名是B的,且,列出姓名是A中的最后俩个(Atala, Azyne)
当用户接着在TEdit键入i,则列出姓名是Bi的,且列出姓名在Bi前的最后俩个 (Ben, Benny)问题一:如何得到符合搜索标准之前的俩个记录?
问题二:不想每按键一次,就去Server上query一下,比如按B了后,Bi已经在客户端了,不应该再去query了谢谢!
解决方案 »
- 菜鸟问题,大家帮忙啊。。。
- fastreport 使用帮助
- ▲▲▲▲▲用QRreport如何设计这样的报表???▲▲▲▲▲
- 关于制作启动画面中碰到的问题!
- 接口的理解问题?
- 这个寓言说明了什么道理?(各舒己见!)
- 请问delphi里的compile和build有什么区别啊,都能产生可执行文件?
- 紧急求救,谁有Delphi7高效数据库程序设计光盘资料
- edit.text把2000显示成2,000怎么换回来?
- 用DBGrid修改查询结果,如何禁止换行时(按上下键或按鼠标),修改结果自动提交(POST)
- invalid argument to date encode
- 利用DBNavigater控件如何向DBGrid空间里添加不重复记录
二:一次将所有数据拿到本地数据集中即可。一:在本地数据集中进行如下操作,
1、首先要排好序,
2、在当前结果中定位到第一个符合条件的记录
3、记录下来此记录前的两条记录的值(Atala,Azyne)
4、使用filter,filter的条件设置为包含此次查询条件及前两条记录(filter='Filed=''A'' or filed=''Atala'' or filed=''Azyne''')
5、filtered=true即可得到包含B且包含Atala,Azyne的记录当然,以上办法是在数据量不大的情况下进行的(几万条数据以内),若数据量较大的话,只好在数据库中进行了,但思路都是一样的
二,当顾客按B的时候,你可以
select name from mytable where name > 'B' order by name top 10
但在B前面的俩个你怎么取?你说的or filed=''Atala'' or filed=''Azyne''')
你并不知道前俩个记录是Atala和Aryne, 顾客要按的是D呢?你还是Atala?
(select id from mytable where name > 'B' order by name top 10) as b
inner join mytable as a on a.id<b.id desc
如果要合并显示union就可以了
(select id from mytable where name > 'B' order by name top 10) as b
inner join mytable as a on a.id<b.id order by a.id desc
go
insert into t
select 'Abrandy' union
select 'Alan' union
select 'Amfaf' union
select 'Anfds' union
select 'Atala' union
select 'Azyne' union
select 'Ben' union
select 'Benny' union
select 'Bin' union
select 'Bonny' union
select 'Cindy'
gocreate procedure p (@s varchar(32))
as
declare @t table (id int identity(1,1),s varchar(32))
insert into @t (s) select s from t order by s select top 2 * from @t
where id < (select min(id) from @t where substring(s,1,len(@s)) = @s ) order by id descgoexec p 'B'exec p 'Bi'drop procedure pdrop table t