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

最近生产和我说,配舱系统实在是太烦了,
他和我说了一下他的工作方式,
首先是打开系统,
第二步打开筛选器,
第三步抄下今天所有未确认的订单到自己的本子上,
然后跑到车间去一票一票确认,
生产表示浪费时间的主要有两点:
①本来由总经办来截图给生产,生产来回复是否能够按时完成,然后王陈去系统里一票一票确认,这也就意味着,原本只需要动动嘴巴,做做决策,现在既要做决策,又要做文员的工作(一票一票的点);
②订单明细太长,生产只需要订单号就可以了,有时候为了找一票订单需要花费很长时间,例如生产二部一票订单有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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值