Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
Attribute VB_Name = "Globals" Option Explicit
Public g_cnn As ADODB.Connection Public g_clsParameters As Parameters Public g_strUserName As String
Public Enum LOCK_TABLE_E LOCK_TABLE_KEYWORDS = 1 LOCK_TABLE_STOP_SIGNS = 2 LOCK_TABLE_STOP_WORDS = 3 LOCK_TABLE_SYNONYMS = 4 LOCK_TABLE_SYNONYM_SETS = 5 LOCK_TABLE_TAXONOMY = 6 LOCK_TABLE_TYPES = 7 End Enum
Public Sub CheckDatabaseVersion( _ ) Dim strVersion1 As String Dim strVersion2 As String
strVersion1 = g_clsParameters.Value(DB_VERSION_C) & "" strVersion2 = App.Major & "." & App.Minor
If (strVersion1 <> strVersion2) Then Err.Raise errDatabaseVersionIncompatible End If
End Sub
Public Sub CheckAuthoringGroupAccess( _ )
Dim intAG As Long
intAG = g_clsParameters.AuthoringGroup
If (intAG > AG_CORE_MAX_C) Then Err.Raise errNotPermittedForAuthoringGroup End If
End Sub
Public Sub CheckForSameAuthoringGroup( _ ByVal i_intAG As Long, _ Optional ByVal i_intAuthoringGroup As Long = INVALID_ID_C _ )
Dim intAG As Long
If (i_intAuthoringGroup = INVALID_ID_C) Then intAG = g_clsParameters.AuthoringGroup Else intAG = i_intAuthoringGroup End If
If (intAG <> i_intAG) Then Err.Raise errAuthoringGroupDiffers End If
End Sub
Private Function p_NewerDatabase( _ ByVal i_strVersion As String _ ) As Boolean
Dim arrVersion() As String
arrVersion = Split(i_strVersion, ".")
If (arrVersion(0) < App.Major) Then p_NewerDatabase = False ElseIf (arrVersion(0) > App.Major) Then p_NewerDatabase = True ElseIf (arrVersion(1) < App.Minor) Then p_NewerDatabase = False ElseIf (arrVersion(1) > App.Minor) Then p_NewerDatabase = True Else p_NewerDatabase = False End If
End Function
' If you wish to modify the Taxonomy table, call LockTable(LOCK_TABLE_TAXONOMY, rs) ' at the beginning of the function. If this convention is always followed, then ' functions that just read the Taxonomy table will succeed. But those that modify ' the Taxonomy table (and hence call LockTable) will throw an exception (E_FAIL).
' When rs goes out of scope in the calling function, the lock is released. If the ' process is killed, then also the lock is released.
' It may be sufficient to call this function in only the Public functions of a ' module. However, then we have to worry about whether the Public function or any ' of its descendents will ever modify the database.
' Be very careful with functions like Keywords.Delete, which modify 2 tables: ' Keywords and Synonyms.
' Do a findstr LockTable * in the Authdatabase directory to make sure that you don't ' call LockTable(A) and LockTable(B), when both should have locked table A.
Public Sub LockTable( _ ByVal i_enumTable As LOCK_TABLE_E, _ ByRef o_rs As ADODB.Recordset _ ) Dim strQuery As String Dim strTable As String
Set o_rs = New ADODB.Recordset
Select Case i_enumTable Case LOCK_TABLE_KEYWORDS strTable = LOCK_KEYWORDS_C Case LOCK_TABLE_STOP_SIGNS strTable = LOCK_STOP_SIGNS_C Case LOCK_TABLE_STOP_WORDS strTable = LOCK_STOP_WORDS_C Case LOCK_TABLE_SYNONYMS strTable = LOCK_SYNONYMS_C Case LOCK_TABLE_SYNONYM_SETS strTable = LOCK_SYNONYM_SETS_C Case LOCK_TABLE_TAXONOMY strTable = LOCK_TAXONOMY_C Case LOCK_TYPES_C strTable = LOCK_TYPES_C End Select
strQuery = "SELECT * FROM DBParameters WHERE (Name = """ & strTable & """)" o_rs.Open strQuery, g_cnn, adOpenStatic, adLockPessimistic o_rs("Value") = True
End Sub
|