做过进销存或者类似软件的朋友都帮忙看看,理论问题~土八路要当正规军,但是实在不懂规矩,请教大家几个问题,主要都是数据库方面的。
(1)在销售,生成订单时,订单中记录的是商品的编号么?我是记录编号的,但是,如果所对应的商品因为不再生产不在供货了或者其他原因被删除了,那么这个订单岂不是看不到订单的明细?类似这样的情况很多,例如订单的经手人编码、商品的仓库编码,很多都是关联他们编码的,一旦删除编码库,就会找不到详细资料了,大家是怎么处理这种情况的?(2)SQLServer2000的数据类型TimeStamp大家常用么?我记录订单修改时间,操作时间的,都是用普通时间类型,能否介绍一下优劣?(3)谁做过比较正规的类似进销存这样的软件,能否发一份数据库结构的资料给我,我想学习一下,虽然有些进销存软件用SQL Server的,我也看到数据库内容了,但是都是中文缩写的字母或者数字代号,我没法分析它的关系和结构。拜托大家了~[email protected](4)有多少人是用PowerDesigner或者类似软件做数据库建模后再开发的?(5)SQL这么多复杂的语句,联接、联合还有很多复杂组合,高手们是怎么学习的呢?有没有一份好的书或者资料可以介绍给我呢?(6)一个订单,我现在是这样定义的,
采购订单:
订单编号  供应商编码  经手人   生成日期   。。那么,现在存在一个问题,我的客户要求,这个供应商的输入处(我用DBLookUpComboBoxEh这个控件,可以让用户在下拉表中选择供应商),但是,有时候有些供应商我的顾客可能是希望手工输入的,而不存在于供应商列表中,怎么办?这种做法我见过有进销存软件是这样做的,不知道它的数据库是怎么处理的?如果订单中只保存供应商的名字,不保存编码,就没法建立和供应商列表之间的联系;如果保存编码,那么用户自行录入的供应商名称,怎么办?(7)还有一个问题,这个DBLookupComboBoxEh虽然可以选择两种模式,一种只能选择内容,一种可以自行输入内容,但是,假如你自行输入内容,光标脱离DBLookupComboBoxEh后,内容不对应里列表的内容就会被自动清空,这个问题比较麻烦,例如,用户输入商品资料,这个商品的单位是单位编码表中没有的,比如说是“百米”,那么用户输入“百米”后提交商品,我希望能够自动把这个新的单位写入单位编码表,这里就比较麻烦,大家是用什么控件怎么处理的呢?(8)再有就是订单的编码问题,一般都是字母打头,然后加上数字编号完成的,大家是怎么做的呢?设为文本类型,然后“B0000001”开始,B代表购物订单,每次新订单入库,先取得当前库中最大订单编号,然后累加1,生成B0000002,再把订单入库么?还是SQL语句一句搞定?还是写个存储过程?或者其他解决办法?大家说说看。

解决方案 »

  1.   

    呵呵 我没做过 我来学习..不过有些文件比较简单吧。。比如
    再有就是订单的编码问题,一般都是字母打头,然后加上数字编号完成的
    你分两部分获取不久OK
    比如前面的为A,B,C 那么你用一个表保存他们以表示不同的类别,然后另外的数字就以序列产生,OK...
      

  2.   

    (1)商品和订单关联肯定是按编号.你说的删除了就调不到了.实际上,在很多有关联的地方,是不允许用户删除的.你可以将商品设个删除状态,但不要真正从库里删除,当然包括其他订单,人员等都可以这样来做.
    (2)别外时间,我采用是DATATIME型.具体优劣没有研究过.只要能实现你要的功能就可以了.
    (3)数据库我现你可以看看速达的数据库设计,但你还要根据你的客户的需求来改,发一份给你也只能做参考.
    (4)PowerDesigner很好用,不过,先我也是采用这个建的,后面的改动就没用了,直接改数据库了.因为这个东西,我也不是很熟.
    (5)SQL语句你可以研究一下,功能非常强大.书我也没有
    (6.7)我确定你不要用这个DBLookupComboBoxEh控件来选供应商,因为数据量多的时候,不好找.建议你做一个新窗体,可以支持查询的,选了后再调过来!
    (8)订单编号就是你说的哪样,存为文本,新增的时候,转为数字进行累加,然后存进去,至于你要写储存过程,如果你愿意,没人反对,其实写一个公共的函数就可以了...
      

  3.   

    to kzy7517(kzy7517):这个冗余的信息,如何去维护呢?是不是说,对于历史的订单之类,如果明细商品发声改变,都要去修改订单中商品的指向呢?这样的话,用户每修改一次某商品的资料,我岂不是就要扫描一次所有的订单,然后让包含这个商品的订单指向我另外产生的冗余商品了呢?不知道是否描述清楚了~~
      

  4.   

    看一下金蝶K3,用友U8等Erp软件的销售部份,你会受益不浅的。最好是能操作一下。
      

  5.   

    to  kzy7517(kzy7517) :所以我以前做的都是用商品ID。=》指自动生成的ID么?为了防止商品编码被改动的缘故吧?
      

  6.   

    1, 作为字典表偶一般是不容许客户删除数据的只能修改或添加,并且编码也是不能该的
    2,DateTime见识少 没用过那个类型:)
    3,每个客户的需求都不一样 更给你结构没文档也是一样不如自己摸,听说速达不错,不过别人的也就能接  见 ,做数据库是为程序服务的 具体是还是要看你的程序怎么设计
    4,嘿嘿偶没用过建模工具 都是对着文档做的 只要文档写详细了 偶觉得那些只是照本宣科
    5,复杂的SQL你可以写成视图,比如主从表的连接后的数据集,注意啊,如果主表的数据可能不在字典表里 要用左连接
    6,7个人是强烈不同意使用数据感知组件滴,一直都用普通的combobox,你说的自动添加数据的功能,
    在Change事件写个函数就是了,偶还写了个还有输入拼音码显示内容的过程,正就是灵活控制方便
    保存的时候偶是用一个函数查询出对应combobox.text的编码保存到表里
    8,偶没有用字母打头 取数据的时候分析字符串很麻烦效率也不高,  在程序里你从那个表取的编码应该知道
      记录的编码偶一般用12位CHAR 前8位为当前日期后4位为自动编号比如200411050001,意思是说这个单是某天的第几张
    小弟也是半路出家 不知道能帮上忙不能