DAO 3.60: Definição de propriedades de marcador move-se a linha incorrecto

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

238134
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Em 3.60 DAO utilizando o marcador propriedade de um conjunto de registos para navegar para um registo específico coloca registo errado. Isto é provavelmente superfície quando guardar um marcador e mover para um registo diferente e, em seguida, voltando ao registo marcado definindo a propriedade de marcador do conjunto de registos. Também pode ocorrer quando utilizar a propriedade LastModified após uma actualização. Este problema é mais provável de acontecer se a tabela tiver um grande número de registos ou se a tabela tem menos registos mas um grande número de colunas.

Isto não ocorre quando utilizar o DAO 3.51.
Resolução
Agora é disponibilizada pela Microsoft uma correcção suportada, mas destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em computadores que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, a Microsoft recomenda que aguarde pelo próximo service pack do Microsoft Office que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa de números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft: Nota : em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de suporte normais se aplicarão perguntas de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.

A versão inglesa desta correcção deverá ter os seguintes atributos de ficheiro ou posteriores:
   Date      Time    Version      Size    File name     Platform   -------------------------------------------------------------   7/14/99           3.60.2927.4  545KB   dao360.dll				

Como contornar
Não existe nenhuma solução para este problema.
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.
Mais Informação



Instalação manual

  1. Fechar ou parar quaisquer aplicações ou serviços que estão a utilizar o DAO.
  2. Transferir a versão de correcção de dao360.dll num directório temporário.
  3. Localize e mude o nome a versão actual do dao360.dll deve estar na pasta \Program Files\Common Files\Microsoft Shared\DAO .
  4. copie a versão de correcção do dao360.dll na mesma localização e reiniciar os serviços e aplicações.

Passos para reproduzir

  1. criar um projecto de Visual Basic (EXE padrão) e adicionar uma referência à Microsoft DAO 3.60 Object Library.
  2. No formulário de arranque (Form1), criar uma etiqueta denominada lblStatus e Adicionar um botão de comando .
  3. C opiar o seguinte código para Click() método o botão de comando, em seguida, executar o formulário:
    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				
marcador propriedade dao dao360.dll 3.60 linha registo errado lastmodified actualização

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 238134 - Última Revisão: 02/01/2014 21:19:11 - Revisão: 3.5

  • Microsoft Office 2000 Developer Edition
  • Microsoft Visual Studio 6.0 Service Pack 3
  • Microsoft Access 2000 Standard Edition
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbdao360fix kbfix kbqfe KB238134 KbMtpt
Esta informação foi útil?