📄 v6bj11-07b.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 1 'vbDataSource
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "cls基本情况"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Dim WithEvents adoPrimaryRS As Recordset
Attribute adoPrimaryRS.VB_VarHelpID = -1
Private DoingRequery As Boolean
Public Event MoveComplete()
Private Sub Class_Initialize()
Dim db As Connection
Dim mpath As String
mpath = App.Path
If Right(mpath, 1) <> "\" Then mpath = mpath + "\"
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" + mpath + "Student.mdb;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "SHAPE {select 出生年月,姓名,性别,学号,专业 from 基本情况} AS ParentCMD APPEND ({select 学号,课程,成绩 from 学生成绩表 } AS ChildCMD RELATE 学号 TO 学号) AS ChildCMD", db, adOpenStatic, adLockOptimistic
DataMembers.Add "Primary"
DataMembers.Add "Secondary"
End Sub
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
If DoingRequery Then Exit Sub
Select Case DataMember
Case "Primary"
Set Data = adoPrimaryRS
Case "Secondary"
Set Data = adoPrimaryRS("ChildCMD").UnderlyingValue
End Select
End Sub
Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
RaiseEvent MoveComplete
End Sub
Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'验证代码置于此处
'下列动作发生时该事件被调用
Dim bCancel As Boolean
Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select
If bCancel Then adStatus = adStatusCancel
End Sub
Public Property Get EditingRecord() As Boolean
EditingRecord = (adoPrimaryRS.EditMode <> adEditNone)
End Property
Public Property Get AbsolutePosition() As Long
AbsolutePosition = adoPrimaryRS.AbsolutePosition
End Property
Public Sub AddNew()
adoPrimaryRS.AddNew
End Sub
Public Sub Delete()
adoPrimaryRS.Delete
MoveNext
End Sub
Public Sub Requery()
DoingRequery = True
DataMemberChanged "Primary"
DataMemberChanged "Secondary"
adoPrimaryRS.Requery
DoingRequery = False
DataMemberChanged "Primary"
DataMemberChanged "Secondary"
End Sub
Public Sub Update()
With adoPrimaryRS
.UpdateBatch adAffectAll
If .EditMode = adEditAdd Then
MoveLast
End If
End With
End Sub
Public Sub Cancel()
With adoPrimaryRS
.CancelUpdate
If .EditMode = adEditAdd Then
MoveFirst
End If
End With
End Sub
Public Sub MoveFirst()
adoPrimaryRS.MoveFirst
End Sub
Public Sub MoveLast()
adoPrimaryRS.MoveLast
End Sub
Public Sub MoveNext()
If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveLast
End If
End Sub
Public Sub MovePrevious()
If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'已到最后返回
adoPrimaryRS.MoveFirst
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -