dbgirdeh1控件的使用问题(急,急,急,急,急)(100分)

W

wlt3022

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在单击某一单扭时击发他查询数据,用的ClientDataSet1控件查询,
然后在ClientDataSet2,DataSource2,dbgirdeh1控件来显示查询结果,
再在dbgirdeh1控件的结果,当我输入某行某一单元格时,合计会随着改变,如以下数
据:
编号 名称 数量 单价 合计
001 A商品 100 12.00 1200.00
002 B商品 200 1.00 200.00

当用户输入完以后,按保存按扭,系统就把dbgirdeh1控件的内容保存在一个表中。
总的来说以上有3个问题。需要高手帮忙解决的:
1.如何用dbgirdeh1控件来显示ClientDataSet1控件查询的数据?
2.在dbgirdeh1控件的数据中合计行如何动态显示合计数?
3.如何把dbgirdeh1控件的数据保存起来?
以上再好有代码+解释,
多谢各位大哥大姐,指点指点小第了!
 
呵呵,没用过clientdataset ,不过dbgrideh 用过.
2,如何显示合计数, 估计是重新refresh 下就可以了. 这个dbgrideh 的帮助中有介绍
或者重新计算下sumlist 里的数据. 我用dbgried 都是动态显示表的,列不明确,所以就写了个过程来 动态的显示 合计 .
 
你有dbgrideh 的帮助文件吗?是中文的
 
中文好像有啊. 你可以加我
QQ 250915023
msn:xuminchat@hotmail.com
 
就这三个组件就行了:clientdataset1,datasource1,dbgrideh1
查询:
ClientDataSet1.Close;
ClientDataSet1.CommandText := 'select * from 表 where 条件'
ClientDataSet1.Open;
显示:
设置dbgrideh1的datasource为datasource1,设置datasource1的dataset为ClientDataSet1

合计:
添加一个Calculated字段,然后在clientdataset1的oncalcfields事件里写
dataset.fieldbyname('合计').asfloat :=
dataset.fieldbyname('单价').asfloat *
dataset.fieldbyname('数量').asfloat;
 
hongxing_dl,真是高手,厉害,
还有一个保存呢?
 
保存要看你是用的什么样的sql语句查询出结果的,用 clientdataset1.applyupdates(-1)就可以将本次所做的修改提交到服务器
 
保存
ClientDataset1.applyUpdate(-1)
 
行吗,试试看
 
dataset.fieldbyname('单价').asfloat
我试了。出现ClientDataSet1:Field'单价',not found.
对了,查询数据的时候只有,
编号 名称 数量 单价 合计
001 A商品
002 B商品
数量、单价是由用户输入的。合计是自动统计的。
查询时 用ClientDataSet1查询。是没有 数量 单价 合计 的字段。只有到了只个
dbgirdeh1控件时才有的。保存到另外一个表时才有。
 
分再加50。谢谢了
 
兄弟,应该是这样子的:
关于"单价"字段找不到的问题,可能是你理解错误,你得将它替换成你表里的具体的单价所指的字段名,还有,你既然要输入单价,数量,那么在查询的时候就应该有这两个字段存在才行,不然你输入后放到什么地方?对吧?
比如你的查询应该类似这样子:
select 编号,名称,数量,单价 from 表
 
哦,
可以显示了。但数量、单价,不能写入内容,其他的可以输入。请问这是怎么回事。嘛烦高手说一下了。
 
hongxing_dl 你好,我是存放在另外一个表.
 
统计的时候 应该用 dbfieldname ,就是字段名称,不是用你后来自己写的 中文名字.
关于数据修改后的统计:
如果你使用SetRange或ApplyRange事件,SumList 将不能跟踪数据集中发生的变化。但可以调用 SumList.RecalAll 方法。
在非BDE数据集的主/明细表中,SumList 不能跟踪数据变化。在主数据集激活状态数据集发生变化后,调用 SumList.RecalAll 方法。
在任何其它情况下,如果你发现了其它SumList的计算值不正确,你都可以调用 RecalAll 方法。
 
你要录入的应该为主表才对....
加到我的队列中来吧,有些东西太难说清楚了,一说又扯远了...
加入方法见我的资料上的联系方式
呼过来的时候麻烦声明delphi
 
顶部