在同一form中,有 query 的SQL查询的结果(在TDBgrid中),怎样在DBedit中修改(100分)

  • 主题发起人 主题发起人 allen72
  • 开始时间 开始时间
A

allen72

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在一个FORM中通过按一个Button 使DBedit 修改查询结果,但好象是只读的,Requestlive
是true;

还有怎样在TDBgrid中不同字段用一同的格式,如 $200.322 , ¥323.45  我用一个*.dbf
的数据库
 
就在一个from 中,有一个表(用Query ,DBgrid, datasource)还有几个DBEDIT对应表内容
BUTTON1 键是一个SQL查询功能,button2 是修改功能,对查询结果进行修改,
就是怎样实现修改???
 
修改query的资料
query1.Requestlive:=true;
query1.edit;
query1.fields[0].asstring='xxx'
query1.post;
格式显示
TNumericField都有Displayformat
如 $200.322 Displayformat='$000.000'
¥323.45 Displayformat='¥000.000'

 
to allen72: RequestLive=True的话怎么会不行呢?
 
还是不行,加了query1.edit 就会出错说不能给一个只读库修改,我找不出什么地方设了只读??
我没用TDBGRID,库文件也是正常属性
 
TNumericField 在哪儿啊!!????

 
RequestLive := True 的确并不保证结果集能够修改,最终能否修改必须通过判断 CanModify 属性。
由于数据库引擎和 SQL 语句语法的不同,CanModify 可能表现不一!
对于修改复杂的 Query 结果,可以考虑使用 TUpdateSQL 。
 
>>TNumericField 在哪儿啊!!????
在db.pas里,你要用的话强制类型转换就行了:
TNumericField(Query1.Fields[0]).DisplayFormat := ……;
 
你有没有调用Query1.ApplyUpdate???
 
不会是你的sql里有计算统计之类的字段吧,那就可能根本改不了
 
我只在SQL中一个 'select * from hhh ' 和 'order by num' 
 
啊啊啊,我知道了,原来是我在SQL中用了‘ order by XXX ’;不用就可以修改
可又有了新问题,我的不同方法的排序怎么办!!!
 
我和你碰到的问题一样的,你可以用一下UpdateSql,对于单表的操作也很简单的,总之,
你考虑一下updatesql.
 
可以具体一点UpdateSql吗?
 
用Query的updateobject指定一个updatesql组件,你还要点updatesql组件的右键,产生sql语句。
很容易的.你把Query的cachedupdates设为True,运行后现在就可以修改了最后提交时不要用post
用Query.applyupdates就可以我刚才又试过了。
 
genesis: 你的方法可行。不过updatesql中的insertSQL,DeleteSQl,ModifySQl中的SQL
语句是不是用来改动。写入或删除 记录的??? 修改的Buttonclick怎么写???
 
因为Db控件是数据捆绑的,你只要在相应的Dbedit中修改完成后,post用applyupdates
就行了。不过,你也可以在数据中直接写上Query.Edit,这时也处在编辑状态,
保存时用applyupdates.上面自动生成的sql语句和你想的是一样的。用updatesql
时一定要Cacheupdates设为true;
 
多人接受答案了。
 

Similar threads

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