Access交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 产品
  • 活动
  • 培训
  • 招聘
  • 论坛
  • 商城
  • 关于

培训

Access企业培训(现场)
Access在线培训

Access中级培训

Access高级培训

Access定制培训

Access树控件与BOM高级技巧

Access公开课
Access免费公开课视频
Access培训(VIP)
Access培训优惠信息

热门文章

  • Access控制outlo..
  • Access调用网页功能-..
  • ERP之BOM树源码-Ac..
  • Access系统设置及系统..
  • Access专业工资条打印..
  • VBA开发神器发布及培训-..

最新文章

  • Access自动播音员-A..
  • Access智能搜索组合框..
  • Access自动执行宏的妙..
  • access图片分页展示及..
  • 通用读取文本文件模块-Ac..
  • Access通用TAB键和..

联系方式

Access交流网

电  话:0760-88315075
热  线:0760-88315075

邮  编:528463
咨询QQ:1918333016
营销QQ:4008553990

Email:1918333016@qq.com

网  址:www.access-cn.com

当前位置:首页 > 培训 > Access培训(VIP)
Access培训(VIP)

Access专业工资条打印-Access经典源码剖析

 
Access主题 主题:Access专业工资条打印-高手之路                  听课人数:85人  和 93人     
Access主讲

 主讲:王宇虹                     演讲时间:2014-07-16 15:30 至 2014-07-16 16:30

                                                             2014-07-09 15:30 至 2014-07-09 16:30

Access培训内容 讲课内容简介:                   Access培训报名: http://www.office-cn.net/thread-118946-1-1.html
  本节课主要讲解工资条的打印方式,其中涉及到很多知识点。包括对Excel 对象操作源码(可应用到其它系统),非常方便地挑选字段,自动生成Excel工资条。同时也可以套用excel模板进行到处处理。
 培训优势:使用新版Access2013+思维导图模式+Access源码剖析+在线课堂+PPT课件  培训
 培训目标:让你 听得懂 学得会 记得住 用得上             要求:有一定的Access 或 VBA的基础 
 

 

clip0058

Access专业工资条打印


 

 

application_key 功能描述:

 

 

  • 非常方便地挑选字段

 

  • 自动生成Excel工资条

 

  • 套用Excel模板

 

  • 对Excel 对象操作源码(可应用到其它系统)

 

application_key  行业应用场景:

 
  • 工资系统

           工资条打印

           其它导出到Excel需求

  • 单据打印

           导出单据格式到Excel

  • 其它报表导出

             导出报表到Excel 

 

application_key  界面预览:

     access数据库

     access数据库

 

      access数据库

 

application_key  源码思维导图(脑图):

 

     access数据库

 

Access教程视频Access专业工资条打印 -- Access经典源码剖析思维导图在线播放

可直接展开和收缩思维导图中的每个节点来浏览,也可使用下面的放大 缩小 折叠 定位焦点 全页显示 查找关键字等功能
 

 

 

application_key  Access培训笔记:

 

  经典源码剖析系列 专业工资条打印 Office中国-王宇虹

 

 

1 应用场景

1.1 工资系统

1.2 批量打印

1.3 贴纸打印

2 导出到Excel源码剖析

2.1 没有查询结果需要打印

2.1.1 提示用户,没有数据

2.1.2 直接退出

2.2 让用户输入打印的日期

2.2.1 默认当天时间

2.3 让用户选择是否打印序号

2.3.1 第1列就是序号列

2.4 对EXCEL对象开始操作

2.4.1 用非绑定方式判断Excel

2.4.1.1 如果客户的EXCEL版本低于你的版本

2.4.2 On error resume next

2.4.2.1 遇到错误都跳过去

2.4.3 先获取已经打开的EXCEL对象

2.4.3.1 直接取已经打开的EXCEL对象

2.4.4 如果没有打开,则创建新的EXCEL对象

2.4.4.1 Set xlsApp = CreateObject("Excel.Application")

2.4.5 xlsApp.Visible = False

2.4.5.1 加快处理速度

2.4.5.2 避免鼠标不小心点进去

2.4.6 打开一个xlsWBook,指定文件名

2.4.6.1 DIR判断文件 是否存在

2.4.7 取取当前激活的工作表ActiveSheet

2.4.8 如果以上操作出错,退出

2.4.8.1 请先安装Excel

2.4.8.2 并确保PersonTemplateNm.xls模板文件存在

2.4.9 设置所选字段的列宽

2.4.9.1 按照Access窗体字段的宽度来设置

2.4.9.1.1 gFunTwipsToPixels

2.4.9.2 所见即所得

2.4.10 循环工资表的数据

2.4.10.1 tblHrmSalary

2.4.10.2 先填写每个员工的标题行

2.4.10.3 再填写员工人数据内容行

2.4.10.4 再添加一个分隔行

2.4.11 增加汇总行

2.4.11.1 合计 平均

2.4.11.2 设置字体 粗体

2.4.12 xlsApp.Visible = True

2.4.12.1 自动另存为一个新的EXCEL文件

3 设计窗体控件布局

3.1 使用数据表

3.2 需要的工资项目字段

4 选择字段窗体 源码剖析

4.1 获取窗体所有的字段及字段标题

4.1.1 InitListBox

4.1.1.1 '关闭窗体的刷新

4.1.1.2 先清除 可选字段表 与已选字段表的内容

4.1.1.3 循环窗体上所有控件

4.1.1.3.1 文本框 组合框  复选框

4.1.1.3.2 而且是在 主体 节

4.1.1.3.3 而且是可见

4.1.1.4 取出需要的内容

4.1.1.4.1 控件名称

4.1.1.4.2 控件绑定的字段名

4.1.1.4.3 控件排列顺序

4.1.1.4.4 标题

4.1.1.4.4.1 Controls(0).Caption

4.1.1.4.5 控件显示的宽度

4.1.1.5 把取到的内容写到 可选字段表

4.1.1.6 把上一次已选字段列出来

4.1.1.7 '打开窗体的刷新

4.2 添加字段

4.2.1 取已选字段表最大的顺序号

4.2.1.1 +1

4.2.2 循环所有的挑选字段

4.2.2.1 多选

4.2.2.1.1 判断ItemsSelected

4.2.2.2 逐条插入到已选字段表

4.2.2.3 从可选字段表中删除

4.2.2.4 可选状态变成否

4.2.3 刷新两个列表框

4.2.3.1 与更新后表的内容保持一致

4.2.3.2 lstSel.Requery

4.2.3.3 lstAll Requery

4.3 移除字段

4.3.1 添加字段的反向过程

4.4 添加所有字段

4.4.1 循环所有记录

4.4.1.1 For i = 0 To iCnt - 1 Step 1

4.5 移除所有字段

4.5.1 添加所有字段的反向过和

4.6 PUB_List表保存就是我们挑选的字段清单

4.7 附加知识

4.7.1 CurrentDb

4.7.2 CodeDb

 

 

 

application_key  相关链接:

 

1. 直接超值购买:

       点击购买:  Button 

       包含:Access示例完整源码+实现思路与代码讲解高清视频+Access培训课件    绝对低价超值

 

2. 购买前咨询:

    

    在线咨询QQ:1918333016

    企业热线QQ:4008553990 (使用QQ搜索: 搜索服务)

    更多联系方式:http://www.office-cn.net/t/training/officecontact.htm

 

application_key  部分源码预览:

access数据库

  

 

Option Compare Database
Option Explicit
Public glstrusername As String
Public glstrcaption As String
Public glfrmSubForm As Form
Public Declare Function gt_SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
 
 
Private Declare Function apiGetDC Lib "user32" Alias "GetDC" _
    (ByVal hwnd As Long) As Long
Private Declare Function apiReleaseDC Lib "user32" Alias "ReleaseDC" _
    (ByVal hwnd As Long, ByVal hDC As Long) As Long
Private Declare Function apiGetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" _
    (ByVal hDC As Long, ByVal nIndex As Long) As Long
 
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
 
Public Const DIRECTION_VERTICAL = 1
Public Const DIRECTION_HORIZONTAL = 0
 
Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" (ByVal hkl As Long, ByVal _
                                                                                Flags As Long) As Long
'===============================================================================
'-函数名称:         gf_IsLoaded
'-功能描述:         判别窗体是否已经加载
'-输入参数说明:     参数1:rstrFrmName String 窗体名称
'
'-返回参数说明:     Boolean True表示加载 False 表示没有加载
'-使用语法示例:     gf_IsLoaded
'-参考:
'-使用注意:         XP已有替换它的内部函数
'-兼容性:           97,2000,XP,2003 compatible
'-作者:             王宇虹,改进:王宇虹
'-更新日期:        2002-08-26
'===============================================================================
Public Function gf_IsLoaded(ByVal rstrfrmName As String) As Boolean
    Const conObjStateClosed = 0
    Const conDesignView = 0
    If SysCmd(acSysCmdGetObjectState, acForm, rstrfrmName) <> conObjStateClosed Then
        If Forms(rstrfrmName).CurrentView <> conDesignView Then
            gf_IsLoaded = True
        End If
    End If
End Function
 
 
 
Public Function gf_Msgbox(rstrMessage As String, Optional rintType As Integer, Optional rintCustomerType As Integer, Optional rerrError As ErrObject) As Integer
    Beep
    '0  no button 警告
    '1  no button 通知
    '2  提示是否按钮  询问
    '3  提示是否取消按钮  询问
    '4  提示警句信息
    '9  自定义格式,需要设置rintCustomerType参数值
    Dim intBtnType As Integer
    Dim strMessage As String
    If IsMissing(rintType) Then
        rintType = 0
    End If
    Select Case rintType
    Case 0
        intBtnType = vbOKOnly                              '+ vbCritical
    Case 1
        intBtnType = vbOKOnly + vbInformation
    Case 2
        intBtnType = vbYesNo + vbQuestion + vbDefaultButton1
    Case 21
        intBtnType = vbYesNo + vbQuestion + vbDefaultButton2
     '.................................
    '.................................
    End If
    gf_Msgbox = MsgBox(strMessage, intBtnType, "Office中国")
 
End Function
 
 
'===============================================================================
'-函?名?:         gFunTwipsToPixels
'-功能描述:         ??堤到像素
'-?入???明:     ??1:rlngTwips Long 需要??的堤
'                   ??2:rlngDirection Long DIRECTION_VERTICAL是Y方向 DIRECTION_HORIZONTAL?X方向
'-返回???明:     ??后像素值
'-使用?法示例:     gFunTwipsToPixels 50,DIRECTION_VERTICAL
'-?考:
'-使用注意:
'-兼容性:           97,2000,XP compatible
'-作者:             王宇虹(?考微?KB),改?:王宇虹
'-更新日期:        2002-08-26 ,2002-11-15
'===============================================================================
Function gFunTwipsToPixels(rlngTwips As Long, rlngDirection As Long) As Long
    On Error GoTo Err_gFunTwipsToPixels
    Dim lngDeviceHandle As Long
    Dim lngPixelsPerInch As Long
    lngDeviceHandle = apiGetDC(0)
    If rlngDirection = DIRECTION_HORIZONTAL Then  '水平X方向
        lngPixelsPerInch = apiGetDeviceCaps(lngDeviceHandle, LOGPIXELSX)
    Else       '垂直Y方向
  '.................................
 '.................................
Exit_gFunTwipsToPixels:
    On Error Resume Next
    Exit Function
Err_gFunTwipsToPixels:
    MsgBox Err.Description, vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume Exit_gFunTwipsToPixels
End Function
'===============================================================================
'-函?名?:         gFunPixelsToTwips
'-功能描述:         ??像素到堤
'-?入???明:     ??1:rlngPixels Long 需要??的像素
'                   ??2:rlngDirection Long DIRECTION_VERTICAL是Y方向 DIRECTION_HORIZONTAL?X方向
'-返回???明:     ??后堤值
'-使用?法示例:     gFunPixelsToTwips 50,DIRECTION_VERTICAL
'-?考:
'-使用注意:
'-兼容性:           97,2000,XP compatible
'-作者:             王宇虹(?考微?KB),改?:王宇虹
'-更新日期:        2002-08-26 ,2002-11-15
'===============================================================================
Function gFunPixelsToTwips(rlngPixels As Long, rlngDirection As Long) As Long
    On Error GoTo Err_gFunPixelsToTwips
    Dim lngDeviceHandle As Long
    Dim lngPixelsPerInch As Long
    lngDeviceHandle = apiGetDC(0)
    If rlngDirection = DIRECTION_HORIZONTAL Then  '水平X方向
        lngPixelsPerInch = apiGetDeviceCaps(lngDeviceHandle, LOGPIXELSX)
    Else       '垂直Y方向
  '.................................
 '.................................
Exit_gFunPixelsToTwips:
    On Error Resume Next
    Exit Function
Err_gFunPixelsToTwips:
    MsgBox Err.Description, vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume Exit_gFunPixelsToTwips
End Function
 
 
 
 
Private Sub cmdExport_Click()
    
    
    If Me.sfmSubForm.Form.RecordsetClone.RecordCount = 0 Then
        gf_Msgbox "没有查询结果需要打印 !", 1
        Exit Sub
    End If
 
    Set glfrmSubForm = Me.sfmSubForm.Form
 
    '通用的字段挑选窗体
    DoCmd.OpenForm "frmPubSelectFld", , , , , acDialog, Me.name
    If sfmSubForm.Tag = "False" Then Exit Sub
 
    '让用户输入打印的日期
    datInput = InputBox("请输入工资条日期", "TmSoft", Date)
    
    blnSnr = False
    '让用户选择是否打印序号
    If MsgBox("有序号,请选择是,否则请选择否", vbYesNo + vbDefaultButton1, "加序号选择") = vbYes Then
        blnSnr = True
    End If
    
    'OLE对象
    '如果遇到错误跳过去
    On Error Resume Next
    
    '先获取已经打开的EXCEL对象 非绑定
    
     '.................................
     '.................................
  
    Dim rs As DAO.Recordset
      
'    Dim rs1 As ADODB.Recordset
'    Set rs1 = New ADODB.Recordset
'    rs1.Open "select * from pub_list order by fseqno", CurrentProject.Connection, adOpenStatic, adLockReadOnly
'    Do While Not rs1.EOF
'
'      rs1.MoveNext
'    Loop
      
      
    '从已选字段表读取字段
    
    Set rs = CurrentDb.OpenRecordset("select * from pub_list order by fseqno")
    lngColCnt = rs.RecordCount
    
    
 '.................................
 '.................................
    Next j
    
      
      
 
''Dim strFilter As String
'If Nz(Me.sfmSubForm.Form.Filter) <> "" Then  '
'    strFilter = Me.sfmSubForm.Form.Filter ' Nz(sfmSubForm.Tag)
'Else
'    strFilter = " true "
'End If
'strFilter = Replace(strFilter, "qryHrmEmpSalary.", "")
'
'If Nz(Me.sfmSubForm.Form.OrderBy) <> "" Then  '
'    strOrderBy = Me.sfmSubForm.Form.OrderBy ' Nz(sfmSubForm.Tag)
'Else
'    strOrderBy = ""
'End If
'If strOrderBy <> "" Then
' strOrderBy = Replace(strOrderBy, "qryHrmEmpSalary.", "")
'  strOrderBy = " order by " & strOrderBy
'End If
 
'Set rs3 = CurrentDb.OpenRecordset("select * from qryHrmSalary where " & strFilter & " Order by FdeptCode,FEmpId")
 
'DAO ADO
 
Set rs3 = CurrentDb.OpenRecordset("select * from tblHrmSalary Order by FdeptCode,FEmpId")
dblHeight = xlsWSheet.Cells(2, 2).RowHeight
P = 0
Do While Not rs3.EOF
    P = P + 1
    rs.MoveFirst
    If blnSnr Then xlsWSheet.Cells(4 + k, 1) = "序号"
 '.................................
 '.................................
    
    If blnSnr Then
        xlsWSheet.Cells(4 + k, 2).Select
    Else
        xlsWSheet.Cells(4 + k, 1).Select
    End If
    xlsApp.Selection.NumberFormatLocal = "yyyy/mm/dd;@" ' "[$-404]ggge""年""m""月""d""日"";@"
    xlsApp.Selection.HorizontalAlignment = -4131   'xlLeft
    If blnSnr Then
        xlsWSheet.Cells(4 + k, 2) = datInput ' date
        xlsWSheet.Range(xlsWSheet.Cells(4 + k, 4), xlsWSheet.Cells(4 + k, 10)).Select
    Else
        xlsWSheet.Cells(4 + k, 1) = datInput ' date
        xlsWSheet.Range(xlsWSheet.Cells(4 + k, 3), xlsWSheet.Cells(4 + k, 9)).Select
    End If
       
    
      '.................................
     '.................................
    k = k + 1
    xlsWSheet.Rows(4 + k & ":" & 4 + k).Select
    xlsApp.Selection.RowHeight = dblHeight ' 6.75
    k = k + 1
Loop
 
rs.MoveFirst
j = 0
If blnSnr Then j = 1
xlsWSheet.Rows(4 + k + 1 & ":" & 4 + k + 1).Select
 
xlsApp.Selection.Font.Size = 8
Do While Not rs.EOF
   j = j + 1
   If Left(rs("fldsource"), 2) = "Fi" Then
    xlsWSheet.Cells(4 + k + 1, j) = "=Sum(" & xlsWSheet.Range(xlsWSheet.Cells(4 + 1, j), xlsWSheet.Cells(4 + k, j)).Address(0, 0) & 
 
")"
   Else
 '.................................
 '.................................
End Sub
 
Private Sub Form_Load()
  DoCmd.Maximize
End Sub
 
Private Sub Form_Resize()
   sfmSubForm.Width = Me.InsideWidth
   sfmSubForm.Height = Me.InsideHeight - Me.Section(acFooter).Height - Me.Section(acHeader).Height
End Sub
 

 

发布人:zstmtony  
分享到:
点击次数:  更新时间:2018-02-28 11:06:33  【打印此页】  【关闭】
上一条:能排序的列表框-Access经典源码剖析  下一条:Access调用网页功能-中英自动翻译功能-Access经典源码剖析



相关文章

  • • Access自动播音员-Access经典源码剖析
  • • Access智能搜索组合框-Access经典源码剖析
  • • Access自动执行宏的妙用-Access经典源码剖析
  • • access图片分页展示及选择功能-Access经典源码剖析
  • • 通用读取文本文件模块-Access经典源码剖析
  • • Access通用TAB键和默认值设置-Access经典源码剖析
  • • access图片文件保存到数据库的通用技巧-Access经典源码剖析
  • • 数据自动导出多个Excel或者多个工作表-Access经典源码剖析

热门文章

  • [2018-02-28] access图片文件保存到数据库的通用技巧-Access经典源码剖析access数据库
  • [2018-02-28] Access多层架构开发思路-Access经典源码剖析access数据库
  • [2018-02-28] Access调用网页功能-版本自动更新-Access经典源码剖析access数据库
  • [2018-02-28] Access专业工资条打印-Access经典源码剖析access数据库
  • [2018-02-28] 能排序的列表框-Access经典源码剖析access数据库
  • [2018-02-28] Access动画式关闭窗体-Access经典源码剖析access数据库

热门产品

  1. 通用POS软件

    通用POS软件

  2. 通用票据打印软件

    通用票据打印软件

  3. 短信专家接口(可用于企业及个人多种短信用途)

    短信专家接口(可用于企业及个人多种短信用途)

公司动态|在线留言|在线反馈|联系我们|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2018 粤ICP备10043721号

广东省中山市西苑广场富贵阁20楼A座

电话:0760-88315075 手机:13928102596 QQ:1918333016

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2021  www.metinfo.cn