一键输出简单列表的功能按钮开发

来源:互联网 发布:java工程师自我评价 编辑:程序博客网 时间:2024/06/11 00:01

最近生产和我说,配舱系统实在是太烦了,
他和我说了一下他的工作方式,
首先是打开系统,
第二步打开筛选器,
第三步抄下今天所有未确认的订单到自己的本子上,
然后跑到车间去一票一票确认,
生产表示浪费时间的主要有两点:
①本来由总经办来截图给生产,生产来回复是否能够按时完成,然后王陈去系统里一票一票确认,这也就意味着,原本只需要动动嘴巴,做做决策,现在既要做决策,又要做文员的工作(一票一票的点);
②订单明细太长,生产只需要订单号就可以了,有时候为了找一票订单需要花费很长时间,例如生产二部一票订单有12个柜的,这个时候就比较麻烦;

解决:
①第一个问题,其实爱莫能助的,为什么会有以前的这种模式——把所有的文员工作放到总经办,那是因为暂时没有办法去统一协调每个部门的工作,我们不可能让
②第二个问题其实是可以解决的,就是要把窗体里筛选出来的订单,压缩一下,只取出里面的订单号,确认结果和最终的延期时间么。这个很简单的。

接下来的工作

一、思路——所谓思路就是用最短的语言,用人能听懂的话:
首先要从窗体中取出数据源,然后用一定的技术(这里你要我怎么说呢?既然要说人话,那我说DAO和EXCEL VBA你又要懵逼了)把数据源压缩成订单号列表,放到Access里面去,最后把数据放到Excel里面去。
最终结果是这个样子
那么
①数据源取出来是什么东西?
答:有可能是一个Select字符串,
例如:“SELECT A,B,C FROM TABLEX”
也有可能是一个表格或者查询的名称,
例如:“采购查询”
那么,这两种情况?这个怎么处理?看代码吧!
②数据源拿到了,接下来要用到那些知识?
第一个是VBA代码操作查询的知识(包括怎样创建、怎样删除、怎样检查Application里是否有同名查询);
第二个是DAO或者是ADO的数据记录集的知识;
第三个是Excel VBA的知识,特别是Excel的对象。

Private Function createQry()    Dim strSQLQr As String    Dim db As DAO.Database    Dim qr As DAO.QueryDef    strSQLQr = Form_frm采购订单查询.Form.RecordSource    If strSQLQr = "采购订单查询" Then        strSQLQr = "select * from " & strSQLQr    End If    Set db = CurrentDb    '-----检查是否存在同名查询    Dim I As Integer    db.QueryDefs.Refresh    For I = 0 To db.QueryDefs.Count - 1        If "Qry_PeicangList" = db.QueryDefs(I).Name Then            '如果查询名:Query_temp存在            db.QueryDefs.Delete "Qry_PeicangList"            Exit For        End If    Next I    Set qr = db.CreateQueryDef("Qry_PeicangList", strSQLQr)    db.Close: Set db = Nothing    Application.RefreshDatabaseWindow    MsgBox "创建成功!"End Function

补充:

但是在实际过程中我发现一个BUG,打开记录集的时候,如果FROM 后面的表格是查询,那么就算查询里面有数据,可能记录集也是空的,尤其是查询语句中包含Like语句时。
所以我在想,如果把数据放到一个中间表中,那么记录集是肯定不会空的,之前也经常看见朱总这么操作,只要最后把表格删掉就好了。
表格定义的文章看这里:“ CreateField方法简记”

'-----------检查是否存在同名表格,如果存在就删除--------------    For i = 0 To DB.TableDefs.Count - 1        If "tblPaigui" = CurrentDb.TableDefs(i).Name Then            '如果查询名:Query_temp存在            CurrentDb.TableDefs.Delete "tblPaigui"            Exit For        End If    Next i    '-----------创建表格--------------    Set tb = DB.CreateTableDef("tblPaigui")    With tb        .Fields.Append .CreateField("采购订单号", dbText)        .Fields.Append .CreateField("采购日期", dbDate)    End With    '将表添加到对象集合中    DB.TableDefs.Append tb    Application.RefreshDatabaseWindow    Set tb = Nothing    DB.Close: Set DB = Nothing

这里写图片描述

最后用我getTblExcel函数,将数据输出到Excel表格中。

2017年6月7日上午10点半
俞智峰

阅读全文
0 0
原创粉丝点击