一个库存软件,因为货品多为食用品,所以想实现如下功能:   1、希望能在物品的过期前一个月开始,每当进入主界面时,列出将要过期的物品。
   2、物品的有效期过期后,可以在Frm_GQWP中列出已经过期的物品。登陆到系统时不再提示。   例如:      物品编号         物品名称       有效期至        数量     计量单位            J0001            炼奶        2009-06-20        4         瓶          
        J0002            味精        2009-07-01        5         包   
  在2009-06-01开始,登陆系统主界面Frm_main,弹出“将要过期的物品”
   在2009-06-21登陆系统主界面时,因为物品J0001已经超过了食用期,所以提示中只不出现此编号的物品。
   只有在打开Frm_GQWP时列出!

请问这样的功能到底怎样实现????

解决方案 »

  1.   

    用SQL语句查询,再用一个表格控件输出结果。
    即将过期的提示SQL语句如下:
    SELECT 物品名称 FROM 数据表 WHERE DATE() BETWEEN DATEADD("m",-1,有效期至) AND 有效期至
    已过期的SQL语句如下:
    SELECT * FROM 数据表 WHERE DATE()>有效期至
    至于窗体部分,在登录成功后,如果是MDIForm,可用一个子窗口显示;如果不是MDIForm,则可以使用“提示窗口.Show vbModal,主窗口”显示。
      

  2.   

    用SQL语句查询,再用一个表格控件输出结果。 
    即将过期的提示SQL语句如下: 
    SELECT 物品名称 FROM 数据表 WHERE DATE() BETWEEN DATEADD("m",-1,有效期至) AND 有效期至 
    已过期的SQL语句如下: 
    SELECT * FROM 数据表 WHERE DATE()>有效期至 
    至于窗体部分,在登录成功后,如果是MDIForm,可用一个子窗口显示;如果不是MDIForm,则可以使用“提示窗口.Show vbModal,主窗口”显示。
      

  3.   

    select * from 表名 where datediff(day,getdate(),有效日期)>=30
      

  4.   


    我的做法是:    在进入主界面的同时,查询data.mdb中的"库存信息"数据表(kcxx),然后根据数据表内"有效期至"此列(Q_Date)与本地时间判断,将符合条件的"库存信息"数据表内的:物品名称,有效期、数量、单价等信息用DataGird显示出来。
    发现的问题:    如单纯读取有效期一列的值,不能正确反映出将要过期的物品数量。    如期初库存“青岛啤酒”4瓶,有效期至:2009-07-08。假如此时再进10瓶“青岛啤酒”,有效期至:2009—10-01。
    则"库存信息"数据表(kcxx)内此物品的有效期仍为2009-07-08
    求解决办法!   
      

  5.   

    你这样,不要用product name 来标记货物,
    你表格中的物品编号,也就是你入库登记的时候每一批青岛啤酒都会有单独的物品编号
    001 青岛啤酒     10   2009-01-01
    002 青岛啤酒     8   2009-02-28当你查询的时候,会返回批号和数量也就是你数据库的设计问题表格tblProduct里面有你的upc, productname,....表格tblStock里面有你的stockID,upc, quantity,.....这样你就可以返回过期的数量了
      

  6.   


    这个应该没有困难。首先,我们把条件分析一下:1 已经过期:有效期小于当前日期。    "SELECT * FROM kcxx WHERE Q_Date < #" & Format(Date, "yyyy-mm-dd") & "#"2 有效期不到 30 天:有效期大于当前日期但小于当前日期 + 30    "SELECT * FROM kcxx WHERE Q_Date > #" & Format(Date, "yyyy-mm-dd") & "# AND Q_Date < #" & Format(Date + 30, "yyyy-mm-dd") & "#"
    至于相同货品,不同进货日期和有效期的问题,就应当作为不同批次以各自独立的记录来处理。数据库的结构不必更改,但你的汇总代码需要调整。
      

  7.   

    物品的主键设为物品编号,实际货物库存的主键用物品编号和进货批次号,有效期至是货物库存字段,这样找将过期的物品就从货物库存表找,加个distinct关键字滤掉重复的物品名称。
      

  8.   

    select * from tb where datediff(day,date(),有效日期)>=30
      

  9.   

    颜色选择失败,有损大伙视力。Sorry!
      

  10.   

    我给你的建议是一般零售或者仓储软件的数据库设计格式
    实际操作起来关键在你的仓库执行,作为仓储最重要的行为之一就是stockchecking, 在stockchecking的时候查点物品的数量,如果对关注过期时间敏感的话,会对最近一批过期,或者说最近一批需要distribute的物品进行特殊标记或者码放。这样在软件执行递减库存操作的时候就需要从最接近过期时间的那个批次开始。同一商品在tblstock中不同批次实在是在正常不过了。(如果你的客户是分销链,或者叫distribut centre的话) 递减为0则从tblstock表格删除,如有需要添加至tblstocklog
    如果你的客户是超市的话每一次收货都要录入系统,但是这个是tblReceived和tblstock不同,虽然里面同样有批号,这个是对分销链的一个交待,每一次入货必须有迹可循。接收到上架就是tblReceived到tblQuantity的过程,卖货期间则对过期并不敏感,因为每一个upc都是一视同仁的。因为在收款的时候并不知道具体这个upc是来自哪个批次,超市的stockchecking的时候你的系统会出现despripancy,然后系统对其进行处理 以我在这个行业的经验来看,大部分软件都有提醒功能。这个功能对于养鸡场,面包厂这样的地方尤为重要
      

  11.   

    我是唠叨鬼,在唠叨一句'----------------------------------
    不知道你的库存软件是面向哪里的
    在distribute centre一般真正重要的是upc+批次号,这与这个批次的出场时间过期时间都没有那么重要。那里的经理只是根据upc+批次号决定分发的物品,downstock也是这么来做的对于接受方超市来说,录入也是相当重要的,一定要和进货渠道保持批次号一致。如果一个批号上架了也是要记录在案的。非常非常的重要
      

  12.   

    使用 SQL语句在商品表查询就可
    将查询出来的记录集显示在 frm_main 窗体的一个控件(如ListView、msflexgrid等)中就可以了
      

  13.   

    感谢各位前来帮忙的朋友。各位给的意见足已解决问题,接下来的就要看自身的领悟和消化了。在此先把帖结了再说。要特别感谢:
               “clear_zero ”,“of 123”,"老张",“左手”的帮忙,几位多次帮小弟的忙,不胜感激。还有就是“江南春”,“young0098 ”等第一次来帮忙的新朋友!