如何才能让用sort命令排序过的Query表可以修改?(80分)

  • 主题发起人 主题发起人 snows
  • 开始时间 开始时间
S

snows

Unregistered / Unconfirmed
GUEST, unregistred user!
我用SQL的sort命令排序后,只要我一移动光标,程序就出错,提示数据库
为只读,有什么办法能使Query表可以修改?
 
你的问题好奇怪,我从来没有碰到这样的问题,你把数据库的用户权限改一改,试试!
也许你的问题并不是在数据库,好好检查程序。
 
例:
selecte * from temp as temp
sort by no
其中第二句是在程序中执行,通过一个Combox下拉框进行排序
执行完后,只要你在DBGrid中移动,就提示数据库只读?
to jollyRoger:
请问怎么改权限?
 
其实你利用TUpdateSQL这可以解决只读的问题了。
 
Query返回数据能修改主要要看Requestlive和CanModify两个属性是否正确,而且CanModify是只读属性,由Delphi确定,跟你所写的SQL有很大关系
 
好象需要重新引入一个query控件,将原来的QUERY信息移植过来就可以了。
我刚刚从一本书上学到,但是还不完全明白。:P
 
fatherlaw说的有的意思,请再说详细点,分我有,不够再加
 
query.dsedit;改变只读状态.
不过好象不是这个缘故.我觉的你好象用了缓存更新.排完序的表并不存在.只是在缓存中
当然是只读的.用 query.applyupdate.把数据从缓存写回数据库中.
最好加上 query.reflash;
 
selecte * from temp as temp
sort by no
其中第二句是在程序中执行,通过一个Combox下拉框进行排序
~~~~~~~~~~~~~~~~~~~~~~~~~什么叫“第二句是在程序中执行”是sort by no吗?
那样的话是错了你必须selecte * from temp as temp sort by no整局执行。
 
是 query.refresh;
 
to 阿蒙:
我并没有用缓存更新,听你们说的似乎你们用的怪好,让我再看看程序是不是我的
 
用TUpdateSQL吧!
 
各位大虾,请恕我无知我从来没见过select ... sort by..这样的语句,如
果用SQL排序应用Order by不过这种方法不好每一次都将数据重取一次,比较
好的方法是用TClientDataSet和TDataSetProvider相辅助对索引快速排序。
 
我也没见过。不过应该注意的问题还是知道一点的:)
 
用 TQuery 和 TUpdateSQL 均可实现。

注意:TQuery.RequestLive 属性设为:True。

TUpdateSQL 把缓冲的更新应用到数据库上。它可以提供更多的安全性。
 
用order by子句限定的query有可能返回只读results,建议用TupdateSQL
or you can create the index for the fields which appeared in
your sort sub-clause,then set the 'index'property of Tquery.
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部