各位高手,我现在有一个问题比较困惑,我把查询出的数据以循环的形式读入文本文件,可是碰到当一个记录的某个字段为空时它就会自动填充上条读出记录的值,我很困惑,代码如下,请各位给点意见!Private Sub CmdUP_Click()
Dim filename As String
Dim i As Long
Dim 姓名, 日期, 星期, 出勤状况, 上班时间, 下班时间, 排班上班时间, 排班下班时间, 开始时间, 结束时间, 加班分钟数, 加班类型, 批准人, 备注 As String
Dim strSQL As String, strDes As String
Dim rs As New ADODB.Recordset
filename = "C:\MOSS\DOWNLOAD\Absent.txt"
strSQL = "SELECT 出勤汇总表.* FROM 出勤汇总表 where 姓名<>'' "
'判断姓名
If Trim(Combo1.text) <> "" Then
strSQL = strSQL + " and 姓名='" & Trim(Combo1.text) & "' "
End If
'判断出勤状况
If Trim(Combo2.text) <> "" Then
strSQL = strSQL + " and 出勤状况='" & Trim(Combo2.text) & "' "
End If
'判断出勤日期
If Trim(Text7.text) <> "" And Trim(Text4.text) <> "" Then
strSQL = strSQL + " and 日期 between '" & Trim(Text7.text) & " ' and '" & Trim(Text4.text) & " ' "
End If
Set rs = New ADODB.Recordset
Set rs = cn1.Execute(strSQL)
Open filename For Output As #1
Print #1, "姓名"; vbTab; "日期"; vbTab; "星期"; vbTab; "出勤状况"; vbTab; "上班时间"; vbTab; "下班时间"; vbTab; "排班上班时间"; vbTab; "排班下班班时间"; vbTab; "加班开始时间"; vbTab; "加班结束时间"; vbTab; "加班分钟数"; vbTab; "加班类型"; vbTab; "批准人"
'结果集
Do While rs.EOF <> True
姓名 = Trim(rs.Fields(0))
日期 = Trim(rs.Fields(1))
星期 = Trim(rs.Fields(2))
出勤状况 = Trim(rs.Fields(3))
上班时间 = Trim(rs.Fields(4))
下班时间 = Trim(rs.Fields(5))
排班上班时间 = Trim(rs.Fields(6))
排班下班时间 = Trim(rs.Fields(7))
开始时间 = Trim(rs.Fields(8))
结束时间 = Trim(rs.Fields(9))
加班分钟数 = Trim(rs.Fields(10))
加班类型 = Trim(rs.Fields(11))
批准人 = Trim(rs.Fields(12))
Print #1, 姓名; vbTab; 日期; vbTab; 星期; vbTab; 出勤状况; vbTab; 上班时间; vbTab; 下班时间; vbTab; 排班上班时间; vbTab; 排班下班班时间; vbTab; 开始时间; vbTab; 结束时间; vbTab; 加班分钟数; vbTab; 加班类型; vbTab; 批准人
rs.MoveNext
Loop
Close #1
MsgBox "数据下载成功!", vbOKOnly + vbInformation, "信息!"
CmdUP.Enabled = False
End Sub
Dim filename As String
Dim i As Long
Dim 姓名, 日期, 星期, 出勤状况, 上班时间, 下班时间, 排班上班时间, 排班下班时间, 开始时间, 结束时间, 加班分钟数, 加班类型, 批准人, 备注 As String
Dim strSQL As String, strDes As String
Dim rs As New ADODB.Recordset
filename = "C:\MOSS\DOWNLOAD\Absent.txt"
strSQL = "SELECT 出勤汇总表.* FROM 出勤汇总表 where 姓名<>'' "
'判断姓名
If Trim(Combo1.text) <> "" Then
strSQL = strSQL + " and 姓名='" & Trim(Combo1.text) & "' "
End If
'判断出勤状况
If Trim(Combo2.text) <> "" Then
strSQL = strSQL + " and 出勤状况='" & Trim(Combo2.text) & "' "
End If
'判断出勤日期
If Trim(Text7.text) <> "" And Trim(Text4.text) <> "" Then
strSQL = strSQL + " and 日期 between '" & Trim(Text7.text) & " ' and '" & Trim(Text4.text) & " ' "
End If
Set rs = New ADODB.Recordset
Set rs = cn1.Execute(strSQL)
Open filename For Output As #1
Print #1, "姓名"; vbTab; "日期"; vbTab; "星期"; vbTab; "出勤状况"; vbTab; "上班时间"; vbTab; "下班时间"; vbTab; "排班上班时间"; vbTab; "排班下班班时间"; vbTab; "加班开始时间"; vbTab; "加班结束时间"; vbTab; "加班分钟数"; vbTab; "加班类型"; vbTab; "批准人"
'结果集
Do While rs.EOF <> True
姓名 = Trim(rs.Fields(0))
日期 = Trim(rs.Fields(1))
星期 = Trim(rs.Fields(2))
出勤状况 = Trim(rs.Fields(3))
上班时间 = Trim(rs.Fields(4))
下班时间 = Trim(rs.Fields(5))
排班上班时间 = Trim(rs.Fields(6))
排班下班时间 = Trim(rs.Fields(7))
开始时间 = Trim(rs.Fields(8))
结束时间 = Trim(rs.Fields(9))
加班分钟数 = Trim(rs.Fields(10))
加班类型 = Trim(rs.Fields(11))
批准人 = Trim(rs.Fields(12))
Print #1, 姓名; vbTab; 日期; vbTab; 星期; vbTab; 出勤状况; vbTab; 上班时间; vbTab; 下班时间; vbTab; 排班上班时间; vbTab; 排班下班班时间; vbTab; 开始时间; vbTab; 结束时间; vbTab; 加班分钟数; vbTab; 加班类型; vbTab; 批准人
rs.MoveNext
Loop
Close #1
MsgBox "数据下载成功!", vbOKOnly + vbInformation, "信息!"
CmdUP.Enabled = False
End Sub
解决方案 »
- 请clear_zero(清零mm)帮忙翻译,谢谢!
- 看完VB,我仍在谷底,有高手带我到山顶俯瞰下这VB山谷么?高手指教,低手帮顶 谢谢啊
- 打听VB程序安装制作
- 我想在关机的时候,程序能退出死循环,为什么以下代码会不行?
- 关于MSHFLEXGRID什么删除??
- 求救:编译后的程序无法运行。
- 自己做的屏保如何支持设置屏保密码,我做了个屏保但无法为其设置屏保密码,该如何写代码支持屏保密码设置
- vb中的错误提示BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录
- 那位高手,救命亚,明天老师要检查,可是我做的程序出拉问题,救我一救
- 刚刚把系统格式化重装,运行一VB编的exe文件,系统提示:Dbgrid32.ocx找不到或出错,100请教
- vsflex 8选中一个区域(不是一个格子)后, 放开鼠标 ,弹出 一个inputbox,输入字符后 怎么令选中的区域填充这个字符
- VB 获得本机IP地址
改成这样
姓名 = iif(Trim(rs.Fields(0))="" or isunll(rs.Fields(0)),"",Trim(rs.Fields(0)))