VB程序学习代码记录20160827

本文记录了VB中对数据库操作的关键知识点,重点在于Recordset对象的使用。Recordset对象作为访问数据库的核心,可以用来浏览和操作数据库表,分为表类型、动态集类型和快照类型三种。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库中的表是不允许直接访问的,只有通过recordset对象对其进行浏览及操作。
一个recordset对象表示一个或多个数据库表中的集合,或者运行一次查询所得的记录结果。
记录集对象有3种类型:表类型(DbOpenTable)、动态集类型(DbOpenDynaset)、快照类型(DbOpenSnapshot)

Dim DAOmydb1 As Database
Dim DAOmyrs1 As Recordset
Dim addbln As Boolean

Private Sub cmdAdd_Click()
    addbln = True
    Controls_State True
    txtfjh.Text = ""
    txtjg.Text = ""
    txtpz.Text = ""
    txtbz.Text = ""
    txtfjh.SetFocus
End Sub

Private Sub cmdCancel_Click()
     Controls_State False
     cmdDelete.Visible = False
     Me.Height = 3585
End Sub

Private Sub cmdDelete_Click()
    Set DAOmyrs1 = DAOmydb1.OpenRecordset("kf", dbOpenDynaset)
    DAOmyrs1.FindFirst "房间号" Like " + chr(34) +txtfjh + chr(34) + """
    DAOmyrs1.Delete
    cmdMove_Click (2)
End Sub

Private Sub cmdExit_Click()
    End
End Sub

Private Sub cmdModify_Click()
    addbln = False
    Me.Height = 4785
    Controls_State True
    cmdDelete.Visible = True
    Set DAOmyrs1 = DAOmydb1.OpenRecordset("select * from kf order by 房间号", dbOpenSnapshot)
    Call cmdMove_Click(0)
End Sub

Private Sub cmdMove_Click(Index As Integer)
    With DAOmyrs1
        Select Case Index
            Case Is = 0
                .MoveFirst
            Case Is = 1
                .MovePrevious
                If .BOF Then
                    MsgBox "已经到第一条记录!"
                    .MoveFirst
                End If
            Case Is = 2
                .MoveNext
                 If .EOF Then
                    MsgBox "已经到最后一条记录!"
                    .MoveLast
                End If
            Case Is = 3
                .MoveLast
        End Select
        Call ViewData
        lblRecordCount.Caption = "共" & .RecordCount & "条记录,第" & .AbsolutePosition + 1 & "条记录"
    End With
End Sub

Private Sub cmdSave_Click()
    If txtfjh.Text = "" Or Combo1.Text = "" Or Combo2.Text = "" Or txtjg.Text = "" Then
        MsgBox "此项不允许为空"
        Exit Sub
    End If
    If addbln = True Then
        Set DAOmyrs1 = DAOmydb1.OpenRecordset("kf", dbOpenTable)
        DAOmyrs1.AddNew
        DAOmyrs1.Fields("房间号") = txtfjh.Text
        DAOmyrs1.Fields("房间类型") = Combo1.Text
        DAOmyrs1.Fields("房态") = Combo2.Text
        DAOmyrs1.Fields("单价") = txtjg.Text
        DAOmyrs1.Fields("配置") = txtpz.Text
        DAOmyrs1.Fields("备注") = txtbz.Text
        DAOmyrs1.Update
    Else
        Set DAOmyrs1 = DAOmydb1.OpenRecordset("kf", dbOpenDynaset)
        DAOmyrs1.FindFirst "房间号" Like " + chr(34) +txtfjh + chr(34) + """
        DAOmyrs1.Edit
           DAOmyrs1.Fields("房间号") = txtfjh.Text
        DAOmyrs1.Fields("房间类型") = Combo1.Text
        DAOmyrs1.Fields("房态") = Combo2.Text
        DAOmyrs1.Fields("单价") = txtjg.Text
        DAOmyrs1.Fields("配置") = txtpz.Text
        DAOmyrs1.Fields("备注") = txtbz.Text
        DAOmyrs1.Update
        cmdDelete.Visible = False
        Me.Height = 4785
    End If
    Controls_State False
End Sub

Private Sub Form_Load()
    Set DAOmydb1 = Workspaces(0).OpenDatabase(App.Path & "\db_kfgl.mdb")
    Controls_State False
    Combo1.AddItem "普房"
    Combo1.AddItem "标准房"
    Combo1.AddItem "双人房"
    Combo1.AddItem "套房"
    Combo2.AddItem "空房"
    Combo2.AddItem "入住"
    Combo2.AddItem "维修"
    Combo2.AddItem "打扫中"
    Me.Height = 3585
End Sub

Sub Controls_State(bVal As Boolean)
  cmdAdd.Enabled = Not bVal
  cmdModify.Enabled = Not bVal
  cmdSave.Enabled = bVal
  cmdCancel.Enabled = bVal
  txtfjh.Enabled = bVal
  Combo1.Enabled = bVal
  Combo2.Enabled = bVal
  txtjg.Enabled = bVal
  txtpz.Enabled = bVal
  txtbz.Enabled = bVal
End Sub

Private Sub txtfjh_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn Then Combo1.SetFocus
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn Then Combo2.SetFocus
End Sub
Private Sub Combo2_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn Then txtjg.SetFocus
End Sub
Private Sub txtjg_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn Then txtpz.SetFocus
End Sub
Private Sub txtpz_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyReturn Then txtbz.SetFocus
End Sub

Sub ViewData()
  If DAOmyrs1.Fields("房间号") <> "" Then txtfjh.Text = DAOmyrs1.Fields("房间号")
  If DAOmyrs1.Fields("房间类型") <> "" Then Combo1.Text = DAOmyrs1.Fields("房间类型")
  If DAOmyrs1.Fields("房态") <> "" Then Combo2.Text = DAOmyrs1.Fields("房态")
  txtjg.Text = DAOmyrs1.Fields("单价")
  If DAOmyrs1.Fields("配置") <> "" Then txtpz.Text = DAOmyrs1.Fields("配置") Else txtpz.Text = ""
  If DAOmyrs1.Fields("备注") <> "" Then txtbz.Text = DAOmyrs1.Fields("备注") Else txtbz.Text = ""
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值