Generating the Data Services Class

The functions to save and retrieve records can also be generated. Add a new .bas module called BuildServer. Add the following code to the module:

Public Function CreateServer(ByRef r_TableInfo() As String, _

ByRef r_Tables() As Tablelnformation) As String

Dim strCode As String Dim lngTableCounter As Long Dim strTempTableName As String Dim lngFieldCounter As Long Dim lngQueryKeyCounter As Long Dim strTableName As String strCode = strCode & "Enum TableName" & Chr(13) & Chr(10) For lngTableCounter = 1 To UBound(r_TableInfo)

strCode = strCode & " e_" & r_TableInfo(lngTableCounter) & _ "=" & lngTableCounter - 1 & Chr(13) & Chr(10)

Next strCode = strCode & "End Enum" & Chr(13) & Chr(10) For lngTableCounter = 1 To UBound(r_TableInfo) Dim strCleanFields() As String

CleanFields r_Tables(lngTableCounter).FieldInfo, strCleanFields Dim strFields As String strFields = ""

For lngFieldCounter = 1 To UBound(r_Tables(lngTableCounter).FieldInfo) If lngFieldCounter = 1 Then strFields = " [" & r_Tables(lngTableCounter)." & _ "FieldInfo(lngFieldCounter).FieldName & "]"

Else strFields = strFields & ",[" & r_Tables(lngTableCounter)." & _ "FieldInfo(lngFieldCounter).FieldName & "]" End If Next strCode = strCode & " Private Const m_cstr" & _

r_TableInfo(lngTableCounter) & "Query =" & Chr(34) & _ "Select " & strFields & Chr(34) & " & _" & Chr(13) & Chr(10) strCode = strCode & Chr(34) & " From " & _

r_Tables(lngTableCounter).TableName & Chr(34) & Chr(13) & Chr(10) strTableName = r_Tables(lngTableCounter).TableName strCode = strCode & " Private Const m_cstr" & _ r_TableInfo(lngTableCounter) & _

r_Tables(lngTableCounter).PrimaryKey & " As String = " _ & Chr(34) & r_Tables(lngTableCounter).PrimaryKey & _ Chr(34) & Chr(13) & Chr(10)

Next

strCode =

= strCode

&

" Private Const m cstrDatabasePath As

String = "

&

Chr(34)

&

"C:\Program Files\Microsoft Visual Studio" &

"\VB98\NWIND.MDB" & Chr(34) & Chr(13) & Chr(10)

strCode =

= strCode

&

" Private m_objADOConnection As ADODB.

Connection

"

& _

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Private m_strErrorDetails As String"

' & Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Private m strQueryString As String"

& Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Private m objContext As ObjectContext" & Chr(13)

& _

Chr(10)

strCode =

= strCode

&

" Implements ObjectControl" & Chr(13)

& Chr(10)

strCode =

= strCode

&

"Private Sub ObjectControl Activate()'

' & Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Set m objContext = GetObjectContext"

' & Chr(13)

&

Chr(10)

strCode =

= strCode

&

"End Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Private Function ObjectControl CanBePooled()" &

" As Boolean" & Chr(13) & Chr(10)

strCode =

= strCode

&

" ObjectControl_CanBePooled = False" & Chr(13) &

Chr(10)

strCode =

= strCode

&

"End Function" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Private Sub ObjectControl Deactivate()" & Chr(13) &

Chr(10)

strCode =

= strCode

&

" Set m_objADOConnection = Nothing" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Set m_objContext = Nothing" & Chr(13) & Chr(10)

strCode =

= strCode

&

"End Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Private Function CreateInstance(ProgID As String)" &

" As Object" & Chr(13) & Chr(10)

strCode =

= strCode

&

" On Error GoTo CreateInstanceError" & Chr(13) &

Chr(10)

strCode =

= strCode

&

" If Not m_objContext Is Nothing Then" & Chr(13)

& Chr(10)

strCode =

= strCode

&

" Set CreateInstance = m objContext." &

CreateInstance(ProgID)" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Else" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Select Case ProgID" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Case " & Chr(34) & "ADODB.Connection" & _

Chr(34)

&

Chr(13) & Chr(10)

strCode =

= strCode

&

" Set CreateInstance = New ADODB.Connection" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Case " & Chr(34) & "ADODB.Recordset" & Chr(34)

& _

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Set CreateInstance = New ADODB.Recordset" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" End Select" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End If" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Exit Function" & Chr(13) & Chr(10)

strCode =

= strCode

&

"CreateInstanceError:" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Err.Raise Err.Number, Err.Source & " & Chr(34)

& _

"Createlnstance" & Chr(34) & ", Err.Description" & Chr(13)

& Chr(10)

strCode =

= strCode

&

"End Function" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Public Sub SetComplete()" & Chr(13) & Chr(10)

strCode =

= strCode

&

" If Not m_objContext Is Nothing Then" & Chr(13)

& _

Chr(10)

strCode =

= strCode

&

" m_objContext.SetComplete" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End If" & Chr(13) & Chr(10)

strCode =

= strCode

&

"End Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Public Sub SetAbort()" & Chr(13) & Chr(10)

strCode =

= strCode

&

" If Not m_objContext Is Nothing Then" & Chr(13)

& _

Chr(10)

strCode =

= strCode

&

" m_objContext.SetAbort" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End If" & Chr(13) & Chr(10)

strCode =

= strCode

&

"End Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Private Sub SetADOConnection(ByVal v_strUserID"

& _

" As String, _" & Chr(13) & Chr(10)

strCode =

= strCode

&

" ByVal v strPassword As String)" & Chr(13) & Chr(10)

strCode =

= strCode

&

" On Error GoTo SetADOConnectionError" & Chr(13)

& Chr(10)

strCode =

= strCode

&

" Set m objADOConnection = CreateInstance(" &

Chr(34)

&

"ADODB.Connection" & Chr(34) & ")" & Chr(13) & Chr(10)

strCode =

= strCode

&

" With m objADOConnection" & Chr(13) & Chr(10)

strCode =

= strCode

&

" .CursorLocation = adUseClient" & Chr(13) & Chr(10)

strCode =

= strCode

&

" .ConnectionString = " & Chr(34) &

"Provider=

=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;" & _

Chr(34)

&

" & _ " & Chr(13) & Chr(10)

strCode =

= strCode

&

" " & Chr(34) & "Data Source=" & Chr(34) & " & "

& _

"m cstrDatabasePath" & Chr(13) & Chr(10)

strCode =

= strCode

&

" .Open" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End With" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Exit Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"SetADOConnectionError:" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Dim lngErrorCounter As Long" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Dim strErrors As String" & Chr(13) & Chr(10)

strCode =

= strCode

&

" strErrors = Err.Number & " & Chr(34) & ": " &

Chr(34)

&

" & Err.Description" & Chr(13) & Chr(10)

strCode =

= strCode

&

" If m objADOConnection.Errors.Count > 0 Then" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" For lngErrorCounter = 0 To m objADOConnection." &

"Errors.

.Count - 1" & Chr(13) & Chr(10)

strCode =

= strCode

&

" strErrors = strErrors & _" & Chr(13) & Chr(10)

strCode =

= strCode

&

" m objADOConnection.Errors(lngErrorCounter)." &

"Number

&

_" & Chr(13) & Chr(10)

strCode =

= strCode

&

" " & Chr(34) & ": " & Chr(34) & " & " &

"m objADOConnection.Errors(lngErrorCounter).Description" &

" & vbCrLf

:" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Next lngErrorCounter" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End If" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Err.Raise 2000 + vbObjectError, " & Chr(34) & _

"SetADOConnection " & Chr(34) & " & Err.Source, strErrors" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

"End Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Private Function GetADOConnection() " &

"As ADODB.

Connection" & Chr(13) & Chr(10)

strCode =

= strCode

&

" If m objADOConnection Is Nothing Then" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" Err.Raise 2001, " & Chr(34) & _

"GetADOConnection" & Chr(34) & ", " & Chr(13) & Chr(10)

strCode =

= strCode

&

" " & Chr(34) & _

"Trying

to Get Connection prior to setting it" &

Chr(34)

&

Chr(13) & Chr(10)

strCode =

= strCode

&

" Else" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Set GetADOConnection = m objADOConnection" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" End If" & Chr(13) & Chr(10)

strCode =

= strCode

&

"End Function" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Private Sub CloseADOConnection()" & Chr(13) & Chr(10)

strCode =

= strCode

&

" With GetADOConnection" & Chr(13) & Chr(10)

strCode =

= strCode

&

" If .State = adStateOpen Then" & Chr(13) & Chr(10)

strCode =

= strCode

&

" .Close" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End If" & Chr(13) & Chr(10)

strCode =

= strCode

&

" End With" & Chr(13) & Chr(10)

strCode =

= strCode

&

"End Sub" & Chr(13) & Chr(10)

strCode =

= strCode

&

"Public Function ValidUserIDPassword" &

"(ByVal

v_

strUserID As String, _" & Chr(13) & Chr(10)

strCode =

= strCode

&

" ByVal v strPassword As String," &

" Optional

. ByRef r_strErrorDetails As String _" & Chr(13) & Chr(10)

strCode =

= strCode

&

" = " & Chr(34) & "Empty" & Chr(34) & ") As Boolean" _

& Chr(13)

& Chr(10)

strCode =

= strCode Chr(10)

&

" On Error GoTo ValidUserIDPasswordError" & Chr(13) & _

strCode =

= strCode

&

" SetADOConnection v strUserID, v strPassword" &

Chr(13)

&

Chr(10)

strCode =

= strCode

&

" ValidUserIDPassword = True" & Chr(13) & Chr(10)

strCode =

= strCode

&

" SetComplete" & Chr(13) & Chr(10)

strCode =

= strCode

&

" Exit Function" & Chr(13) & Chr(10)

strCode =

= strCode

&

"ValidUserIDPasswordError:" & Chr(13) & Chr(10)

strCode =

= strCode

&

" If r_strErrorDetails <> " & Chr(34) & "Empty" & _

Chr(34)

&

"Then" & Chr(13) & Chr(10)

strCode =

= strCode

&

" r strErrorDetails = " &

Chr(34)

&

"Error Details:" & Chr(34) & " & " &

"Err.Description & vbCrLf & _" & Chr(13) & Chr(10)

strCode & " " Chr(34) & " & "Error Source strCode & " " Chr(34) strCode strCode strCode strCode strCode

& Chr(34) & "Error Number:" & _ " & "Err.Number & vbCrLf & " & Chr(34) & _

" & Chr(34) & " & _" & Chr(13) & Chr(10) & Chr(34) & "ValidUserIDPassword " & _ Err.Source" & Chr(13) & Chr(10) " End If" & Chr(13) & Chr(10) " SetAbort" & Chr(13) & Chr(10)

" ValidUserIDPassword = False" & Chr(13) & Chr(10) "End Function" & Chr(13) & Chr(10)

"Private Sub GetRecordSet(ByRef r_recRecordset As

& Chr(13) & Chr(10) & " ByVal v_strSource)" & Chr(13) & Chr(10) & " On Error GoTo GetRecordSetError" & Chr(13) & Chr(10) & " Set r_recRecordset = New ADODB.Recordset" & _ & Chr(10)

& " r_recRecordset.CursorLocation = adUseClient" & _ & Chr(10)

& " r_recRecordset.Open _" & Chr(13) & Chr(10) & " v_strSource , GetADOConnection, adOpenStatic, " & _ " adLockOptimistic" & Chr(13) & Chr(10) strCode & " Exit Sub" & Chr(13) & Chr(10)

& "GetRecordSetError:" & Chr(13) & Chr(10) & " Err.Raise Err.Number, " & Chr(34) & "ValidUserID" & _ & " & Err.Source, Err.Description" & Chr(13) & Chr(10) & "End Sub" & Chr(13) & Chr(10)

"ADODB.Recordset, strCode strCode strCode Chr(13) strCode Chr(13) strCode strCode strCode strCode Chr(34) strCode strCode =

strCode =

strCode = strCode = strCode = strCode = strCode =

strCode = strCode = strCode =

strCode =

strCode = strCode =

strCode = strCode = strCode =

strCode =

For lngTableCounter = 1 To UBound(r_TableInfo)

strCode = strCode & "Public Function Return" & _ r_TableInfo(lngTableCounter) & _

"RecordSet(ByVal v_strUserID As String, ByVal _" & _ Chr(13) & Chr(10)

strCode = strCode & " v_strPassword As String, Optional ByVal " & _

"v_strParameter As String) As _" & Chr(13) & Chr(10) strCode = strCode & " ADODB.Recordset" & Chr(13) & Chr(10) strCode = strCode & " Dim rec" & r_TableInfo(lngTableCounter) & _

" As ADODB.Recordset" & Chr(13) & Chr(10) strCode = strCode & " On Error GoTo Return" & _

r_TableInfo(lngTableCounter) & "RecordSetError" & _ Chr(13) & Chr(10) strCode = strCode & " SetADOConnection v_strUserID, v_strPassword"

Chr(13) & Chr(10) strCode = strCode & " GetRecordSet rec" & _

r_TableInfo(lngTableCounter) & ", m_cstr" & _ r_TableInfo(lngTableCounter) & "Query & v_strParameter" & Chr(13) & Chr(10) strCode = strCode & " Set Return" & r_TableInfo(lngTableCounter) & "RecordSet = rec" & r_TableInfo(lngTableCounter) & _ Chr(13) & Chr(10) strCode = strCode & " Set rec" & r_TableInfo(lngTableCounter) & _

".ActiveConnection = Nothing" & Chr(13) & Chr(10) strCode = strCode & " SetComplete" & Chr(13) & Chr(10) strCode = strCode & " CloseADOConnection" & Chr(13) & Chr(10) strCode = strCode & " Set rec" & r_TableInfo(lngTableCounter) & _

" = Nothing" & Chr(13) & Chr(10) strCode = strCode & " Exit Function" & Chr(13) & Chr(10) strCode = strCode & "Return" & r_TableInfo(lngTableCounter) & _

"RecordSetError:" & Chr(13) & Chr(10) strCode = strCode & " CloseADOConnection" & Chr(13) & Chr(10) strCode = strCode & " SetAbort" & Chr(13) & Chr(10) strCode = strCode & " Err.Raise Err.Number, " & Chr(34) & _

" Return" & r_TableInfo(lngTableCounter) & Chr(34) & " " " , Err.Source " & " & " & Chr(13) & Chr(10)

&

strCode = strCode =

= strCode & = strCode &

" m_strErrorDetails" & Chr(13) & Chr(10) " End Function" & Chr(13) & Chr(10)

strCode = strCode & "Private Function Update" & _ r_TableInfo(lngTableCounter) & _

"RS(ByVal v_recClientRecordSet As _" & Chr(13) & Chr(10) strCode = strCode & _

" ADODB.Recordset, Optional ByVal v_bolDelete " & _ " As Boolean = False) As ADODB.Recordset" & Chr(13) & Chr(10) strCode = strCode & " Dim rec" & r_TableInfo(lngTableCounter) & _

" As ADODB.Recordset" & Chr(13) & Chr(10) strCode = strCode & " Dim lngFieldCounter As Long" & Chr(13) & Chr(10) strCode = strCode & " Dim lngRowCounter As Long" & Chr(13) & Chr(10) strCode = strCode & " On Error GoTo Update" & _

r_TableInfo(lngTableCounter) & "RSError" & Chr(13) & Chr(10) strCode = strCode & " If v_recClientRecordSet.EditMode = adEditAdd " &

"Then" & Chr(13) & Chr(10) strCode = strCode & " Set rec" & r_TableInfo(lngTableCounter) & _

" = CreateInstance(" & Chr(34) & "ADODB.Recordset" & Chr(34) < ")" & Chr(13) & Chr(10) strCode = strCode & " With rec" & r_TableInfo(lngTableCounter) & _

"" & Chr(13) & Chr(10) strTableName = r_Tables(lngTableCounter).TableName strCode = strCode & " .Source = m_cstr" & _

"r_TableInfo(lngTableCounter) & "Query & " & Chr(34) & " Where " & Chr(34) & " & m_cstr" & _ r_TableInfo(lngTableCounter) & _

r_Tables(lngTableCounter).PrimaryKey & " & " & Chr(34) " = " & Chr(34) & " & " & Chr(13) & Chr(10)

strCode = strCode =

strCode = strCode = strCode = strCode = strCode = strCode =

strCode =

strCode =

strCode =

strCode = strCode = strCode = strCode = strCode = strCode =

strCode strCode strCode strCode strCode

strCode & " 0" & Chr(13) & Chr(10)

strCode & " .ActiveConnection = GetADOConnection" & Chr(13) & Chr(10)

strCode & " .LockType = adLockPessimistic" & Chr(13) & strCode & " .CursorLocation = adUseServer" & Chr(13) & strCode & " .CursorType = adOpenKeyset" & Chr(13) & Chr(10) strCode & " .Open" & Chr(13) & Chr(10) strCode & " .AddNew" & Chr(13) & Chr(10)

strCode & " For lngFieldCounter = 0 To v_recClientRecordSet." & "Fields.Count - 1" & Chr(13) & Chr(10)

strCode & " If Not " & "IsNull(v_recClientRecordSet.Fields" & _

"(lngFieldCounter).Value) Then" & Chr(13) & Chr(10)

strCode & ".Fields(v_recClientRecordSet.Fields" & _

"(lngFieldCounter).Name) _" & Chr(13) & Chr(10)

strCode & " = v_recClientRecordSet.Fields" & _

"(lngFieldCounter).Value" & Chr(13) & Chr(10)

strCode & " End If" & Chr(13) & Chr(10)

strCode & " Next" & Chr(13) & Chr(10)

strCode & " .Update" & Chr(13) & Chr(10)

strCode & " End With" & Chr(13) & Chr(10)

strCode & " Else" & Chr(13) & Chr(10)

strCode & " Set rec" & r_TableInfo(lngTableCounter) & _ " = v_recClientRecordSet" & Chr(13) & Chr(10)

strCode = strCode & " Set rec" & r_TableInfo(lngTableCounter) & ".ActiveConnection = GetADOConnection" & Chr(13) & Chr(10) strCode & " If v_bolDelete = True Then" & Chr(13) & Chr(10) strCode & " rec" & r_TableInfo(lngTableCounter) & _ ".Delete" & Chr(13) & Chr(10) strCode & " Else" & Chr(13) & Chr(10)

strCode & " On Error Resume Next" & Chr(13) & Chr(10) strCode & " rec" & r_TableInfo(lngTableCounter) & _

".Filter = adFilterPendingRecords" & Chr(13) & Chr(10) strCode = strCode & " rec" & r_TableInfo(lngTableCounter) & _

".UpdateBatch" & Chr(13) & Chr(10) strCode = strCode & " rec" & r_TableInfo(lngTableCounter) & _

".Filter = adFilterConflictingRecords" & Chr(13) & Chr(10) strCode = strCode & " If rec" & r_TableInfo(lngTableCounter) & _

".RecordCount > 0 Then" & Chr(13) & Chr(10) strCode =strCode & " Err.Raise 2002, " & Chr(34) & "Update" & _

r_TableInfo(lngTableCounter) & "RS" & Chr(34) & "," & Chr(34) & " & Conflicting Errors" & Chr(34) & Chr(13) & Chr(10) strCode = strCode & " End If" & Chr(13) & Chr(10) strCode = strCode & " rec" & r_TableInfo(lngTableCounter) & _

".Filter = adFilterNone" & Chr(13) & Chr(10) strCode = strCode & " End If" & Chr(13) & Chr(10) strCode = strCode & " End If" & Chr(13) & Chr(10)

strCode = strCode & " Set Update" & r_TableInfo(lngTableCounter) & _ "RS = rec" & r_TableInfo(lngTableCounter) & "" & _ Chr(13) & Chr(10) strCode = strCode & " Set rec" & r_TableInfo(lngTableCounter) & _

" = Nothing" & Chr(13) & Chr(10) strCode = strCode & " Exit Function" & Chr(13) & Chr(10) strCode = strCode & "Update" & r_TableInfo(lngTableCounter) & _

"RSError:" & Chr(13) & Chr(10) strCode = strCode & " Err.Raise Err.Description, " & Chr(34) & _

" & Error Update" & r_TableInfo(lngTableCounter) & "RS" & _ Chr(34) & " & Err.Source, _" & Chr(13) & Chr(10) strCode = strCode & " Err.Description" & Chr(13) & Chr(10) strCode = strCode & "End Function" & Chr(13) & Chr(10) Next strCode = strCode & "Public Function UpdateRecordset" & _

"(ByVal v_strUserID As String, _" & Chr(13) & Chr(10) strCode = strCode & " ByVal v_strPassword As String, _" & _ Chr(13) & Chr(10)

strCode = strCode & " ByVal v_recClientRecordSet As ADODB.Recordset, _" & _ Chr(13) & Chr(10)

strCode = strCode & " ByVal v_eName As TableName, Optional ByVal " & _ " v_strWhereClause As String, " & _

" Optional ByVal v_bolDelete As Boolean = False) " & _ "As ADODB.Recordset" & Chr(13) & Chr(10) strCode = strCode & "On Error GoTo UpdateRecordsetError" & Chr(13) & Chr(10) strCode = strCode & "SetADOConnection v_strUserID, v_strPassword" & _

Chr(13) & Chr(10) strCode = strCode & "Select Case v_eName" & Chr(13) & Chr(10) For lngTableCounter = 1 To UBound(r_TableInfo)

strCode = strCode & "Case e_" & r_TableInfo(lngTableCounter) & _

Chr(13) & Chr(10) strCode = strCode & "Set UpdateRecordset = Update" & _ r_TableInfo(lngTableCounter) & _

"RS(v_recClientRecordSet, v_bolDelete)" & Chr(13) & Chr(10)

Next

strCode =

= strCode

&

"End Select" & Chr(13)

& Chr(10)

strCode =

= strCode

&

"SetComplete" & Chr(13)

& Chr(10)

strCode =

= strCode

&

"CloseADOConnection" &

Chr(13) & Chr(10)

strCode =

= strCode

&

"Exit Function" & Chr(13) & Chr(10)

strCode =

= strCode

&

"UpdateRecordsetError:"

& Chr(13) & Chr(10)

strCode =

= strCode

&

"CloseADOConnection" &

Chr(13) & Chr(10)

strCode =

= strCode

&

"SetAbort" & Chr(13) &

Chr(10)

strCode =

= strCode

&

"Err.Raise Err.Number,

" & Chr(34) & _

"UpdateRecordset" & Chr(34) & " & Err.Source" & Chr(13) & Chr(10) strCode = strCode & "End Function" & Chr(13) & Chr(10) CreateServer = strCode End Function

365 Days Of Motivation

365 Days Of Motivation

Stop Wasting Time And Learn How To Stay Motivated. Finally! Discover How To Stop Your Mind From Wandering, And Upgrade Your Motivation. You Can Hack Your Motivation Levels, Allowing You To Take Your Life To The Next Level.

Get My Free Ebook


Post a comment