ACC2000 : Nouvelle ligne de table SQL Server liée disparaît ou apparaît sous forme de doublon du dernier enregistrement

Traductions disponibles Traductions disponibles
Numéro d'article: 251289 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Modéré : Nécessite macro base, de codage et les compétences de l'interopérabilité.

Cet article s'applique uniquement à une base de données Microsoft Access (.mdb).

Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous ajoutez un nouvel enregistrement dans une table liée Microsoft SQL Server et puis passez à un autre enregistrement, vous pouvez remarquer les problèmes suivants :
Lorsque vous appuyez sur la touche TAB pour passer au nouvel enregistrement suivant après avoir entré une partie d'un nouvel enregistrement dans une table, l'enregistrement que vous venez de taper disappears.When vous tapez un nouvel enregistrement complet dans une table, puis déplacez à un enregistrement existant, l'enregistrement que vous avez tapé disappears.When vous tapez uniquement une partie d'un nouvel enregistrement dans une table, puis déplacez hors de cet enregistrement à un enregistrement existant, votre nouvel enregistrement disparaît et le dernier enregistrement de la table semble duplicated.When vous tapez toute partie d'un enregistrement dans un formulaire et laissez l'enregistrement, les informations que vous tapez disparaissent.
IMPORTANT : les données ne sont pas réellement perdues. N'essayez pas d'ajouter à nouveau l'enregistrement ; il existe. N'essayez pas de supprimer l'enregistrement en double apparente. En le supprimant, pas l'enregistrement que vous venez vous supprimez l'enregistrement d'origine, qui apparaît à dupliquer, ajouté.

Cause

Si la table SQL Server possède une colonne d'identité, lorsque vous essayez d'ajouter un enregistrement, vous consultez ce qui semble être un doublon de l'enregistrement précédent. Le nouvel enregistrement n'affiche pas les données correctes jusqu'à ce que vous actualisez le jeu d'enregistrements. Ce comportement est lié à la façon dont Microsoft Access actualise la base de données SQL Server.

Résolution

Pour résoudre ce problème, procurez-vous le dernier Microsoft Jet 4.0 service pack de mise à jour. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
239114Comment : Obtenir le dernier Service Pack pour le moteur de base de données Microsoft Jet 4.0
Pour contourner ce problème, appliquez l'une des trois méthodes suivantes.

Utilisation un projet Access

Vous pouvez utiliser un projet Access au lieu d'une base de données Access. En utilisant un projet Access, vous ne devez pas les tables pour vous connecter à une base de données SQL Server liées.

Pour plus d'informations sur la conversion de votre base de données Access vers un projet Access, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
241743ACC2000: "Outils de migration Access 2000" livre blanc disponible au centre de téléchargement
250616ACC2000 : Procédure DTS pour exporter des données à partir d'une base de données Microsoft Access vers une base de données SQL Server

Utilisation de formulaires dans une base de données Access

Si vous voyez ce comportement dans un formulaire, vous pouvez utiliser Microsoft Visual Basic pour applications pour les événements BeforeInsert et AfterInsert pour actualiser automatiquement les données et déplacer le formulaire vers l'enregistrement nouvellement ajouté. Avec l'exemple de code ci-dessous, vous pouvez ajouter aux événements pour actualiser automatiquement l'enregistrement du formulaire.

Remarque : avec cette méthode vous remarquerez peut-être vous devez déplacer deux fois sur un nouvel enregistrement. Autrement dit, lorsque vous ajoutez un nouvel enregistrement et appuyez sur la touche TAB ou un des boutons de déplacement entre enregistrements pour ajouter un autre enregistrement ou de déplacer à l'enregistrement précédent, vous avez appuyez sur le bouton de déplacement entre enregistrements d'une seconde fois pour accéder à l'enregistrement approprié. Cela n'affecte pas la fermeture du formulaire.
Option Compare Database
Option Explicit

Dim mfRequery As Boolean

Private Sub Form_AfterInsert()

    If mfRequery = True Then
        ' If the variable indicates a Requery
        ' is needed, Requery the form.
        Me.Requery
        ' Move back to the record that was just added
        DoCmd.GoToRecord acDataForm, Me.Name, acLast
        mfRequery = False
    End If

End Sub

Private Sub Form_BeforeInsert(Cancel As Integer)

    If Me.NewRecord = True Then
        ' If this is a new record, set a variable
        ' to indicate the need to Requery.
        mfRequery = True
    End If
    
End Sub
				

Utilisation de tables dans une MDB

Si vous voyez ce comportement dans une table, vous pouvez manuellement recours de la table ou fermez et rouvrez la table.

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article.   Il a été corrigé dans le dernier service pack Microsoft Jet 4.0.

Plus d'informations

Procédure pour reproduire le problème

  1. Ouvrez la base de données exemple Comptoir.mdb.
  2. Exportez la table commandes à une base de données SQL Server existante. Nommez-le CommandesTest.
  3. Créer une nouvelle base de données Access.
  4. Dans la nouvelle base de données, créer une nouvelle table liée à la table CommandesTest exportés vers SQL Server.
  5. Une fois lié à elle, ouvrez la table.
  6. Faites défiler jusqu'au dernier enregistrement.
  7. À la nouvelle ligne d'enregistrement, tapez un nouvel enregistrement.
  8. Après avoir tapé toutes les données, appuyez sur la flèche haut pour déplacer le curseur hors du nouvel enregistrement.
  9. Vous voyez le nouvel enregistrement est n'est plus visible, mais le dernier enregistrement apparaît deux fois.
  10. Dans le menu enregistrements, cliquez sur Actualiser. Vous remarquez que le doublon a disparu.

Propriétés

Numéro d'article: 251289 - Dernière mise à jour: jeudi 6 février 2014 - Version: 2.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Access 2000 Standard Edition
Mots-clés : 
kbnosurvey kbarchive kbmt kbpending kbprb KB251289 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 251289
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

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