Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

ACCESS查询问题,看似简单,但困扰已久,盼技术大牛予以解惑。

登山的鱼  发表于:2017-02-23 17:21:10  
复制

 

Top
登山的鱼 发表于:2017-02-23 17:31:11
仙来 发表于:2017-02-24 07:44:40
某字段条件<>0

网行者 发表于:2017-02-25 15:29:00

按单位、员工类型分别创建不包含为0项目的工资表,报表再以这些工资表为数据源

点击下载此附件



网行者 发表于:2017-02-28 22:11:59

或者用VBA修改SQL查询:点击下载此附件





登山的鱼 发表于:2017-03-01 16:13:54
果然是五星会员,非常感谢且正在认真拜读中。。。

登山的鱼 发表于:2017-03-01 16:14:06
果然是五星会员,非常感谢且正在认真拜读中。。。

登山的鱼 发表于:2017-03-01 19:20:58



登山的鱼 发表于:2017-03-01 23:44:01

来自网行者 范例1 生成表查询,办法非常好,解决大问题了;

再请教如何同时生成xls文件,红色部分代码如何搞呢?

另外生成表大概有

Function TableCreat2()

    Dim A() As String, B() As String
    Dim i As Long, j As Long
    A = Split(DanWeiGet(), ",")
    For i = 0 To UBound(A)
        B = Split(YGtypeGet(A(i)), ",")
        For j = 0 To UBound(B)
            Call TableCreat(A(i), B(j))
          '生成表的同时,再在电脑文件夹内生成对应的Excel文件,如:财政局公务员.xls,财政局事业工人.xls   .....  
        Next
    Next
End Function

网行者 发表于:2017-03-03 22:18:43

点击下载此附件

解压后操作,全部导入一个Excel表,再用Excel宏格式化各表后打印



网行者 发表于:2017-03-04 22:23:05

生成以单位名称命名的Excel文件,员工类型做为Excel文件里的sheet名称

点击下载此附件




登山的鱼 发表于:2017-03-05 21:23:22


网行者 发表于:2017-03-05 22:19:54

那就无法保证工资项目的顺序了。

给个思路,在示例三基础上修改,新建一个只有工资项目一个字段的“工资项目”表,且该字段不允许重复(设为主键即可),ADO将某个单位、某个员工类型不为0的工资项目追加进去,再以该表工资项目做生成表操作。循环过程需清空该表,以利下一循环追加。这样就不能保证新生成表工资项目的顺序与工资总表一致了。



登山的鱼 发表于:2017-03-06 11:32:46
网行者的思路大概明了,就是取得有金额的工资项目名称,以此为生成表的字段,不过ADO现在还是门外汉,兄弟能否给个范例呢?
不胜感激!


登山的鱼 发表于:2017-03-06 14:42:18


网行者 发表于:2017-03-06 21:09:45
登山的鱼 发表于:2017-03-06 23:51:53

不好意思,改了几个字也得麻烦你,收到测试完ok!感谢网行者。

我现在也得开始好好晓习晓习什么ado dao了。



登山的鱼 发表于:2017-03-07 10:17:41
  sSQL = "select * from 查询1 where 单位='" & danwei & "'and 员工类型='" & YGtype & "'"
    rs.Open sSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rs.MoveFirst
    For i = 0 To rs.Fields.Count - 1
        If rs.Fields(i).Value <> 0 Then
            FieldName = FieldName & "," & rs.Fields(i).Name
        End If
    Next
    cSQL = "SELECT " & Mid(FieldName, 2) & " into " & YGtype & "工资 from 工资总表 where 单位='" & danwei & "'and 员工类型='" & YGtype & "'"

   'select 后的字段来自查询1,但查询1是汇总,没有姓名字段,所以生成表里的记录缺少姓名字段。我改了一下:“ SELECT “‘’姓名‘’," & Mid(FieldName, 2) & " into " & YGtype & "工资 from 工资总表 。。。。。         ”却总是报sql错误。是语法还是别的原因?    网行者再帮忙看下吧

   DoCmd.SetWarnings False

    DoCmd.RunSQL cSQL
    DoCmd.SetWarnings True
    rs.Close: Set rs = Nothing


网行者 发表于:2017-03-07 19:40:39

点击下载此附件

注意双引号、逗号等需用半角的英文标点符号。

cSQL = "SELECT 姓名," & Mid(FieldName, 2) & " into " & YGtype & "工资 from 工资总表 where 单位='" & danwei & "'and 员工类型='" & YGtype & "'"



登山的鱼 发表于:2017-03-08 21:54:01
谢谢行者!

总记录:19篇  页次:1/1 9 1 :