
VB+Access设计图书管理系统(8) |
显示msflexgrid1子程序 Public Sub displaygrid1() Dim i As Integer On Error GoTo displayerror setgrid setgridhead MSFlexGrid1.Row = 0 If Not rs_data1.EOF Then rs_data1.MoveFirst Do While Not rs_data1.EOF MSFlexGrid1.Row = MSFlexGrid1.Row + 1 MSFlexGrid1.Col = 0 If Not IsNull(rs_data1.Fields(0)) Then MSFlexGrid1.Text = rs_data1.Fields(0) Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 1 If Not IsNull(rs_data1.Fields(1)) Then MSFlexGrid1.Text = rs_data1.Fields(1) Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 2 If Not IsNull(rs_data1.Fields(2)) Then MSFlexGrid1.Text = rs_data1.Fields(2) Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 3 If Not IsNull(rs_data1.Fields(3)) Then MSFlexGrid1.Text = rs_data1.Fields(3) Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 4 If Not IsNull(rs_data1.Fields(4)) Then MSFlexGrid1.Text = rs_data1.Fields(4) Else MSFlexGrid1.Text = "" MSFlexGrid1.Col = 5 If Not IsNull(rs_data1.Fields(5)) Then MSFlexGrid1.Text = rs_data1.Fields(5) Else MSFlexGrid1.Text = "" rs_data1.MoveNext Loop End If displayerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Public Sub setgrid() Dim i As Integer On Error GoTo seterror With MSFlexGrid1 .ScrollBars = flexScrollBarBoth .FixedCols = 0 .Rows = rs_data1.RecordCount + 1 .Cols = 6 .SelectionMode = flexSelectionByRow For i = 0 To .Rows - 1 .RowHeight(i) = 315 Next For i = 0 To .Cols - 1 .ColWidth(i) = 1300 Next i End With Exit Sub seterror: MsgBox Err.Description End Sub Public Sub setgridhead() On Error GoTo setheaderror MSFlexGrid1.Row = 0 MSFlexGrid1.Col = 0 MSFlexGrid1.Text = "编号" MSFlexGrid1.Col = 1 MSFlexGrid1.Text = "购买日期" MSFlexGrid1.Col = 2 MSFlexGrid1.Text = "书名" MSFlexGrid1.Col = 3 MSFlexGrid1.Text = "类型" MSFlexGrid1.Col = 4 MSFlexGrid1.Text = "定价" MSFlexGrid1.Col = 5 MSFlexGrid1.Text = "备注" Exit Sub setheaderror: MsgBox Err.Description End Sub Private Sub Form_Unload(Cancel As Integer) findok = False rs_data1.Close rs_custom.Close End Sub Private Sub MSFlexGrid1_Click() On Error GoTo griderror Dim getrow As Long getrow = MSFlexGrid1.Row If MSFlexGrid1.Rows = 1 Then MsgBox "无相关记录", vbOKOnly + vbExclamation, "" Else select_row = MSFlexGrid1.TextMatrix(getrow, 0) End If griderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Public Sub showdata() With MSFlexGrid2 .Rows = rs_data2.RecordCount + 1 .Row = 0 If Not rs_data2.EOF Then rs_data2.MoveFirst Do While Not rs_data2.EOF .Row = .Row + 1 .Col = 0 If Not IsNull(rs_data2.Fields(0)) Then .Text = rs_data2.Fields(0) Else .Text = "" .Col = 1 If Not IsNull(rs_data2.Fields(1)) Then .Text = rs_data2.Fields(1) Else .Text = "" .Col = 2 If Not IsNull(rs_data2.Fields(2)) Then .Text = rs_data2.Fields(2) Else .Text = "" .Col = 3 If Not IsNull(rs_data2.Fields(3)) Then .Text = rs_data2.Fields(3) Else .Text = "" .Col = 4 If Not IsNull(rs_data2.Fields(4)) And CDbl(rs_data2.Fields(4)) < 0 Then .Text = -CDbl(rs_data2.Fields(4)) Else .Text = rs_data2.Fields(4) End If .Col = 5 If Not IsNull(rs_data2.Fields(5)) Then .Text = rs_data2.Fields(5) Else .Text = "" .Col = 6 If Not IsNull(rs_data2.Fields(6)) Then .Text = rs_data2.Fields(6) Else .Text = "" .Col = 7 If Not IsNull(rs_data2.Fields(7)) And CDbl(rs_data2.Fields(4)) < 0 Then .Text = -CDbl(rs_data2.Fields(7)) Else .Text = rs_data2.Fields(7) End If .Col = 8 If Not IsNull(rs_data2.Fields(8)) Then .Text = rs_data2.Fields(8) Else .Text = "" rs_data2.MoveNext Loop rs_data2.MoveLast End If End With End Sub (5) 查询子窗体代码 查询子窗体是用来查询库房中图书资料明细的。其运行效果如图41所示。 ![]() 图41 查询子窗体运行效果 在列表框中给出编号或年月日后,“查询”按钮的Click事件将给出与数据库查找比较的结果。 Private Sub Command1_Click() On Error GoTo cmderror Dim find_date1 As String Dim find_date2 As String If Option1.Value = True Then sqlfind = "select * from 图书资料 where 编号 between " & _ Combo1(0).Text & "" & " and " & "" & Combo1(1).Text & "" End If If Option2.Value = True Then find_date1 = Format(CDate(Comboy(0).Text & "-" & _ Combom(0).Text & "-" & Combod(0).Text), "yyyy-mm-dd") find_date2 = Format(CDate(Comboy(1).Text & "-" & _ Combom(1).Text & "-" & Combod(1).Text), "yyyy-mm-dd") sqlfind = "select * from 图书资料 where 购买日期 between #" & _ find_date1 & "#" & " and" & " #" & find_date2 & "#" End If rs_data1.Open sqlfind, conn, adOpenKeyset, adLockPessimistic frmdatamanage.displaygrid1 Unload Me cmderror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub 运行查询子窗体时,组合框中就已经从数据库中提取了货单号和年月日两个待查条件。 Dim i As Integer Dim sql As String If findok = True Then rs_data1.Close End If sql = "select * from 图书资料 order by 编号 desc" rs_find.CursorLocation = adUseClient rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_find.EOF = False Then 添加编号 With rs_find Do While Not .EOF Combo1(0).AddItem .Fields(0) Combo1(1).AddItem .Fields(0) .MoveNext Loop End With End If For i = 2001 To 2005 添加年 Comboy(0).AddItem i Comboy(1).AddItem i Next i For i = 1 To 12 添加月 Combom(0).AddItem i Combom(1).AddItem i Next i For i = 1 To 31 添加日 Combod(0).AddItem i Combod(1).AddItem i Next i End Sub |