IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Plantage à la copie de champ "Texte long" erreur 3709 inexpliquée [Toutes versions]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut Plantage à la copie de champ "Texte long" erreur 3709 inexpliquée
    Bonjour à tous

    Depuis peu, lors de la copie du contenu d'un champ mémo vers une autre table, si ledit champ contient plus de 100 lignes se lève une erreur 3709 "La clé d'enregistrement n'a été trouvée dans aucun enregistrement"...

    Ce champ mémo ne dépasse pourtant pas la limite de contenu (que je sache...), il est en rich text et lorsque il contient moins de 100 lignes tout fonctionne à merveille.

    Si plus de 100 lignes au format "ligne + espace <br> ou vbcrlf" tel que vous le voyez dans la capture jointe alors l'erreur apparaît et bloque définitivement le code qui vient juste après...

    Voici les tests que j'ai effectué, sans succès :

    - Annulation des indexes sur le champ en question
    - Compactage et réparation (tout revient à la normale jusqu'à ce que l'on sollicite la copie du champ dépassant 100 lignes... rebelotte)
    - Création d'une nouvelle base et importation du data
    - Transformation en "texte brut"

    En principe ce type de champ doit pouvoir contenir beaucoup plus que ce que je lui demande et être optimisé en adaptant exclusivement sa taille finale au contenu

    Existe t'il selon vous une explication ou solution de contournement ?

    Code qui copie dans la table définitive et efface de la table temporaire (qui produit l'erreur 3709 seulement si > à 100 lignes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Public Sub btnSelectionnerSuggestionActive_Click()
     
    Dim db As DAO.Database
    Set db = CurrentDb
     
    Dim rs As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim rs3 As DAO.Recordset
    Dim NumTerrier As String
    Dim nbSuggestions As Single
     
    NumTerrier = NumAutoTerrier()
    nbSuggestions = DCount("*", "[suggestion terriers]", "[sélection]=true")
     
     
    Set rs2 = db.OpenRecordset("terriers", dbOpenDynaset)
    Set rs3 = db.OpenRecordset("select * from [suggestion terriers] where sélection=true", dbOpenDynaset)
     
    On Error GoTo err
     
    Select Case nbSuggestions
        Case Is <> 0
     
    rs3.MoveLast
    rs3.MoveFirst
     
    Do While Not rs3.EOF
     
        rs2.AddNew
        rs2!idSuggestion = rs3!idSuggestion
        rs2!IdTerrier = NumAutoTerrier
        rs2!ListeProprietaires = rs3!ListeProprietaires
        rs2!Propriétaires = rs3!Propriétaires
        rs2!Parcelles = rs3!Parcelles
        rs2!ListeParcelles = rs3!ListeParcelles
        rs2!Exploitant = rs3!Exploitant
        rs2!CodeExploitant = rs3!CodeExploitant
        rs2.update
        db.Execute ("delete * from [suggestion terriers] where idsuggestion=" & rs3!idSuggestion)
        db.Execute ("update [suggestion terriers] set sélection=false")
     
    rs3.MoveNext
    Loop
     
    Case Is = 0
     
    Set rs = db.OpenRecordset("select * from [suggestion terriers] where idsuggestion=" & Me.SFSuggestionTerriersGauche!idSuggestion, dbOpenDynaset)
        rs2.AddNew
        rs2!idSuggestion = rs!idSuggestion
        rs2!IdTerrier = NumAutoTerrier
        Debug.Print NumTerrier
        rs2!ListeProprietaires = rs!ListeProprietaires
        rs2!Propriétaires = rs!Propriétaires
        rs2!Parcelles = rs!Parcelles
        rs2!ListeParcelles = rs!ListeParcelles
        rs2!Exploitant = rs!Exploitant
        rs2!CodeExploitant = rs!CodeExploitant
        rs2.update
        db.Execute ("delete * from [suggestion terriers] where idsuggestion=" & rs!idSuggestion)
     
    End Select
     
    'Me.Parent.SF_Terriers.Form.Requery
    Form_SFSuggestionTerriersGauche.Requery
    [Form_SF Terriers].Requery
    [Form_ListeTerriersChoisis].Requery
    Form_SFSuggestionTerriersGauche.CocheSelectionnerTousTerriers = False
    'Me.NavTerriers.Requery
    'Me.SFNavTerriers.Form.Requery
    'Me.cboExploitant = ""
     
    rs.Close
    rs2.Close
    rs3.Close
     
    Set rs = Nothing
    Set rs2 = Nothing
    Set rs3 = Nothing
    'RemplirTreeViewParcelles
     
    err:
    If err.Number = 3022 Then
    MsgBox ("Un des terriers que vous avez choisi fait déjà partie d'une sélection antérieure, veuillez affiner votre choix.  Opération annulée"), vbCritical, "Risque de doublon"
    Exit Sub
    End If
     
    db.Close: Set db = Nothing
    End Sub
    Nom : Capture table terriers.JPG
Affichages : 101
Taille : 173,4 Ko

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 126
    Par défaut
    Je me réponds à moi-même :

    Solutionné après avoir supprimé tous les indexes existants dans les champs mémo puis compactage et réparation... Ouf !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2016] VBA Taille champ Texte Long
    Par grommerch dans le forum VBA Access
    Réponses: 6
    Dernier message: 13/05/2018, 00h19
  2. [AC-2013] taille champ de texte long limité à 255
    Par unlucky luke dans le forum Access
    Réponses: 9
    Dernier message: 11/05/2018, 01h16
  3. Indexer champ texte court + texte long
    Par clickandgo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/08/2014, 12h35
  4. [AC-2013] adresse courriel dans un champ texte long enrichi
    Par GuyDuLac dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/05/2013, 18h13
  5. [AC-2007] champ memo texte trop long
    Par mapoupou dans le forum IHM
    Réponses: 1
    Dernier message: 19/10/2009, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo