sql+d7
消费明细表:单据号(varchar),商品编码(varchar),数量(int),单价((money)(都不允许为空)
商品资料表:商品编码,商品名称,规格,单位,单价,
但在软件录入界面是
商品编码,商品名称,规格,单位,数量,单价,合计
其实 商品名称,规格,单位这几个字段只是显示录入界面的,不保存到数据库消费明细表中,合计是个虚拟增加的计算字段(要求数量*单价的和),
在qryxfmx的on calcfields中加了
qryxfmx.fieldbyname('sumje').value:=qryxfmx.fields[2].assinteger*qryxfmx.fields[3].assfloat;
我为了不让DBGRIDEH自己一到下一行就自己保存了,把
qryxfmx.lock type=ltBatchOptimistic了在录入界面的on show 事件中,open qryspzl open qryxfmx;qryxfmx.append;后进行录入
现在有以下问题请大家帮我解决下
1.如果在on calcfields中加如那段代码,则录入界面打开是要么提是 ''''is not
valid integer value ,要么就提示''''is not alid float value 我大概知道这是因为在刚打时,数量或单价的赋值为空早造成的,我尝试了在不同的地方打开qryxfmx但都没解决,只要在qryxfmx的on calcfields中加了
qryxfmx.fieldbyname('sumje').value:=qryxfmx.fields[2].assinteger*qryxfmx.fields[3].assfloat;
就报错
2.在我软件界面中例如完单价后,按回车就有个提示:是否继续? 如果是则 qryxfmx.append,焦点又回到了编码位置 dbgrid自动加一空行继续录入,如过不录入了按否 就能正常保存,但有时候客户已经录入完毕了,由于误操作,本来不想录入了,但不注意按了一下是,这时qryxfmx.append;dbgrideh中又多了一行空行,这时如果一按保存,就提示不允许插入null值,这个我也知道,是因为我的后台数据库中的字段不允许为空造成,但我不知道怎么能避免这个问题,但我试验过,如果多出一行的话,用鼠标选择那行,按ESC就能清除掉,但代码怎么实现?
3.我把合计字段的footer的设置为sum了,也就是可以对列求和,但这也有个问题
只有焦点到了下一行才能把footer的sum正确的显示出来,要不永远都差正在编辑的这一行的数据,我自己试验了一下 qryxfmx,refesh 但提示 qryxfmx.not in edit or insert 是不是刚开始我是append状态,但refesh后 就变了啊
怎么解决啊?
谢谢大家了
消费明细表:单据号(varchar),商品编码(varchar),数量(int),单价((money)(都不允许为空)
商品资料表:商品编码,商品名称,规格,单位,单价,
但在软件录入界面是
商品编码,商品名称,规格,单位,数量,单价,合计
其实 商品名称,规格,单位这几个字段只是显示录入界面的,不保存到数据库消费明细表中,合计是个虚拟增加的计算字段(要求数量*单价的和),
在qryxfmx的on calcfields中加了
qryxfmx.fieldbyname('sumje').value:=qryxfmx.fields[2].assinteger*qryxfmx.fields[3].assfloat;
我为了不让DBGRIDEH自己一到下一行就自己保存了,把
qryxfmx.lock type=ltBatchOptimistic了在录入界面的on show 事件中,open qryspzl open qryxfmx;qryxfmx.append;后进行录入
现在有以下问题请大家帮我解决下
1.如果在on calcfields中加如那段代码,则录入界面打开是要么提是 ''''is not
valid integer value ,要么就提示''''is not alid float value 我大概知道这是因为在刚打时,数量或单价的赋值为空早造成的,我尝试了在不同的地方打开qryxfmx但都没解决,只要在qryxfmx的on calcfields中加了
qryxfmx.fieldbyname('sumje').value:=qryxfmx.fields[2].assinteger*qryxfmx.fields[3].assfloat;
就报错
2.在我软件界面中例如完单价后,按回车就有个提示:是否继续? 如果是则 qryxfmx.append,焦点又回到了编码位置 dbgrid自动加一空行继续录入,如过不录入了按否 就能正常保存,但有时候客户已经录入完毕了,由于误操作,本来不想录入了,但不注意按了一下是,这时qryxfmx.append;dbgrideh中又多了一行空行,这时如果一按保存,就提示不允许插入null值,这个我也知道,是因为我的后台数据库中的字段不允许为空造成,但我不知道怎么能避免这个问题,但我试验过,如果多出一行的话,用鼠标选择那行,按ESC就能清除掉,但代码怎么实现?
3.我把合计字段的footer的设置为sum了,也就是可以对列求和,但这也有个问题
只有焦点到了下一行才能把footer的sum正确的显示出来,要不永远都差正在编辑的这一行的数据,我自己试验了一下 qryxfmx,refesh 但提示 qryxfmx.not in edit or insert 是不是刚开始我是append状态,但refesh后 就变了啊
怎么解决啊?
谢谢大家了
解决方案 »
- TRzRichEdit中怎么动态生成控件?
- 谁有dbctrlgrid使用的经验分享一下。主要是在每个面板(panle)中可以按不同的条件显示不同的颜色以方便区分
- 实现网络通信的问题(兄弟有300多分,顷囊相送了)
- TabOrder的问题
- 请投中国的长城和布达拉宫一票!!!!那中国就能获得国际基金的世界遗产拨款!
- 在DELPHI里如何调用操作系统中的那个文件拷贝进度条。
- ntfs2请进
- cn.yahoo.com 居然也改了!
- 求救,程序一运行几个表单一起出现,这是怎么一回事?
- BDE与ADO各自的优缺点?发布软件时都要附带什么运行环境?
- RichView如何让Gif动起来?
- Delphi用showmessage('&&')问题;
但,我懂顶...先...