📄 client.cls
字号:
With adoRS
If Not .EOF Then
If m_IsDeleted Then
.Delete
Else
SaveRecord:
adoRS("Address") = IIF(m_Address= vbNullString, vbNullString, m_Address)
adoRS("City") = IIF(m_City= vbNullString, vbNullString, m_City)
adoRS("CompanyName") = IIF(m_CompanyName= vbNullString, vbNullString, m_CompanyName)
adoRS("ContactFirstName") = IIF(m_ContactFirstName= vbNullString, vbNullString, m_ContactFirstName)
adoRS("ContactLastName") = IIF(m_ContactLastName= vbNullString, vbNullString, m_ContactLastName)
adoRS("ContactTitle") = IIF(m_ContactTitle= vbNullString, vbNullString, m_ContactTitle)
adoRS("Country") = IIF(m_Country= vbNullString, vbNullString, m_Country)
adoRS("FaxNumber") = IIF(m_FaxNumber= vbNullString, vbNullString, m_FaxNumber)
adoRS("Notes") = IIF(m_Notes= vbNullString, vbNullString, m_Notes)
adoRS("PhoneNumber") = IIF(m_PhoneNumber= vbNullString, vbNullString, m_PhoneNumber)
adoRS("PostalCode") = IIF(m_PostalCode= vbNullString, vbNullString, m_PostalCode)
adoRS("StateOrProvince") = IIF(m_StateOrProvince= vbNullString, vbNullString, m_StateOrProvince)
.Update
m_ClientID = adoRS("ClientID")
m_OldClientID = m_ClientID
End If
Else
If Not m_IsDeleted Then
.AddNew
GoTo SaveRecord
End If
End If
.Close
End With
Skip_Save:
Dim uClientProject As ClientProject
i = 1
Do While i <= m_ClientProjects.Count
Set uClientProject = m_ClientProjects(i)
If uClientProject.IsDeleted Then
If Not uClientProject.Save(False) Then
GoSub Rollback_Save
Exit Function
End If
m_ClientProjects.Remove i
Else
If uClientProject.IsDirty Then
uClientProject.ClientID = m_ClientID
End If
If Not uClientProject.Save(False) Then
GoSub Rollback_Save
Exit Function
End If
i = i + 1
End If
Loop
If bolInTran Then
Conn.CommitTrans
bolInTran = False
End If
Save = True
IsDirty = False
IsNew = False
RaiseEvent OnRecordSaved(Me)
Done_Save:
Exit Function
Err_Save:
If bolStartTran Then GoSub Rollback_Save
ErrNum = Err.Number
ErrMsg = Err.Description
Call ErrHandler(ErrNum, ErrMsg,"Client","Save")
GoTo Done_Save
Rollback_Save:
If bolInTran Then Conn.RollbackTrans
Return
End Function
'******************************************************************************
'* *
'* Name: Delete *
'* *
'* Purpose: mark this object and it's children as to be deleted when save *
'* is callled. Note it doesn't do the deletion in the database. *
'******************************************************************************
Public Sub Delete()
m_ClientProjects.Delete
IsDirty = True
IsDeleted = True
End Sub
'******************************************************************************
'* *
'* Name: DeleteList *
'* *
'* Purpose: Delete record in database based on a where SQL clause. *
'* Note it doesn't delete children records. *
'* *
'******************************************************************************
Public Function DeleteList(ByVal strDeleteSQL As String) As Boolean
On Error GoTo Err_DeleteList
Dim strSQL As String
strSQL = "DELETE * FROM Clients " & strDeleteSQL
Conn.Execute strSQL
DeleteList = True
Exit Function
Err_DeleteList:
ErrNum = Err.Number
ErrMsg = Err.Description
Call ErrHandler(ErrNum, ErrMsg,"Client","DeleteList")
End Function
'******************************************************************************
'* *
'* Name: Load *
'* *
'* Purpose: Get the specified record. If found, fill this object with correct *
'* record data. GetChildren is optional so if true get children *
'* record as well. *
'* *
'* Returns: Boolean - True (record found); False (otherwise). *
'* *
'******************************************************************************
Public Function Load(ByVal vClientID As Long, Optional ByVal GetChildren As Boolean = True) As Boolean
On Error GoTo Err_Load
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Clear
strSQL = "Select a.Address,a.City,a.ClientID,a.CompanyName,a.ContactFirstName,a.ContactLastName,a.ContactTitle,a.Country,a.FaxNumber,a.Notes,a.PhoneNumber,a.PostalCode,a.StateOrProvince From Clients a WHERE a.ClientID=" & vClientID & ""
adoRS.Open strSQL, Conn, adOpenForwardOnly, adLockReadOnly
With adoRS
If Not .EOF Then
m_Address= IIF(IsNull(adoRS("Address")), "", adoRS("Address"))
m_City= IIF(IsNull(adoRS("City")), "", adoRS("City"))
m_ClientID= IIF(IsNull(adoRS("ClientID")), 0, adoRS("ClientID"))
m_CompanyName= IIF(IsNull(adoRS("CompanyName")), "", adoRS("CompanyName"))
m_ContactFirstName= IIF(IsNull(adoRS("ContactFirstName")), "", adoRS("ContactFirstName"))
m_ContactLastName= IIF(IsNull(adoRS("ContactLastName")), "", adoRS("ContactLastName"))
m_ContactTitle= IIF(IsNull(adoRS("ContactTitle")), "", adoRS("ContactTitle"))
m_Country= IIF(IsNull(adoRS("Country")), "", adoRS("Country"))
m_FaxNumber= IIF(IsNull(adoRS("FaxNumber")), "", adoRS("FaxNumber"))
m_Notes= IIF(IsNull(adoRS("Notes")), "", adoRS("Notes"))
m_PhoneNumber= IIF(IsNull(adoRS("PhoneNumber")), "", adoRS("PhoneNumber"))
m_PostalCode= IIF(IsNull(adoRS("PostalCode")), "", adoRS("PostalCode"))
m_StateOrProvince= IIF(IsNull(adoRS("StateOrProvince")), "", adoRS("StateOrProvince"))
m_OldClientID = m_ClientID
ReSetBrokenRule False
Else
Load = False
.Close
Exit Function
End If
.Close
End With
If GetChildren Then m_ClientProjects.LoadRelated m_ClientID
Load = True
IsDirty = False
IsNew = False
RaiseEvent OnRecordLoad(Me)
Exit Function
Err_Load:
ErrNum = Err.Number
ErrMsg = Err.Description
Call ErrHandler(ErrNum, ErrMsg,"Client","Load")
End Function
'******************************************************************************
'* *
'* Name: LoadList *
'* *
'* Purpose: Load records based on a where SQL clause. *
'* You can include orderby clause in SQLWhereClause to sort data. *
'* *
'* Return: a Clients object *
'******************************************************************************
Function LoadList(Optional ByVal SQLWhereClause As String = vbNullString , Optional GetChildren As Boolean = False) As Clients
On Error GoTo Err_LoadList
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim uClient As Client
Dim uClients As New Clients
strSQL = "Select a.Address,a.City,a.ClientID,a.CompanyName,a.ContactFirstName,a.ContactLastName,a.ContactTitle,a.Country,a.FaxNumber,a.Notes,a.PhoneNumber,a.PostalCode,a.StateOrProvince From Clients a" & SQLWhereClause
adoRS.Open strSQL, Conn, adOpenForwardOnly, adLockReadOnly
With adoRS
Do While Not .EOF
Set uClient = Nothing
Set uClient = New Client
uClient.Address= IIF(IsNull(adoRS("Address")), "", adoRS("Address"))
uClient.City= IIF(IsNull(adoRS("City")), "", adoRS("City"))
uClient.ClientID= IIF(IsNull(adoRS("ClientID")), 0, adoRS("ClientID"))
uClient.CompanyName= IIF(IsNull(adoRS("CompanyName")), "", adoRS("CompanyName"))
uClient.ContactFirstName= IIF(IsNull(adoRS("ContactFirstName")), "", adoRS("ContactFirstName"))
uClient.ContactLastName= IIF(IsNull(adoRS("ContactLastName")), "", adoRS("ContactLastName"))
uClient.ContactTitle= IIF(IsNull(adoRS("ContactTitle")), "", adoRS("ContactTitle"))
uClient.Country= IIF(IsNull(adoRS("Country")), "", adoRS("Country"))
uClient.FaxNumber= IIF(IsNull(adoRS("FaxNumber")), "", adoRS("FaxNumber"))
uClient.Notes= IIF(IsNull(adoRS("Notes")), "", adoRS("Notes"))
uClient.PhoneNumber= IIF(IsNull(adoRS("PhoneNumber")), "", adoRS("PhoneNumber"))
uClient.PostalCode= IIF(IsNull(adoRS("PostalCode")), "", adoRS("PostalCode"))
uClient.StateOrProvince= IIF(IsNull(adoRS("StateOrProvince")), "", adoRS("StateOrProvince"))
uClient.OldClientID = uClient.ClientID
uClient.IsDirty = False
uClient.IsNew = False
uClient.ReSetBrokenRule False
uClients.AddExisting uClient, ":" & uClient.ClientID
If GetChildren Then uClient.ClientProjects.LoadRelated uClient.ClientID
.MoveNext
Loop
.Close
End With
Set LoadList = uClients
Exit Function
Err_LoadList:
ErrNum = Err.Number
ErrMsg = Err.Description
Call ErrHandler(ErrNum, ErrMsg,"Client","LoadList")
End Function
'******************************************************************************
'* *
'* Name: LoadByCity *
'* *
'* Purpose: Load records based on City *
'* Optionally you can include orderby clause to sort data. *
'* *
'* Return: a Clients object *
'******************************************************************************
Function LoadByCity(ByVal vCity As String , Optional ByVal OrderByClause As String = vbNullString , Optional GetChildren As Boolean = False) As Clients
On Error GoTo Err_LoadByCity
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim uClient As Client
Dim uClients As New Clients
strSQL = "Select a.Address,a.City,a.ClientID,a.CompanyName,a.ContactFirstName,a.ContactLastName,a.ContactTitle,a.Country,a.FaxNumber,a.Notes,a.PhoneNumber,a.PostalCode,a.StateOrProvince From Clients a Where a.City Like '" & vCity & "'" & OrderByClause
adoRS.Open strSQL, Conn, adOpenForwardOnly, adLockReadOnly
With adoRS
Do While Not .EOF
Set uClient = Nothing
Set uClient = New Client
uClient.Address= IIF(IsNull(adoRS("Address")), "", adoRS("Address"))
uClient.City= IIF(IsNull(adoRS("City")), "", adoRS("City"))
uClient.ClientID= IIF(IsNull(adoRS("ClientID")), 0, adoRS("ClientID"))
uClient.CompanyName= IIF(IsNull(adoRS("CompanyName")), "", adoRS("CompanyName"))
uClient.ContactFirstName= IIF(IsNull(adoRS("ContactFirstName")), "", adoRS("ContactFirstName"))
uClient.ContactLastName= IIF(IsNull(adoRS("ContactLastName")), "", adoRS("ContactLastName"))
uClient.ContactTitle= IIF(IsNull(adoRS("ContactTitle")), "", adoRS("ContactTitle"))
uClient.Country= IIF(IsNull(adoRS("Country")), "", adoRS("Country"))
uClient.FaxNumber= IIF(IsNull(adoRS("FaxNumber")), "", adoRS("FaxNumber"))
uClient.Notes= IIF(IsNull(adoRS("Notes")), "", adoRS("Notes"))
uClient.PhoneNumber= IIF(IsNull(adoRS("PhoneNumber")), "", adoRS("PhoneNumber"))
uClient.PostalCode= IIF(IsNull(adoRS("PostalCode")), "", adoRS("PostalCode"))
uClient.StateOrProvince= IIF(IsNull(adoRS("StateOrProvince")), "", adoRS("StateOrProvince"))
uClient.OldClientID = uClient.ClientID
uClient.IsDirty = False
uClient.IsNew = False
uClient.ReSetBrokenRule False
uClients.AddExisting uClient, ":" & uClient.ClientID
If GetChildren Then uClient.ClientProjects.LoadRelated uClient.ClientID
.MoveNext
Loop
.Close
End With
Set LoadByCity = uClients
Exit Function
Err_LoadByCity:
ErrNum = Err.Number
ErrMsg = Err.Description
Call ErrHandler(ErrNum, ErrMsg,"Client","LoadByCity")
End Function
'******************************************************************************
'* *
'* Name: LoadByCompanyName *
'* *
'* Purpose: Load records based on CompanyName *
'* Optionally you can include orderby clause to sort data. *
'* *
'* Return: a Clients object *
'******************************************************************************
Function LoadByCompanyName(ByVal vCompanyName As String , Optional ByVal OrderByClause As String = vbNullString , Optional GetChildren As Boolean = False) As Clients
On Error GoTo Err_LoadByCompanyName
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim uClient As Client
Dim uClients As New Clients
strSQL = "Select a.Address,a.City,a.ClientID,a.CompanyName,a.ContactFirstName,a.ContactLastName,a.ContactTitle,a.Country,a.FaxNumber,a.Notes,a.PhoneNumber,a.PostalCode,a.StateOrProvince From Clients a Where a.CompanyName Like '" & vCompanyName & "'" & OrderByClause
adoRS.Open strSQL, Conn, adOpenForwardOnly, adLockReadOnly
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -