Office中国论坛/Access中国论坛

标题: 请版主帮忙完善一下代码实现我想要的功能,谢谢! [打印本页]

作者: ysh5858    时间: 2011-12-17 18:22
标题: 请版主帮忙完善一下代码实现我想要的功能,谢谢!
请版主帮忙完善一下代码实现我想要的功能[见图片说明],谢谢!
作者: ysh5858    时间: 2011-12-18 17:19
Henry D. Sy 版主:请帮帮忙呀!谢谢!
作者: roych    时间: 2011-12-19 00:26
本帖最后由 roych 于 2011-12-19 01:16 编辑

日期包含了月份,因此只需要日期即可,这样会更方便处理,否则得多写一个筛选字段。
此外,草草看了下里面的统计字段,由于里面没有把条件加上去。因此,需要一个公共变量进行把筛选条件进行返回。晚些再看看,先睡觉~~~
作者: Henry D. Sy    时间: 2011-12-19 09:47
ysh5858 发表于 2011-12-18 17:19
Henry D. Sy 版主:请帮帮忙呀!谢谢!

呜啊,这么都问题,
能不能一个一个来
作者: Henry D. Sy    时间: 2011-12-19 09:51
问题3:按roych说的,把月份去掉
如果想要查询月份,比如11月份的,可以输入2011-11-1至2011-11-30来查询!
另外,编程日期没有必要format为文本
更改如下:
  1. Private Sub 查询_Click()
  2.     Dim sLookFor As String
  3.     sLookFor = ""
  4.     If 模具编号 <> "" Then
  5.         sLookFor = sLookFor & "模具编号='" & 模具编号 & "' and "
  6.     End If
  7.     If 零件编号 <> "" Then
  8.         sLookFor = sLookFor & "零件编号='" & 零件编号 & "' and "
  9.     End If
  10.     If 零件名称 <> "" Then
  11.         sLookFor = sLookFor & "零件名称='" & 零件名称 & "' and "
  12.     End If
  13.     If 加工类别 <> "" Then
  14.         sLookFor = sLookFor & "类别='" & 加工类别 & "' and "
  15.     End If
  16.     If 编程员 <> "" Then
  17.         sLookFor = sLookFor & "编程员='" & 编程员 & "' and "
  18.     End If
  19.     If 操作员 <> "" Then
  20.         sLookFor = sLookFor & "操作员='" & 操作员 & "' and "
  21.     End If
  22.     If 机台号 <> "" Then
  23.         sLookFor = sLookFor & "机台号='" & 机台号 & "' and "
  24.     End If

  25.     If Not IsNull(Me.完成日期1) Then
  26.         sLookFor = sLookFor & "([完成加工时间] >= #" & Format(Me.完成日期1, "yyyy-mm-dd") & "#) AND "
  27.     End If
  28.     If Not IsNull(Me.完成日期2) Then
  29.         sLookFor = sLookFor & "([完成加工时间] <= #" & Format(Me.完成日期2, "yyyy-mm-dd") & "#) AND "
  30.     End If

  31.     If 编程日期1 <> "" Then
  32.         sLookFor = sLookFor & "([编程完成日期] >= #" & Me.编程日期1 & "#) AND "
  33.     End If
  34.     If 编程日期2 <> "" Then
  35.         sLookFor = sLookFor & "([编程完成日期] <= #" & Me.编程日期2 & "#) AND "
  36.     End If

  37.     If sLookFor <> "" Then
  38.         sLookFor = Mid(sLookFor, 1, Len(sLookFor) - 5)

  39.         Me.加工信息综合查询_子窗体.Form.Filter = sLookFor
  40.         Me.加工信息综合查询_子窗体.Form.FilterOn = True
  41.     Else
  42.         MsgBox "请输入要查找的对象"
  43.     End If
  44. End Sub
复制代码

作者: Henry D. Sy    时间: 2011-12-19 09:56
问题2:
参照cuxun大肚对日期为null的处理方式:
函数稍微更改一下
应用:
实际工时: gongshi(nz([开始加工时间],0),nz([完成加工时间],0),"M")/60
  1. Public Function GongShi(TimeStart As Date, TimeEnd As Date, Optional MH As String = "M") As Integer

  2.     Dim i As Integer
  3.     If MH = "H" Then
  4.         i = 24
  5.     Else
  6.         i = 1440
  7.     End If
  8.      If TimeStart = 0 Or TimeEnd = 0 Then
  9.         GongShi = 0
  10.     ElseIf Nz(TimeEnd) < Nz(TimeStart) Then
  11.         GongShi = (Nz(TimeEnd) - Nz(TimeStart) + 1) * i
  12.     Else
  13.         GongShi = (Nz(TimeEnd) - Nz(TimeStart)) * i
  14.     End If

  15. End Function
复制代码

作者: Henry D. Sy    时间: 2011-12-19 09:57
问题1,问题4
下回待续,暂时有事!
作者: Henry D. Sy    时间: 2011-12-19 10:59
问题4-1打印报表
根据子窗体的记录源建立报表A
然后:
  1. Private Sub 打印报表_Click()
  2.     DoCmd.OpenReport "A", acViewPreview, , Me.加工信息综合查询_子窗体.Form.Filter
  3. End Sub
复制代码

作者: Henry D. Sy    时间: 2011-12-19 11:18
问题4-2导出excel
随便建立一个查询,比如A
然后:
  1. Private Sub 导出Excel_Click()
  2.     Dim qdf As DAO.QueryDef
  3.     Dim Criteria As String
  4.     Dim sSQL As String
  5.     sSQL = "SELECT 工序ID, 模具编号, 零件编号, 零件名称, 类别, 数量,估工,需求日期,编程员,编程完成日期,机台号,操作员, 开始加工时间, 完成加工时间,完成数量,工时,金额,状态,备注说明 FROM 加工信息综合查询"
  6.     Criteria = Me.加工信息综合查询_子窗体.Form.Filter
  7.     If Criteria <> "" Then
  8.         sSQL = sSQL & " where " & Criteria
  9.     End If
  10.     Set qdf = CurrentDb.QueryDefs("A")
  11.     qdf.SQL = sSQL
  12.     DoCmd.OutputTo acOutputQuery, "A", acFormatXLS, , True
  13.     qdf.Close
  14.     Set qdf = Nothing
  15. End Sub
复制代码

作者: Henry D. Sy    时间: 2011-12-19 11:21
最后一个问题,也就是问题1=吃饭去!
作者: Henry D. Sy    时间: 2011-12-19 12:50
  1. 最后一个问题详见附件
复制代码
[attach]47731[/attach]
作者: Henry D. Sy    时间: 2011-12-19 22:36
本帖最后由 Henry D. Sy 于 2011-12-19 22:37 编辑

[attach]47736[/attach]
没注意到你还有一个选项组
更正一下!!
作者: ysh5858    时间: 2011-12-19 22:45
Henry D. Sy 发表于 2011-12-19 22:36
没注意到你还有一个选项组
更正一下!!

辛苦Henry D. Sy 版主了!非常感谢!
作者: daxin1    时间: 2011-12-20 07:32
这个例子能否写一个循环变量来简化代码呢?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3