警告:冗长而复杂的问题...
到目前为止,故事是这样的:
我正在尝试让我工作的音响和照明租赁公司摆脱对他们基于Excel/VBA的报价/规范系统的依赖;我正在开发SQL Server/C# Winforms解决方案。
我遇到的问题是它的规范方面。
在旧的Excel系统中,这是工作簿中的一个工作表,基本上就是整个库存列表,其中有一些可编辑的列,如所需数量、折扣等。这些列中的大多数都是用户可以覆盖的“默认”值。
其中一个问题是,这份股票清单变得如此之大,以至于它需要具有层级性。因此,在我的C#解决方案中,它将是一个TreeListView ( http://objectlistview.sourceforge.net/cs/index.html )。
我遇到的问题是显示整个股票列表的整个概念(目前这是数据库中的一个表),但只在数据库中存储相关的行(数据库中的另一个表)。使问题复杂化的是,用户通常需要插入分包条目的行,这些行应该只存储在等级库的数据库表中,而不是库存列表中。因此,我最终不得不显示(并让用户编辑)来自不同表的项和值的正确旧混合。
我想要避免的是过多的网络流量,所以用户每次保存时都不能存储整个库存列表(没有指定的商品的值为零)。
使其复杂化的是,TreeListView期望看到单个列表,并且在内部执行所述列表的所有更新等。它也可以与Datatable一起工作。
在mo中,我有以下数据库表:
Item_Types -包含所有库存项目的属性和默认值,例如成本、折扣、重量等
Spec_Details -包含“覆盖”来自Item_Types的默认值的详细信息,以及用户为给定作业添加的任何行。再加上(这里是另一个工具)计算的'autospec‘值(在运行时计算的值在Item_Types中不存在;所以基本上这两个表的模式是不同的,排除了这两个表的直接合并)。
Spec_Heirarchy -更复杂的是,基本上用户可以在TreeListView中添加“系统”(例如,PA系统等在不同位置)-基本上是一个顶层父节点,然后将填充来自Item_Types的整个股票列表。此表包含每个职务基础上每个Item_Type的父/子关系,因为很明显,根据系统的数量以及用户是否添加了任何转聘项目,某些职务将具有与其他职务完全不同的层次结构。
Default_Heirarchy -如上所述,但库存项目的“默认”规格层次结构。
那么,组织、存储和访问这些乱七八糟的东西的最佳方式是什么呢?我已经不得不重新考虑我的整个设计太多次了,所以我在这里请求一些指导。我是C#的新手,基本上已经吃不消了,但是--你猜对了--没有预算让更有经验的人来承担这个任务。
谢谢
发布于 2011-02-23 23:07:34
我认为我在这里的问题太模糊了……我现在已经把所有的问题都理清了,它的DB端工作正常-我主要关心的是接口以及如何将DB中的数据操作成用户友好的形式;足够说的是,我已经重新考虑了我在这方面的整个方法,并且知道我现在在做什么。
不过还是谢谢你的帮助。
发布于 2011-02-23 01:13:34
这听起来像是一个标准的订单输入场景。通常,一个设计至少有三个独立的对象:价目表、订单和订单项。您销售给一个特定客户的项目,一个订单将与其价格信息一起出现在Order items表中。
在构建订单时,您将从PriceList表中选择项目。某些项目的说明和价格将始终被覆盖,例如安装人工项目或第三方部件项目。
Order Items表成为此特定订单的价目表的时间快照。
发布于 2011-02-23 01:20:23
我建议你不要再考虑用户界面了。
如果你的数据库是正确的,它将支持你能想象到的几乎任何用户界面。在我工作的最后一家财富500强公司的主数据库中,有数百个应用程序使用至少25种不同的语言编写,命中了它。通过围绕当今所选择的应用程序语言进行设计,您无法获得这样的灵活性。
我遇到的问题是显示整个股票列表的整个概念(目前这是数据库中的一个表),但只在数据库中存储相关的行(数据库中的另一个表)。
这是一个非常基本的要求。由于您使用的是SQL Server,因此附近的人可能有Microsoft Access的副本。示例数据库Northwind几乎肯定包含您需要执行的操作的示例。如果我没记错,整个股票列表是一个组合框的行源,用户选择的值被绑定到另一个表中的列。
听起来您拥有大多数公司拥有的东西--产品、订单和订单行项目。您的行项目可能来自您的产品表,也可能来自分包商。你觉得这听起来对吗?
https://stackoverflow.com/questions/5081166
复制相似问题