-- 作者:douglas738888
-- 发布时间:2015/12/10 15:35:00
-- 又请教时间转换问题
大红袍老师,我设计了员工考勤的查询表窗,窗口中的TABLE1的时间格式自己已设置好,能正常显示,根据需要有时要打印查询某员工的考勤,我用专业报表进行设计,我尝试做了几个代码对不能正常显示上班时间为08:30,报表总显示1900/1/1. 不知是否我写的代码有误。
1. ACCESS的上班时间属性为短时间设置 2. 表列的上班时间属性为Time 3.电脑上的短时间是H:mm
Case "上班时间" For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = tb(r,c).PadLeft("0") & ":" & Format((tb(r,c)).PadLeft("0")) rt.Rows(0).Height = 7 \'设置行高 Next
Case "上班时间" For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = Format(tb(r,c), "H:mm") rt.Rows(0).Height = 7 \'设置行高 Next
|
-- 作者:大红袍
-- 发布时间:2015/12/10 16:36:00
--
设置列格式
DataTables("考勤_Table1").DataCols("上班时间").SetDateTimeFormat(DateTimeFormatEnum.Time) DataTables("考勤_Table1").DataCols("上班时限").SetDateTimeFormat(DateTimeFormatEnum.Time) DataTables("考勤_Table1").DataCols("上班计时").ExtendType = ExtendTypeEnum.TimeSpan DataTables("考勤_Table1").DataCols("下班时间").SetDateTimeFormat(DateTimeFormatEnum.Time) DataTables("考勤_Table1").DataCols("下班时限").SetDateTimeFormat(DateTimeFormatEnum.Time) DataTables("考勤_Table1").DataCols("下班计时").ExtendType = ExtendTypeEnum.TimeSpan DataTables("考勤_Table1").DataCols("工作时长").ExtendType = ExtendTypeEnum.TimeSpan
------------------------------------------------
打印代码
Dim doc As New PrintDoc \'定义一个新报表 Dim rt As New prt.RenderTable() \'定义一个新表格 Dim n As New prt.RenderText \'定义一个文本对象 Dim n1 As New prt.RenderText \'定义一个文本对象 Dim n2 As New prt.RenderText \'定义一个文本对象 Dim n3 As New prt.RenderText \'定义一个文本对象 \'Dim n4 As New prt.RenderText \'定义一个文本对象 Dim st As String Dim tb As Table = Tables("考勤_Table1") n.Text = "员工工作考勤明细报表" \'设置文本对象的内容 n.Style.Font = New Font("黑体", 20 , FontStyle.Bold) \'设置文本对象的字体 n.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本内容水平居中 doc.Body.Children.Add(n) n1.Text = "打印日期:"& Date.Now n1.Style.Font = New Font("黑体", 8 , FontStyle.Bold) \'设置文本对象的字体 n1.Style.TextAlignHorz = prt.AlignHorzEnum.Right \'文本内容水平居中 n1.X = 0 + 20 \'指定水平位置 n1.y = 18 + 20 \'指定垂直位置
n3.Style.Font = New Font("黑体", 8 , FontStyle.Bold) \'设置文本对象的字体 n3.Style.TextAlignHorz = prt.AlignHorzEnum.Left \'文本内容水平居中 n3.X = 5 + 20 \'指定水平位置 n3.y = 18 + 20 \'指定垂直位置 n3.Text = e.Form.Controls("Label5").Text
doc.Body.Children.Add(n3) \'将文本对象加入到报表 doc.Body.Children.Add(n2) \'将文本对象加入到报表 doc.Body.Children.Add(n1) doc.PageSetting.Landscape = True \'横向打印 rt.Width = "243" \'表格宽度为自动,也就是等于各列设置宽度之和 rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded \'表格宽度超出页宽时,可以水平换页 rt.Style.Font = tb.Font For c As Integer = 0 To tb.Cols.Count -1 \'逐列设置和填入内容 rt.Cells(0,c).Text = tb.Cols(c).Name \'列名作为标题 rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'标题内容水平居中 rt.Cols(c).Width = tb.Cols(c).PrintWidth \'列宽等于实际列宽 rt.Style.Spacing.Top = 10 \'表格和前面对象的垂直间隔为4毫米 rt.Style.Spacing.Bottom = 10 \'表和和前对象的垂直间隔为10毫米 If tb.Cols(c).IsNumeric OrElse tb.Cols(c).IsDate Then \'如果是数值或日期列 rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'数据水平居中 End If If tb.Cols(c).IsNumeric Then Select tb.Cols(c).Name Case "工作时长" For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = tb(r,c) \\ 3600 & ":" & Format((tb(r,c) Mod 3600) \\ 60,"00") rt.Rows(0).Height = 7 \'设置行高 Next Case Else For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = Format(tb(r,c), "0") rt.Rows(0).Height = 7 \'设置行高 Next End Select ElseIf tb.Cols(c).IsDate Select tb.Cols(c).Name Case "上班时间" For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = Format(tb(r,c), "HH:mm") rt.Rows(0).Height = 7 \'设置行高 Next End Select Else For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = tb(r,c) rt.Rows(0).Height = 7 \'设置行高 Next For i As Integer = 1 To 9 rt.Rows(i).Height = 5.5 Next End If Next rt.Style.Gridlines.All = New prt.Linedef(Color.Black) \'灰色网格线 rt.CellStyle.Spacing.All = 0.5 \'单元格内距设为0.5毫米 rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中 rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All \'利用行组,将第一行设为表头 rt.Style.Font = New Font("宋体", 10 , FontStyle.Bold) \'设置文本对象的字体 doc.Body.Children.Add(rt) \'将表格加入到报表 doc.Preview()
|
-- 作者:大红袍
-- 发布时间:2015/12/10 18:08:00
--
Case "上班时间", "上班时限"
需要处理的列,都写上去,而且要处理其余的的情况
Select tb.Cols(c).Name Case "上班时间", "上班时限" For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 rt.Cells(r + 1, c).Text = Format(tb(r,c), "HH:mm") rt.Rows(0).Height = 7 \'设置行高 Next
Case Else
\'写上你的代码 End Select
|