原有贴子...http://expert.csdn.net/Expert/topic/1991/1991600.xml?temp=.3593561
问题如下:
基础信息有颜色和号码两个....
产品信息:
    001   男鞋子  (有N种颜色和N种号码)
单据记录表结构和最终记录如下
   产品编号,产品名称,颜色,号码,单价,数量
     001     男鞋子   红    M   20   30
     001     男鞋子   红    L   20   30
     001     男鞋子   绿    L   18   40
     001     男鞋子   黑    S   16   20左边DBGrid1:                                右边DBgrid2:
    产品编号   产品名称   数量              颜色   M    L    S   合计     
     001         男鞋子    110               红    30   20        50
                                             绿         40        40
                                             黑              20   20
     
如何在两个DbGrid中(右边的结构是根据左边录入的产品信息的颜色和号码自动展开成一个二维表,保存后能生成单据表中记录如上)实现如上效果并实现右边数据变动,则自动计算左边的数量.这边的颜色和号码只是三种,在实际中颜色和号码是不固定的,就是不同记录的颜色和号码的组合是不同的...就是记录移动要能导致其右边的DBGRID的组合形式也变化...
而且关键在于还要在两个DBGRID中实现编辑功能呢,我想这个就不是那么容易实现啦.....

解决方案 »

  1.   

    建议在原始表将尺码字段横向放置,
    例如: 产品编号,产品名称,颜色,尺码1,尺码2,尺码3...单价,合计数量
    有多少个码就建多少个字段,一般十几个够了吧,我做过的服装系统的尺码就这样建的表,这样在你的DBgrid2中就容易select 出来需要的记录。
    在DBGrid1的改变记录事件中,select 产品编号=主表的产品编号 的记录到dbgrid2中,
    dbgrid1的记录是根据dbgrid2中的计算而得到,应该不需要修改的。这里用主/从表应该很好做到你的要求的。
      

  2.   

    你的思路好象有问题,
    左边DBGrid1:                                右边DBgrid2:
        产品编号   产品名称   数量              颜色   M    L    S   合计     
         001         男鞋子    110               红    30   20        50
                                                 绿         40        40
                                                 黑              20   20
    利用主从关系表就可以实现了,可以到http://www.kaer.cn/default.aspx
    的下载基地下个例程去,
    至于单据记录表,你可以用一个query,用select语句直接生成。
      

  3.   

    你问的问题有可能是有点问题,我搞不懂你要做什么。
    你要dbgrid1有关系,还是要没有关系啊
      

  4.   

    你问的问题有可能是有点问题,我搞不懂你要做什么。
    你要dbgrid1和dbgrid2有关系,还是要没有关系啊,
    要是有关系的话,你必须定义一个共同的id啊
    有机会可以讨论([email protected])
      

  5.   

    你提的问题不可能实现的。
    如要解决也只能按: XRS(心如水) 的思路
      

  6.   

    dbgrid实现不了,那就用stringgrid呀
      

  7.   

    同意wdonghai(小王)的
    用stringgrid一定要用dbgrid的话,就程序算出结果,插入临时表
      

  8.   

    sqlserver ,oracle 可以用游标读出数据写入临时表,但效率太低
    还是改库表结构吧
      

  9.   

    表结构如下:
    CREATE TABLE [OrderItem] (
    [RefId] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_OrderItem_RefId] DEFAULT (''),
    [ProdId] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_OrderItem_ProdId] DEFAULT (''),
    [ColorId] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_OrderItem_ColorId] DEFAULT (''),
    [SizeId] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_OrderItem_Size] DEFAULT (''),
    [Price] [money] NOT NULL CONSTRAINT [DF_OrderItem_Price] DEFAULT (0),
    [Money] [money] NOT NULL CONSTRAINT [DF_OrderItem_Money] DEFAULT (0),
    [TotPlan] [float] NOT NULL CONSTRAINT [DF_OrderItem_ColorQty1] DEFAULT (0),
    [TotProd] [float] NOT NULL CONSTRAINT [DF_OrderItem_ColorTotQty1] DEFAULT (0),
    [TotOut] [float] NOT NULL CONSTRAINT [DF_OrderItem_ColorTotQty2] DEFAULT (0),
    [TotReturn] [float] NOT NULL CONSTRAINT [DF_OrderItem_ColorTotQty1_1] DEFAULT (0),
    [Qty] [float] NOT NULL CONSTRAINT [DF_OrderItem_Qty1] DEFAULT (0),
    [TotReturnNoSend] [float] NOT NULL CONSTRAINT [DF_OrderItem_TotRetuenNoSend] DEFAULT (0),
    [PurPrice] [float] NOT NULL CONSTRAINT [DF_OrderItem_PurPrice] DEFAULT (0),
    [MainPlanQty] [float] NOT NULL CONSTRAINT [DF_OrderItem_MainPlanQty] DEFAULT (0),
    [WillProdQty] [float] NOT NULL CONSTRAINT [DF_OrderItem_WillProd] DEFAULT (0),
    [WillPurQty] [float] NOT NULL CONSTRAINT [DF_OrderItem_WillPurQty] DEFAULT (0),
    [USeStockQty] [float] NOT NULL CONSTRAINT [DF_OrderItem_USeStockQty] DEFAULT (0),
    CONSTRAINT [PK_OrderItem] PRIMARY KEY  NONCLUSTERED 
    (
    [RefId],
    [ProdId],
    [ColorId],
    [SizeId]
    )  ON [PRIMARY] 
    ) ON [PRIMARY]
    其实是这样,左边是显示该表记录的共性:如产品编号,产品名称,数量合计:
    右边是非共性的:如产品颜色,尺码,数量,只是用类似交叉表的形式实现