代码如下:
Private Sub Command1_Click()
dim j as integer
dim sql as string
dim rs as new ADODB.Recordsetsql = "select * from Checking_attend where 考勤时间 = '" & Trim(Combo1.Text) & "' and 所在部门='" & Trim(Combo3.Text) & "'"
transactsql (sql)
rs.Open sql, conn, adOpenKeyset, adLockOptimistic
j = 1
While Not rs .EOF '循环填充
MS1.TextMatrix(j, 0) = rs.Fields("职工编号") & ""
MS1.TextMatrix(j, 1) = rs.Fields("职工姓名") & ""
MS1.TextMatrix(j, 2) = rs.Fields("所在部门") & ""
MS1.TextMatrix(j, 3) = rs.Fields("考勤时间") & ""
MS1.TextMatrix(j, 4) = rs.Fields("事假") & ""
MS1.TextMatrix(j, 5) = rs.Fields("其它假") & ""
MS1.TextMatrix(j, 6) = rs.Fields("总假") & ""
rs.MoveNext
j = j + 1
Wend
End Sub 上面的代码可以实现查询,但是问题时刷新不了,比如"人事部"有5人,"财务部"只有4人,当先查询人事部时没问题,但是你再查询"财务部"就有问题了,除了显示财务部4人外,还显示人事部1人,怎样实现数据的动态刷新?
Private Sub Command1_Click()
dim j as integer
dim sql as string
dim rs as new ADODB.Recordsetsql = "select * from Checking_attend where 考勤时间 = '" & Trim(Combo1.Text) & "' and 所在部门='" & Trim(Combo3.Text) & "'"
transactsql (sql)
rs.Open sql, conn, adOpenKeyset, adLockOptimistic
j = 1
While Not rs .EOF '循环填充
MS1.TextMatrix(j, 0) = rs.Fields("职工编号") & ""
MS1.TextMatrix(j, 1) = rs.Fields("职工姓名") & ""
MS1.TextMatrix(j, 2) = rs.Fields("所在部门") & ""
MS1.TextMatrix(j, 3) = rs.Fields("考勤时间") & ""
MS1.TextMatrix(j, 4) = rs.Fields("事假") & ""
MS1.TextMatrix(j, 5) = rs.Fields("其它假") & ""
MS1.TextMatrix(j, 6) = rs.Fields("总假") & ""
rs.MoveNext
j = j + 1
Wend
End Sub 上面的代码可以实现查询,但是问题时刷新不了,比如"人事部"有5人,"财务部"只有4人,当先查询人事部时没问题,但是你再查询"财务部"就有问题了,除了显示财务部4人外,还显示人事部1人,怎样实现数据的动态刷新?
dim rs as new ADODB.Recordset例:dim i as long,j as long
With ms1
.Cols = 6
.Rows = 2
.FixedCols = 0
.FixedRows = 1
.AllowUserResizing = flexResizeBoth
.GridLinesFixed = flexGridFlat
.FocusRect = flexFocusLight
.SelectionMode = flexSelectionFree
.Clear
.TextMatrix(0, 0) = "标题1"
.TextMatrix(0, 1) = "标题2"
.TextMatrix(0, 2) = "标题3"
.TextMatrix(0, 3) = "标题4"
.TextMatrix(0, 4) = "标题5"
.TextMatrix(0, 5) = "标题6"
.ColWidth(0) = 2000
.ColWidth(1) = 500
.ColWidth(2) = 500
.ColWidth(3) = 500
.ColWidth(4) = 500
.ColWidth(5) = 0sql = "select * from Checking_attend where 考勤时间 = '" & Trim(Combo1.Text) & "' and 所在部门='" & Trim(Combo3.Text) & "'"
transactsql (sql)
rs.Open sql, conn, adOpenKeyset, adLockOptimistic
if rs.eof then
rs.close
set rs=nothing
exit sub
end if
rs.MoveLast
i = rs.AbsolutePosition
rs.MoveFirst for j=1 to i
MS1.TextMatrix(j, 0) = rs.Fields("职工编号") & ""
MS1.TextMatrix(j, 1) = rs.Fields("职工姓名") & ""
MS1.TextMatrix(j, 2) = rs.Fields("所在部门") & ""
MS1.TextMatrix(j, 3) = rs.Fields("考勤时间") & ""
MS1.TextMatrix(j, 4) = rs.Fields("事假") & ""
MS1.TextMatrix(j, 5) = rs.Fields("其它假") & ""
MS1.TextMatrix(j, 6) = rs.Fields("总假") & ""
rs.MoveNext
next
rs.close
set rs=nothingEnd Sub
MS1.Rows = 2
for i=0 to MS1.cols-1
MS1.TextMatrix(1, i) =""
next
call InitST_MSFlexGridPrivate Sub InitST_MSFlexGrid()
With ST_MSFlexGrid
.Clear
.Rows = 3
.Cols = 7
.Row = 0
.Col = 0 '定各单元格的属性和写题头
.ColWidth(0) = 900
.ColAlignment(0) = 4
.Text = "职工编号"
.Col = 1
.ColWidth(1) = 2500
.ColAlignment(1) = 4
.Text = "职工姓名"
.Col = 2
.ColWidth(2) = 3000
.ColAlignment(2) = 4
.Text = "所在部门"
.Col = 3
.ColWidth(3) = 1800
.ColAlignment(3) = 4
.Text = "考勤时间"
.Col = 4
.ColWidth(4) = 1800
.ColAlignment(4) = 4
.Text = "事假"
.Col = 5
.ColWidth(5) = 1800
.ColAlignment(5) = 4
.Text = "其它假"
.Col = 6
.ColWidth(6) = 1800
.ColAlignment(6) = 4
.Text = "总假"
End With
End Sub
dim j as integer
dim sql as string
dim rs as new ADODB.Recordsetsql = "select * from Checking_attend where 考勤时间 = '" & Trim(Combo1.Text) & "' and 所在部门='" & Trim(Combo3.Text) & "'"
transactsql (sql)
rs.Open sql, conn, adOpenKeyset, adLockOptimistic
j = 1
MS1.rows=1'''''''''''''''''''''''''''''''''''增加的语句 While Not rs .EOF '循环填充 MS1.rows=MS1.rows+1'''''''''''''''''''''''''''''''''''增加的语句
MS1.TextMatrix(j, 0) = rs.Fields("职工编号") & ""
MS1.TextMatrix(j, 1) = rs.Fields("职工姓名") & ""
MS1.TextMatrix(j, 2) = rs.Fields("所在部门") & ""
MS1.TextMatrix(j, 3) = rs.Fields("考勤时间") & ""
MS1.TextMatrix(j, 4) = rs.Fields("事假") & ""
MS1.TextMatrix(j, 5) = rs.Fields("其它假") & ""
MS1.TextMatrix(j, 6) = rs.Fields("总假") & ""
rs.MoveNext
j = j + 1
Wend
End Sub
不用clear'清空
MS1.Rows = 2
for i=0 to MS1.cols-1
MS1.TextMatrix(1, i) =""
next
_________________________________feiyun0112的方法在ROWS比较多时,应该比clear更快些,但上面的代码要改成:
for j=1 to i
MS1.TextMatrix(j, 0) = rs.Fields("职工编号") & ""
MS1.TextMatrix(j, 1) = rs.Fields("职工姓名") & ""
MS1.TextMatrix(j, 2) = rs.Fields("所在部门") & ""
MS1.TextMatrix(j, 3) = rs.Fields("考勤时间") & ""
MS1.TextMatrix(j, 4) = rs.Fields("事假") & ""
MS1.TextMatrix(j, 5) = rs.Fields("其它假") & ""
MS1.TextMatrix(j, 6) = rs.Fields("总假") & ""
rs.MoveNext
MS1.ROWS=MS1.ROWS+1
next
MS1.ROWS=MS1.ROWS-1这样的方法速度最快!不要用While Not rs .EOF ,否则每rs.MoveNext一次,都要做一次判断RS是否已EOF,速度慢很多,可以拿10W条记录做个实验的.