Frage
Ich habe eine Abfrage von einer Datenbank unter Versions--Kontrolle (MS-Visual SourceSave) in die aktuelle Datenbank kopiert, die nicht unter Versions-Kontrolle ist.
Jedesmal wenn ich eine Suche durchführe zeigt SPEED Ferret den Status des kopierten Objekts als Nur Lesen (Read-Only) an und erlaubt mir nicht Änderungen an der Abfrage vorzunehmen. Was geht hier vor?
Antwort
Wenn ein Objekt unter Versions-Kontrolle gestellt ist, fügt Access dem Objekt eine Eigenschaft SccStatus hinzu. SPEED Ferret prüft die Existenz dieser Eigenschaft um zu bestimmen, ob das Objekt unter Versions-Kontrolle steht. Wenn die Eigenschaft existiert, prüft SPEED Ferret den Wert dieser Eigenschaft um zu prüfen, ob das Objekt in der aktuellen Datenbank ausgecheckt ist.
Wenn das Objekt von einer Datenbank zur anderen kopiert wird, bleibt die SccStatus Eigenschaft des Objekts erhalten,
auch wenn die Zieldatenbank nicht unter Versions-Kontrolle steht. Wenn das Objekt beim Zeitpunkt des Kopierens nicht ausgecheckt war, markiert SPEED Ferret das Objekt als Nur Lesen wenn Sie die Zieldatenbank durchsuchen.
Betrifft mich dieses Problem?
Diese Problem betrifft Sie nur, wenn die folgenden Bedingungen zutreffen:
- Ihre Datenbank steht nicht unter Versions-Kontrolle
- Ihre Datenbank enthält Objekte die von einer anderen Datenbank kopiert wurden, welche unter Versions-Kontrolle stand
- Die kopierten Objekte waren zum Zeitpunkt des Kopierens nicht ausgecheckt waren.
Analyse
SPEED Ferret sollte zusätzlich prüfen, ob auch die aktuelle Datenbank unter Versions-Kontrolle steht. Wenn dies für die aktuelle Datenbank nicht zutrifft, sollte SPEED Ferret die SccStatus Eigenschaft der Objekte in der Zieldatenbank ignorieren.
Diese Änderung ist für die Revision C von SPEED Ferret für Access 97 vorgesehen.
Laden Sie Revision C von SPEED Ferret für Access 97. SPEED Ferret prüft, ab dieser Version zusätzlich, ob auch die aktuelle Datenbank unter Versions-Kontrolle steht.
Workaround
Der nachfolgende Quell-Code entfernt automatisch die unnötige SccStatus Eigenschaft von allen Objekten der aktuellen Datenbank, vorausgesetzt, die aktuelle Datenbank steht selbst nicht unter Versions-Kontrolle.
Vorgehensweise
- Erstellen Sie ein neues Modul in Ihrer Datenbank und fügen Sie den folgenden Quell-Code ein.
- Öffnen Sie das Direktfenster und geben Sie DeleteSccStatus ein
- CODE>
- Option Compare Database
- Option Explicit
- Sub DeleteSccStatus()
- Dim DB As DAO.Database
- Dim SccStatus As Long
- Dim Defined As Boolean
- Set DB = CurrentDb()
- On Error Resume Next
- SccStatus = DB.Properties("SccStatus")
- Defined = (Err.Number = 0)
- On Error GoTo 0
- If Defined Then
- Debug.Print "Diese Datenbank befindet sich unter Versions-Kontrolle."
- Debug.Print "SccStatus Eigenschaft wurde nicht gelöscht."
- Else
- Debug.Print "Diese Datenbank befindet sich nicht unter Quell-Code Kontrollel.."
- Clear DB.Containers!Tables
- Clear DB.Containers!Forms
- Clear DB.Containers!Reports
- Clear DB.Containers!Scripts
- Clear DB.Containers!Modules
- Debug.Print "Alle SccStatus Eigenschaften wurden gelöscht"
- End If
- End Sub
- Sub Clear(Cont As DAO.Container)
- Dim Doc As DAO.Document
- Dim SccStatus As Long
- Dim Defined As Boolean
- For Each Doc In Cont.Documents
- On Error Resume Next
- SccStatus = Doc.Properties("SccStatus")
- Defined = (Err.Number = 0)
- On Error GoTo 0
- If Defined Then
- Doc.Properties.Delete "SccStatus"
- Debug.Print " - Deleted SccStatus property from " + Cont.Name + "." + Doc.Name
- End If
- Next
- End Sub