订单录入界面设计及修改界面设计

时间:2021-02-07 08:59:41
多次使用到类似功能都没有一个很快的解决方案,以致每次遇到此问题时都绞尽脑汁
1.Edit + StringGrid
    此时用edit 接受每条记录数据录入,然后在ADD按钮后更新到 StringGrid,双击StringGrid某行删除,确定后Submit按钮提交

看到别的程序中使用类似excel datasheet的功能很好用,不知道是如何实现的,或者有更加舒服的方式去录入修改

74 个解决方案

#1


excel datasheet,这是第三方控件了

再有,你干吗用edit去输入呢,stringgrid直接就可以输入,干吗搞这么麻烦

#2


引用楼主 foxe 的帖子:
多次使用到类似功能都没有一个很快的解决方案,以致每次遇到此问题时都绞尽脑汁 
1.Edit + StringGrid 
    此时用edit 接受每条记录数据录入,然后在ADD按钮后更新到 StringGrid,双击StringGrid某行删除,确定后Submit按钮提交 

看到别的程序中使用类似excel datasheet的功能很好用,不知道是如何实现的,或者有更加舒服的方式去录入修改


直接錄入用 DBGrideh 
 

#3


引用 1 楼 bdmh 的回复:
excel datasheet,这是第三方控件了 

再有,你干吗用edit去输入呢,stringgrid直接就可以输入,干吗搞这么麻烦


我也很喜欢用edit+stringgrid
用edit是因为edit更容易控制输入。stringgrid输入控制起来麻烦点,要写几个事件。

#4


DBGrid 不比StringGrid好用?

#5


我个人不赞同直接在dbgrid上输入数据

#6


引用 4 楼 ron_xin 的回复:
DBGrid 不比StringGrid好用?

DBGrid太难控制,如订单
订单号==》多个ITEM,如何设计界面,以及配置DBGrid

#7


引用 6 楼 foxe 的回复:
引用 4 楼 ron_xin 的回复:
DBGrid 不比StringGrid好用? 


DBGrid太难控制,如订单 
订单号==》多个ITEM,如何设计界面,以及配置DBGrid


訂單是主從的。 

多練下火候,在緩存下感應組件控制好是不難的

#8


引用 6 楼 foxe 的回复:
引用 4 楼 ron_xin 的回复:
DBGrid 不比StringGrid好用? 


DBGrid太难控制,如订单 
订单号==》多个ITEM,如何设计界面,以及配置DBGrid


控制难不难完全在你自己,当然如果能脱离DB控件,那是最好的

#9


引用 7 楼 starluck 的回复:
訂單是主從的。 

多練下火候,在緩存下感應組件控制好是不難的

可否介绍一二,先谢过

#10


引用 9 楼 foxe 的回复:
引用 7 楼 starluck 的回复:


訂單是主從的。 

多練下火候,在緩存下感應組件控制好是不難的 


可否介绍一二,先谢过

有針對性的說吧,這樣說範圍太大點了吧。

#11


楼主最好去找一些有关delphi数据库软件开发的书看看。
订单是一个订单号对应多个货号~~~一般都用主从档形式

#12


建议用临时表,即ADO+DS+DBGRID,任何操作都在临时表上,最后提交时从临时表插入就行了

#13


呵呵,还真有双击删除的,这功能太强悍了,以前见过一次

#14


谢谢楼上各位,主从档我知道,只就DBGrid等数据控件的使用还不够精,也就基本使用。
就比如下单吧,在下单这个界面上应该如果设计功能,ID是自动生成的,格式为IYYYYMMDD0001,所以建了一个seek表用来存放最后一个seed

1.如果同时有10个人同时下单,是不是在输入界面上不能生成将要下单的ID,而是在提交时根据当时情况(及开事务独占seek表,算出正确id,提交
结束,结束事务)获得写入正确ID,所以在界面上只要考虑订单内容(名细)即可。那此时只需要用DBGrid来控制便可
2.如果想在界面上可以同时获得修改订单功能,那么便需要Edit/DBEdit与DBGrid配合使用

可否针对上面两条的要求那说一下呢

#15


1.只有当用户点击Save Order按钮时,才要为其申请Order ID,如果想省事,用敏感控件时也要选择一个可以离线的数据集,而后将数据整体提交(如ClientDataSet等)!
2.在订单管理界面上,可以分上下二部分,上部分可放一些客户的基础信息,下部分用多个TabSheet组成,每个TabSheet对应于与Order表相关联的子表,
如Shipping Addr信息标签,订单产品标签(OrderItem表),优惠码信息(OrderCoupon表),付款信息(OrderPayment表),运送产品信息(这个和订单产品不一样,因为有些产品是不经物流的,如服务运费等)
不知道我说清楚没有

#16


2.如果想在界面上可以同时获得修改订单功能,那么便需要Edit/DBEdit与DBGrid配合使用 
--------------------------------------------------
这个我在第1点已经说了,配合使用没问题,但最好用离线数据集

#17


其实用一个表,还是主从表都无所谓,当然一般都用主从表来实现
也不用啥临时表,也不用啥缓存技术,完全可以用stringgrid或者listview来实现,提交的时候先保存主表,再获得主表主键,保存从表

#18


學習學習

#19


@liangpei2008
我的意思是具体的设置,而不是界面构置,因为1,2已交代,假如用EDIT 和 DBGrid来实现:

功能:使用edit或者dbedit同DBGrid实现订单录入及修改

假如有表 :
    tb_orders:OrderID,OPDate,OP    存放订单基本信息
    tb_orderdtls:OrderID,ItemID,Qty    存放订单详细信息
    seek:存放种子,不作考虑

界面控件:
edit_OrderId:留空时为添加订单/否则查询已有订单
dbgrid_OrderDtls:用来增加记录或修改记录

数据:
ADOConnection:已连接数据库
ADOQuery:
DataSource:
等等

如果关联操作已达到上述要求

#20


Master  表 dsInsert  時肯定是新增單據,AppendNewRecord  時肯定要取好單號 

Detail   表在新增時取 Master  表的主鍵。 

Detail  表隨著 Master 表的 onAfterScroll  表變化。



Master ,Detail  在POST時 BeforePost  檢查  Requie  屬性,是否必填項

#21


請記住Detail  表要是在緩存下,否則會有很多麻煩

#22


路过,学学~

#23


路过学习帮顶up

#24


感觉思路有问题,如果用stringgrid,数据量大时,很难处理刷新的问题,还是用DBGrid或者第三方的控件吧

#25


简单的操作用dbgrid,如果对录入过程有特殊要求,建议用stringgrid配合其它控件.批量数据进出,建议用事务

#26


你要想方便可以用dbgrid或dbgrideh
dbgrideh是第三方组件,需要安装之后才能使用.

#27


study....

#28


stringgrid直接就可以输入

#29


该回复于2009-06-22 12:45:14被版主删除

#30


我是新人,路过路过!!!!

#31


我也很喜欢用edit+stringgrid 
用edit是因为edit更容易控制输入。stringgrid输入控制起来麻烦点,要写几个事件。

#32


如果列表的栏位比较多的话,直接在GRID里很难录入的,比如一会儿是日期、一会儿是下拉框的;

我现在比较喜欢先在EDIT里录入,然后暂时存储在STRINGGRID中....

#33


不是你感觉难不难,而是客户感觉怎么样
国内软件为什么没发展,可想而知

#34


引用 33 楼 hsmserver 的回复:
不是你感觉难不难,而是客户感觉怎么样
国内软件为什么没发展,可想而知

这个完全赞成,但前提是有定位(最终的实现界面),复杂度(通过什么样的控件组合来完成相同的界面和功能)只在乎自己水平,绕路也能到达目标。
想讨论的是如何能既简单又满足要求,还望不惜

#35


路过 取分数来咯

#36


路过看看

#37


UP

#38


up

#39


录入界面可以随便安排,修改也可以用DBGRID or STRINGADD,这个根据实际需要,都很好控制。但要注意增加它们的容错能力即可。

#40


啊,不懂,路过的顺便学学

#41


本人简单单据就 主从一次性提交 保存了,用的gridview多行编辑模式,苦于 每个ITEM 中 物料选择 弹出窗口来选 不爽;
期待 autocompleteextender来解决中....

#42


该回复于2009-06-25 09:46:39被版主删除

#43


Mark!

#44


主单信息,如客户名称等使用Edit输入;
明细,当然在grid中直接输入

#45


.

#46


使用 gridview

#47


我习惯采用:
内存表+dbgrid(只读,仅用于浏览多条记录),双击取当前记录到下面的panel里(各个edit/combobox/...,非db控件)
保存、添加由专门的按钮提交

刷新记录:
数据库====isapi(相当于一个数据库网关)=webserver -------> win32客户端(https客户端)=内存表

提交:
win32客户端的非db控件里的信息=win32客户端(https客户端) ---------> webserver=isapi(相当于一个数据库网关)===数据库

#48


学习

#49


d

#50


回帖是一种美德!每天回帖即可获得 10 分可用分! 

#1


excel datasheet,这是第三方控件了

再有,你干吗用edit去输入呢,stringgrid直接就可以输入,干吗搞这么麻烦

#2


引用楼主 foxe 的帖子:
多次使用到类似功能都没有一个很快的解决方案,以致每次遇到此问题时都绞尽脑汁 
1.Edit + StringGrid 
    此时用edit 接受每条记录数据录入,然后在ADD按钮后更新到 StringGrid,双击StringGrid某行删除,确定后Submit按钮提交 

看到别的程序中使用类似excel datasheet的功能很好用,不知道是如何实现的,或者有更加舒服的方式去录入修改


直接錄入用 DBGrideh 
 

#3


引用 1 楼 bdmh 的回复:
excel datasheet,这是第三方控件了 

再有,你干吗用edit去输入呢,stringgrid直接就可以输入,干吗搞这么麻烦


我也很喜欢用edit+stringgrid
用edit是因为edit更容易控制输入。stringgrid输入控制起来麻烦点,要写几个事件。

#4


DBGrid 不比StringGrid好用?

#5


我个人不赞同直接在dbgrid上输入数据

#6


引用 4 楼 ron_xin 的回复:
DBGrid 不比StringGrid好用?

DBGrid太难控制,如订单
订单号==》多个ITEM,如何设计界面,以及配置DBGrid

#7


引用 6 楼 foxe 的回复:
引用 4 楼 ron_xin 的回复:
DBGrid 不比StringGrid好用? 


DBGrid太难控制,如订单 
订单号==》多个ITEM,如何设计界面,以及配置DBGrid


訂單是主從的。 

多練下火候,在緩存下感應組件控制好是不難的

#8


引用 6 楼 foxe 的回复:
引用 4 楼 ron_xin 的回复:
DBGrid 不比StringGrid好用? 


DBGrid太难控制,如订单 
订单号==》多个ITEM,如何设计界面,以及配置DBGrid


控制难不难完全在你自己,当然如果能脱离DB控件,那是最好的

#9


引用 7 楼 starluck 的回复:
訂單是主從的。 

多練下火候,在緩存下感應組件控制好是不難的

可否介绍一二,先谢过

#10


引用 9 楼 foxe 的回复:
引用 7 楼 starluck 的回复:


訂單是主從的。 

多練下火候,在緩存下感應組件控制好是不難的 


可否介绍一二,先谢过

有針對性的說吧,這樣說範圍太大點了吧。

#11


楼主最好去找一些有关delphi数据库软件开发的书看看。
订单是一个订单号对应多个货号~~~一般都用主从档形式

#12


建议用临时表,即ADO+DS+DBGRID,任何操作都在临时表上,最后提交时从临时表插入就行了

#13


呵呵,还真有双击删除的,这功能太强悍了,以前见过一次

#14


谢谢楼上各位,主从档我知道,只就DBGrid等数据控件的使用还不够精,也就基本使用。
就比如下单吧,在下单这个界面上应该如果设计功能,ID是自动生成的,格式为IYYYYMMDD0001,所以建了一个seek表用来存放最后一个seed

1.如果同时有10个人同时下单,是不是在输入界面上不能生成将要下单的ID,而是在提交时根据当时情况(及开事务独占seek表,算出正确id,提交
结束,结束事务)获得写入正确ID,所以在界面上只要考虑订单内容(名细)即可。那此时只需要用DBGrid来控制便可
2.如果想在界面上可以同时获得修改订单功能,那么便需要Edit/DBEdit与DBGrid配合使用

可否针对上面两条的要求那说一下呢

#15


1.只有当用户点击Save Order按钮时,才要为其申请Order ID,如果想省事,用敏感控件时也要选择一个可以离线的数据集,而后将数据整体提交(如ClientDataSet等)!
2.在订单管理界面上,可以分上下二部分,上部分可放一些客户的基础信息,下部分用多个TabSheet组成,每个TabSheet对应于与Order表相关联的子表,
如Shipping Addr信息标签,订单产品标签(OrderItem表),优惠码信息(OrderCoupon表),付款信息(OrderPayment表),运送产品信息(这个和订单产品不一样,因为有些产品是不经物流的,如服务运费等)
不知道我说清楚没有

#16


2.如果想在界面上可以同时获得修改订单功能,那么便需要Edit/DBEdit与DBGrid配合使用 
--------------------------------------------------
这个我在第1点已经说了,配合使用没问题,但最好用离线数据集

#17


其实用一个表,还是主从表都无所谓,当然一般都用主从表来实现
也不用啥临时表,也不用啥缓存技术,完全可以用stringgrid或者listview来实现,提交的时候先保存主表,再获得主表主键,保存从表

#18


學習學習

#19


@liangpei2008
我的意思是具体的设置,而不是界面构置,因为1,2已交代,假如用EDIT 和 DBGrid来实现:

功能:使用edit或者dbedit同DBGrid实现订单录入及修改

假如有表 :
    tb_orders:OrderID,OPDate,OP    存放订单基本信息
    tb_orderdtls:OrderID,ItemID,Qty    存放订单详细信息
    seek:存放种子,不作考虑

界面控件:
edit_OrderId:留空时为添加订单/否则查询已有订单
dbgrid_OrderDtls:用来增加记录或修改记录

数据:
ADOConnection:已连接数据库
ADOQuery:
DataSource:
等等

如果关联操作已达到上述要求

#20


Master  表 dsInsert  時肯定是新增單據,AppendNewRecord  時肯定要取好單號 

Detail   表在新增時取 Master  表的主鍵。 

Detail  表隨著 Master 表的 onAfterScroll  表變化。



Master ,Detail  在POST時 BeforePost  檢查  Requie  屬性,是否必填項

#21


請記住Detail  表要是在緩存下,否則會有很多麻煩

#22


路过,学学~

#23


路过学习帮顶up

#24


感觉思路有问题,如果用stringgrid,数据量大时,很难处理刷新的问题,还是用DBGrid或者第三方的控件吧

#25


简单的操作用dbgrid,如果对录入过程有特殊要求,建议用stringgrid配合其它控件.批量数据进出,建议用事务

#26


你要想方便可以用dbgrid或dbgrideh
dbgrideh是第三方组件,需要安装之后才能使用.

#27


study....

#28


stringgrid直接就可以输入

#29


该回复于2009-06-22 12:45:14被版主删除

#30


我是新人,路过路过!!!!

#31


我也很喜欢用edit+stringgrid 
用edit是因为edit更容易控制输入。stringgrid输入控制起来麻烦点,要写几个事件。

#32


如果列表的栏位比较多的话,直接在GRID里很难录入的,比如一会儿是日期、一会儿是下拉框的;

我现在比较喜欢先在EDIT里录入,然后暂时存储在STRINGGRID中....

#33


不是你感觉难不难,而是客户感觉怎么样
国内软件为什么没发展,可想而知

#34


引用 33 楼 hsmserver 的回复:
不是你感觉难不难,而是客户感觉怎么样
国内软件为什么没发展,可想而知

这个完全赞成,但前提是有定位(最终的实现界面),复杂度(通过什么样的控件组合来完成相同的界面和功能)只在乎自己水平,绕路也能到达目标。
想讨论的是如何能既简单又满足要求,还望不惜

#35


路过 取分数来咯

#36


路过看看

#37


UP

#38


up

#39


录入界面可以随便安排,修改也可以用DBGRID or STRINGADD,这个根据实际需要,都很好控制。但要注意增加它们的容错能力即可。

#40


啊,不懂,路过的顺便学学

#41


本人简单单据就 主从一次性提交 保存了,用的gridview多行编辑模式,苦于 每个ITEM 中 物料选择 弹出窗口来选 不爽;
期待 autocompleteextender来解决中....

#42


该回复于2009-06-25 09:46:39被版主删除

#43


Mark!

#44


主单信息,如客户名称等使用Edit输入;
明细,当然在grid中直接输入

#45


.

#46


使用 gridview

#47


我习惯采用:
内存表+dbgrid(只读,仅用于浏览多条记录),双击取当前记录到下面的panel里(各个edit/combobox/...,非db控件)
保存、添加由专门的按钮提交

刷新记录:
数据库====isapi(相当于一个数据库网关)=webserver -------> win32客户端(https客户端)=内存表

提交:
win32客户端的非db控件里的信息=win32客户端(https客户端) ---------> webserver=isapi(相当于一个数据库网关)===数据库

#48


学习

#49


d

#50


回帖是一种美德!每天回帖即可获得 10 分可用分!