电气行业存在以下特点(以客户为焦点,按图纸报价,生产):
产品报价时需要列出所用原材料清单,并且存在这样的情况:
1、多个电箱编号不同的电柜(如:1-1,1-2,1-3)其构成材料相同,于是报价员为了提高报价效率,在报价Bom 清单中使用一个bom来表示1-1,1-2,1-3各电箱。如下表表示:1-1,1-2,1-3各1台。
   序号        产品编码    产品名称    电箱编号             规格              数量   
   1           P001        配电箱      1-1,1-2,1-3       200*30*100        32、工程组下单员也从报价Bom中复制过来,生成生产Bom. 接下去增补元件。
   序号        产品编码    产品名称    电箱编号             规格              数量   
   1           P001        配电箱      1-1,1-2,1-3       200*30*100        3但做好生产Bom后,并开始生产时,由于客户原因或设计问题,1-2号电箱需要改动其构成材料时应该怎么办?1-2号箱的更改不到映响1-1、1-3的构成材料,同时需考虑后续的成本计算。尽管这种情况输小,但写系统须要考虑数据的完整性及准确性。请问大家有什么好的解决方案???

解决方案 »

  1.   

    你的设计有问题,第一,你把所有相同的电箱号写在一个字段并用分隔符分开,这种做法是不合理的
    应该像楼上所说的那么做,再建一个表来保存电箱列表,如:电箱号(ID) 所属产品编号    是否存在(就是是不是没有被用掉,这个你考虑做存仓表时要不要)
    1-1        P001            False
    1-2        P001            True 
    1-3        P001            False这样的设计你就可以随意改变了,改一下“所属产品编号”就可以达到你的要求了
      

  2.   

    一般来讲,产品都有一个BOM表,实际用料表,成本可以分为实际成本和报价成本。报价成本按BOM结构计算,不考虑实际用料,实际成本按实际用料表计算。
    解决的办法是:在单据备注栏填写备注信息,生产时按正常生成领料单,同时可采用退、补料单对进行平衡。并注意被替换的料的采购或生产计划要做相应的调整。如果不是自动物料需求分析,在人工分析物料时直接在用料表中改掉就可以了。
      

  3.   

    复:大家
    我所指的更改是不单是改变电箱的编号,更要更改其中某个电箱的构成材料复: fbysss(独孤求败)
    因为行业特性,该行业都是根据客户要求配材料的,而且报价的成功率也不会很高,一般在10%左右。
    如果完全按照数据库第一范式,工作量将成倍甚至多倍递增。  原来我的想法跟你一样,用stringGrid作为bom的输入,stringGrid中的某列内嵌了一个ListBox.1-1,1-2,1-3分另作为其item输入,在数据为中另开一个表用于存放该listbox的item项目,并与bom关联起来,这样似乎就解决了要更改其中部分箱体的bom问题了但如何把stringGrid与listBox整合起来,似乎不容易,特别是对于我初学delphi,对VCL核心不是很懂的人。。请问大家有没有合适的控件???
      

  4.   

    如何把stringGrid与listBox整合起来,似乎不容易,特别是对于我初学delphi,对VCL核心不是很懂的人。。请问大家有没有合适的控件???procedure TForm1.Button1Click(Sender: TObject);
    var
      DBGrid1: TDBGrid;
    begin
      DBGrid1 := TDBGrid.Create(Self);
      DBGrid1.Columns.Add;
      DBGrid1.Columns[0].PickList.Text := '1-1#13#101-2#13#101-3';  // List
    end;
      

  5.   

    Sorry, it should be:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      DBGrid1: TDBGrid;
    begin
      DBGrid1 := TDBGrid.Create(Self);
      DBGrid1.Columns.Add;
      DBGrid1.Columns[0].PickList.Add('1-1');
      DBGrid1.Columns[0].PickList.Add('1-2');
      DBGrid1.Columns[0].PickList.Add('1-3');
    end;
      

  6.   

    定义一个标准BOM表,再定义一个定制BOM表,提供客户修改和定制BOM的功能。
    另外如qiume所说,你的表结构是有问题的。
    如果你的BOM是一层BOM方式,为了加快输入可以采用快捷输入的方法。还是要把个材料分开。
      

  7.   

    如果输入的话你把相同的东西,可以保存下来嘛怎么会增大工作量呢。。
    表格方面,TopGrid很强大,表格中也可以实现下拉/日期等功能,你可以用用。