DAO 3.60: Festlegen Bookmark-Eigenschaft auf falsch Zeile verschiebt

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 238134 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

In DAO 3.60 mithilfe der Bookmark platziert-Eigenschaft ein Recordset zu einem bestimmten Datensatz navigieren Sie auf einen falschen Datensatz. Dies ist wahrscheinlich Oberflächen, wenn Sie eine Textmarke zu einem anderen Datensatz und dann wieder in die mit einer Textmarke versehenes Datensatz verschieben durch Festlegen der Bookmark-Eigenschaft des Recordsets speichern. Dies kann auch auftreten, wenn die LastModified-Eigenschaft nach einer Aktualisierung verwendet. Dieses Problem tritt am wahrscheinlichsten vorkommen, wenn die Tabelle eine sehr große Anzahl von Datensätzen verfügt oder wenn die Tabelle weniger Datensätze jedoch eine sehr große Anzahl von Spalten aufweist.

Dies tritt nicht bei Verwendung von DAO 3.51.

Lösung

Ein Update zur Behebung dieses Problems ist inzwischen von Microsoft erhältlich; dieses Update wurde jedoch ausschließlich zur Behebung des in diesem Artikel beschriebenen Problems entwickelt. Gelten Sie diese nur für Computer, bei die dieses spezielle Problem auftritt. Dieses Update wird unter Umständen zu einem späteren Zeitpunkt weiteren Tests unterzogen. Wenn Sie durch dieses Problem nicht schwerwiegend betroffen sind, empfiehlt Microsoft daher, dass für das nächste Servicepack für Microsoft Office warten, das diesen Hotfix enthält.

Wenn Sie das Problem sofort beheben möchten, wenden Sie sich an Microsoft Product Support Services, um das Update zu erhalten. Eine vollständige Liste mit Telefonnummern der Microsoft-Produktsupport und Informationen Supportkosten der folgenden Microsoft-Website:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS
Hinweis : in speziellen Fällen Gebühren, die normalerweise für Support-Anrufe anfallen abgebrochen werden können, wenn eine Microsoft-Supportmitarbeiter feststellt, dass ein bestimmtes Update Ihr Problem behoben wird. Normale Servicegebühren werden jedoch für weitere Fragen und Problemlösungen erhoben, die mit dem fraglichen Update nicht in direktem Zusammenhang stehen.

Die englische Version dieses Updates sollte die folgenden Dateiattribute (oder höher) aufweisen:
   Date      Time    Version      Size    File name     Platform
   -------------------------------------------------------------
   7/14/99           3.60.2927.4  545KB   dao360.dll


				

Abhilfe

Es gibt keine Problemumgehung für dieses Problem.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen




Manuelle Installation

  1. Schließen Sie oder beenden Sie Anwendungen oder Dienste, die mit DAO arbeiten.
  2. Downloaden Sie die Hotfixversion von "Dao360.dll" in ein temporäres Verzeichnis an.
  3. Suchen und Umbenennen der aktuellen Version Dao360.dll, die im Ordner \Program Files\Common Files\Microsoft Shared\DAO sein sollte.
  4. Kopieren Sie die Hotfixversion der Dao360.dll an demselben Speicherort , und Starten der Dienste und Anwendungen.

Gehen Sie folgendermaßen vor, um dieses Problem zu reproduzieren

  1. Erstellen eines Visual Basic-Projekts (Standard EXE) , und fügen Sie einen Verweis auf die Microsoft DAO 3.60-Objektbibliothek hinzu.
  2. Im Formular Start (Form1), eine Bezeichnung mit dem Namen LblStatus erstellen und Hinzufügen einer Befehlsschaltfläche .
  3. C# opieren der folgende Code in Click()-Methode der Befehlsschaltfläche, führen Sie dann das Formular:

    Dim dbTest As DAO.Database
    Dim rsTest As DAO.Recordset
    Dim strPathToMDB As String
    Dim strSQL As String
    Dim lngNumRecords As Long
    Dim lngOriginalValue As Long
    Dim lngCounter As Long
    Dim varBookmark As Variant
    Dim bUseTableType As Boolean
    
    Me.Show
    Me.MousePointer = vbHourglass
    Me.Enabled = False
    strPathToMDB = App.Path & "\BadBookmarks.MDB"
    If MsgBox("Make new database?", vbYesNo) = vbYes Then
        If Dir(strPathToMDB) <> "" Then Kill strPathToMDB
        If DBEngine.Version = "3.6" Then
            If MsgBox("Create Jet 4.0 format database?", vbYesNo) = vbYes Then
                Set dbTest = DBEngine.CreateDatabase(strPathToMDB, dbLangGeneral, dbVersion40)
            Else
                Set dbTest = DBEngine.CreateDatabase(strPathToMDB, dbLangGeneral, dbVersion30)
            End If
        Else
            Set dbTest = DBEngine.CreateDatabase(strPathToMDB, dbLangGeneral, dbVersion30)
        End If
    Else
        Set dbTest = DBEngine.OpenDatabase(strPathToMDB)
    End If
    
    If MsgBox("Make new table?", vbYesNo) = vbYes Then
        On Error Resume Next
        strSQL = "DROP TABLE BadBookmarks"
        dbTest.Execute strSQL
        On Error GoTo 0
        strSQL = "CREATE TABLE BadBookmarks (ID long NOT NULL"
        For lngCounter = 2 To 8
            strSQL = strSQL & ", Field" & lngCounter & " char(255)"
        Next lngCounter
        strSQL = strSQL & ", CONSTRAINT PK_BadBookmarks PRIMARY KEY (ID))"
        dbTest.Execute strSQL
    Else
        dbTest.Execute "DELETE * FROM BadBookmarks"
    End If
    
    bUseTableType = (MsgBox("Use table-type recordset?", vbYesNo))
         
    If bUseTableType Then
        Set rsTest = dbTest.OpenRecordset("BadBookmarks", dbOpenTable)
    Else
        Set rsTest = dbTest.OpenRecordset("SELECT * FROM BadBookmarks")
    End If
    
    lngNumRecords = InputBox("Number of records to insert?", "Bad bookmarks", 1000)
    Debug.Print "Testing DAO " & DBEngine.Version
    Debug.Print "Inserting " & lngNumRecords & " records"
    Debug.Print "Into a version " & dbTest.Version & " database"
    Debug.Print "Using a " & IIf(bUseTableType, "table-type", "dynaset") & " recordset"
    With rsTest
        For lngCounter = 1 To lngNumRecords
            .AddNew
            .Fields(0) = lngCounter
            .Fields(1) = lngCounter
            .Fields(2) = lngCounter
            .Fields(3) = lngCounter
            .Fields(4) = lngCounter
            .Fields(5) = lngCounter
            .Fields(6) = lngCounter
            .Fields(7) = lngCounter
            .Update
            If lngCounter Mod 100 = 0 Then
                lblStatus.Caption = CInt((lngCounter / lngNumRecords) * 100) & _
                                    "% complete inserting records..."
                lblStatus.Refresh
            End If
        Next lngCounter
        .Close
    End With
    
    If bUseTableType Then
        Set rsTest = dbTest.OpenRecordset("BadBookmarks", dbOpenTable)
    Else
        Set rsTest = dbTest.OpenRecordset("SELECT * FROM BadBookmarks")
    End If
    
    With rsTest
        Do While Not .EOF
            lngOriginalValue = .Fields(0)
            varBookmark = .Bookmark
            .MoveNext
            .Bookmark = varBookmark
            If .Fields(0) <> lngOriginalValue Then
                Debug.Print "Should be on row " & lngOriginalValue
                Debug.Print vbTab & "Actually on row " & .Fields(0)
            End If
            If lngOriginalValue Mod 100 = 0 Then
                lblStatus.Caption = CInt((lngOriginalValue / lngNumRecords) * 100) & _
                                    "% complete checking records..."
                lblStatus.Refresh
            End If
            .MoveNext
        Loop
        .Close
    End With
    Set rsTest = Nothing
    dbTest.Close
    Set dbTest = Nothing
    Set DBEngine = Nothing
    lblStatus.Caption = "Done!"
    Me.MousePointer = vbArrow
    Me.Enabled = True

				

Eigenschaften

Artikel-ID: 238134 - Geändert am: Mittwoch, 12. Februar 2014 - Version: 3.5
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office 2000 Developer Edition
  • Microsoft Visual Studio 6.0 Service Pack 3
  • Microsoft Access 2000 Standard Edition
Keywords: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbdao360fix kbfix kbqfe KB238134 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 238134
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com