设为首页   |  加入收藏夹 快速导航:  热门文章  |  最新文章  |  梦想博客  
当前位置:编程之家 -> 文章频道 ->vb 
站内搜索:  

VB+Access设计图书管理系统(8)

作者:不详 来源:csdn 整理日期:2007-02-19


  显示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所示。

  VB+Access设计图书管理系统(图四十)

  图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

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  [11]