关于导出K3 BOM

    在11月时,经理把钞车的物料采购计划交给我。我决定用ERP的原理,来解决问题。于是我想如果能先算出物料净需求的话,就可同现在库存,以及采购已下单但未入库,三个条件,便可以求出。现在应该再下或退单数量。
其数学表达式为:    现在应再下单=物料净需求-现有库存-采购已下单但未入库
如果,结果为正数,表示应:采购再下单,负数表示:应采购退单。
其中最主要的一个问题就是要算出物料净需求.
物料净需求=生产任务单BOM物料汇总-生产任务单物资的已领出数。
我先用Access建立了这个数据库,但在BOM的获取,却大费精力,原因是:生产任务单(即销售订单,对应的车子是多个)K3是核算到单车,所以,要下一个订单的BOM,必须要知道车号,然后才知道成本对象。由成本对象才能在K3中找到BOM
而车号是一串字符,样式如 1.01.07.40001,而实现人们谈论的都是销售订单号:如2007424, 销售订单号比成本对象直观多了,所以在查找到时,如果订单很多,对眼睛是很大的考验,多看一会就眼花了。
用这个方法,我试了一个月,结果就发现一次,是自已下错了BOM。于是我想必须从技术的手段,去解决这个问题。
首先想到的是在中间层安装一个BOM记录查询组件,但把中间层组件,发到集团,结果管理中间层的人出差,无法安装组件,而且我也不知道多级BOM展开的SQL语句,而且每次与中间层打交道都很累,他们从来不会积极配合工作。于是我想与其求人,不如靠自已想办法解决这个问题。
     首先想到一个办法,就是下一个“按键精灵”,听说还支持VBS脚本。结果,使用起来,发现它对VBS的支持,并不理想(主要是语法有点不能不类)。不过,我还是从使用这个软件得到一些启发。
    能不能用VB实现“按键精灵”的功能呢。我知道Win32API有一个鼠标按键模块函数。我原来,用这个东西编过一个“传奇”游戏的练狗程序。
    于是,我就从自已数据库中的订单查-->车号---->成本对象,用鼠标模拟函数,来模拟人,操作K3查询多级查询,结果没有想到,原来自已用过的东西,这次不行了。结果发现是在Sleep函数,之前之后一定要加Doevents,(看来是自已几年前写的现在真的忘了)于是我定义一个:
public sub MySleep(lngTime as long)
  doevents
  sleep lngTime
  doevents
end sub
接下来,就是要让程序像人一样,也会思考,判断K3 BOM到底找到没有
   这时我想到了“按键精灵”有一个FindPic函数。这个函数是看屏幕到底有没有一个指定的图像,其中,我并不需要在屏幕找一个图像,我只需在屏幕中到一个点的颜色就OK了,因为当K3没有代到BOM时会弹出一个对话框,刚好把一个黄色的打开成本对象按钮挡住。这样就解决了,呵呵。
Public Function GetPointColor(X As Long, Y As Long) As Long
    GetPointColor = GetPixel(GetWindowDC(GetDesktopWindow()), X, Y)
End Function
 
这样就把一个个BOM导出,并存为 2007424.xls 等以订单名字的文件名。
再写一个程序,读取这些导出的EXCEL文件就行了。(当然在导入,再次检查一个订单与车号是否一致,以防万一程序,没按预期执行。
 
现在可以把这个程序,让它晚上自已执行,第二天,就自动帮我算好了。:-)
 
后记:1。在学习按键精灵,到它的论坛看了一下,唉,都是在讨论游戏的自动按键,练功呀,走点呀。没一个人想到它来解决生产,信息管理的问题!
     2。理论上这又不叫K3的二次开发呢^_^(这个不需懂K3内部是怎么运行和实现等细节。)
 
 
 
 
 
 

posted on 2007-12-10 20:29  杨志农  阅读(477)  评论(0)    收藏  举报

导航