List 7-148 FormSlipDetailフォームのRefreshDataプロシージャ


  1: Private WithEvents g_objRec As ADODB.Recordset
  2: 
  3: Private Sub RefreshData()
  4:     ' データグリッドに表示されているデータを最新の情報に更新する
  5:     Dim objSlip As Business.Slip
  6:     Dim crow As Long
  7:     Dim CustomerID As Variant, SUBTOTAL As Variant
  8:     Dim TAX As Variant, TOTAL As Variant
  9:     Dim MADEDATE As Variant, MADEUSER As Variant
 10:     Dim LASTDATE As Variant, LASTUSER As Variant
 11: 
 12:     ' データベースに接続して最新の情報を取得し,
 13:     ' データグリッドに表示する
 14:     On Error GoTo ErrHandle
 15:     
 16:     Set objSlip = CreateObject("Business.Slip")
 17:     
 18:     Set g_objRec = objSlip.GetSlipDetails(SlipID)
 19:     
 20:     ' 5列,0行に設定
 21:     FLXGrid_SlipDetail.Cols = 5
 22:     FLXGrid_SlipDetail.Rows = 0
 23:     FLXGrid_SlipDetail.FixedCols = 0
 24:     FLXGrid_SlipDetail.FixedRows = 0
 25:     
 26:     ' 内容をすべて消去
 27:     FLXGrid_SlipDetail.Clear
 28:     
 29:     If Not g_objRec.EOF Then
 30:         g_objRec.Sort = "ID"
 31:         g_objRec.MoveFirst
 32:     End If
 33:     
 34:     ' 列見出しを入れる
 35:     FLXGrid_SlipDetail.AddItem "製品名" & vbTab & "数量" & vbTab & _
                                    "単価" & vbTab & "価格" & vbTab & "摘要"
 36: 
 37:     FLXGrid_SlipDetail.ColAlignment(0) = flexAlignLeftCenter
 38:     FLXGrid_SlipDetail.ColAlignment(1) = flexAlignRightCenter
 39:     FLXGrid_SlipDetail.ColAlignment(2) = flexAlignRightCenter
 40:     FLXGrid_SlipDetail.ColAlignment(3) = flexAlignRightCenter
 41:     FLXGrid_SlipDetail.ColAlignment(4) = flexAlignLeftCenter
 42: 
 43:     ' 各列を入れる
 44:     crow = 1
 45:     
 46:     While Not g_objRec.EOF
 47:         FLXGrid_SlipDetail.AddItem g_objRec.Fields("PRODUCTNAME").Value & vbTab & _
                                        Format(g_objRec.Fields("NUMBER").Value, "#,##0") &vbTab & _
                                        Format(g_objRec.Fields("UNITPRICE").Value, """\""#,##0") & vbTab & _
                                        Format(g_objRec.Fields("PRICE").Value, """\""#,##0") & vbTab & _
                                        g_objRec.Fields("MEMO").Value & vbTab
 48:         FLXGrid_SlipDetail.RowData(crow) = g_objRec.Fields("ID").Value
 49:         If g_objRec.Fields("DELETEDFLAG").Value Then
 50:             ' 削除ずみのときには,取り消し線を表示する
 51:             FLXGrid_SlipDetail.col = 0
 52:             FLXGrid_SlipDetail.row = crow
 53:             FLXGrid_SlipDetail.ColSel = 4
 54:             FLXGrid_SlipDetail.RowSel = crow
 55:             FLXGrid_SlipDetail.FillStyle = flexFillRepeat
 56:             FLXGrid_SlipDetail.CellFontStrikeThrough = True
 57:         End If
 58:         g_objRec.MoveNext
 59:         crow = crow + 1
 60:     Wend
 61:     
 62:     ' 小計,消費税,合計を格納する
 63:     objSlip.GetSlip SlipID, CustomerID, SUBTOTAL, TAX, TOTAL, _
                         MADEDATE, MADEUSER, LASTDATE, LASTUSER
 64:     FLXGrid_SlipDetail.AddItem vbTab & vbTab & "小計" & vbTab & _
                                   Format(SUBTOTAL, """\""#,##0")
 65:     FLXGrid_SlipDetail.AddItem vbTab & vbTab & "消費税" & vbTab & _
                                   Format(TAX, """\""#,##0")
 66:     FLXGrid_SlipDetail.AddItem vbTab & vbTab & "合計" & vbTab & _
                                   Format(TOTAL, """\""#,##0")
 67:     
 68:     ' 列見出しを固定する
 69:     FLXGrid_SlipDetail.FixedRows = 1
 70:     
 71:     ' カレント行を一番うえに移動する
 72:     If Not g_objRec.EOF Then
 73:         g_objRec.MoveFirst
 74:     End If
 75:     
 76:     Set objSlip = Nothing
 77:     
 78:     Exit Sub
 79: ErrHandle:
 80:     ' エラーハンドラ
 81:     MsgBox Err.Description, vbOKOnly, "サーバーとの接続に失敗"
 82:     Set objSlip = Nothing
 83:     Set g_objRec = Nothing
 84: End Sub