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

Access Discussion :

[Débutant]: Problème non respect règles validation dans Module


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut [Débutant]: Problème non respect règles validation dans Module
    Salut la francophonie.

    Hay problema. J'ai confectionné une table de tri de données(tblTri) venant d'une autre table(tblFiltre), et ce par une Requête Ajout. Pour un champ de cette table([tblTri].[Die]), je veux pouvoir changer le dernier caractère (Champ Texte de 6 caractères) selon l'aspect du dernier caractère du champ de la table d'origine ([tblFiltre].[Extrudeuses]). J'ai confectionné une fonction dans un Module, que voici (en anglais, mea culpa):

    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
    Function FDie(varExt() As String, varDie() As String) As String
    
    Dim varTampDie(0 To 5) As String
    Dim varTampExt(0 To 5) As String
    
    For intI = 0 To 5
    varTampExt(intI) = varExt(intI)
    varTampDie(intI) = varDie(intI)
    Next intI
    
    If varTampExt(5) = "0" Then Exit Function
    
    End If
    
    If varExt(5) = "1" Or "2" Or "3" Then
    varTampDie(5) = "G"
    End If
    
    For intL = 0 To 5
    FDie(intL) = varTampDie(intL)
    Next intL
    
    End Function
    Le code SQL problématique de ma requête Ajout va comme suit:

    INSERT INTO tblTRI ( P, S2, NoCV, Extrudeuse, DateFab, RCP, Die )
    SELECT ... FDie([tblFILTRE].[Extrudeuse],[tblFILTRE].[Die])=FDie([tblFILTRE].[Extrudeuse],[tblFILTRE].[Die]) AS Die
    FROM tblFILTRE;

    Lorsque j'exécute ma requête voici ce qui s'affiche:

    'MAccess ne peut ajouter tous les enreg...à la suite d'une erreur de conversion de type, ... violations de clé,... violations de verrou,...violations de règles de validation'.
    Bref, je suis un violeur tous azimuts .

    SVP me dire ce qui cloche, sans doute une pécadille.

    * Police réduite. il te suffisait d'éditer le post et reformater la plice du code.
    Faw

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Taille carac
    Mes excuses, je croyais RÉDUIRE la taille de code, pas la faire exploser!

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    une première chose.
    La fonction de renvoie rien.
    Pour retourner une valeur il faut faire NomFonction = valeur à Retourner.
    FDie = une string
    Sinon tu risques de renvoyer Null ou "", ce qui peut selon la configuration du champ texte
    ne pas être acceptable (Null interdit ou/et chaînes vides interdites).

    2.
    D'autre part tu n'es pas obligé d'utiliser des tableaux de caractères.
    Mid(varDie, 5, 1) extrait le 5e caractère de la chaîne varDie.
    Pour changer le 5e caractère : Mid(varDie, 5, 1) = "G"

    Bon courage

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Même Prob
    Merci pour indice. Oubli pour retour de valeur :0. J'ai des modifs, nouveau code:

    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
    Function FDie(varExt() As String, varDie() As String) As String
     
    Dim varTampDie(1 To 6) As String
    Dim varTampExt(1 To 6) As String
    varTampDie = varDie
     
    If Mid(varExt, 6, 1) = "0" Then
    FDie = varDie
    Exit Function
     
     
    If Mid(varExt, 6, 1) = "1" Or "2" Or "3" Then
    Mid(varTampDie, 6, 1) = "G"
    End If
     
    FDie = varTampDie
     
    End Function
    Mais toujours même problème en bout de ligne. Serait-ce un problème d'intégrité référentielle? Pourtant mon tableau de relations ne comporte que des liens Un à Plusieurs.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Oubli
    Il manque un End If, rajouté ensuite.

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Dans le message rapport d'erreur(s) qu'affiche Access, à la place des ... il y a des chiffres.
    Quels sont-ils ?
    0 signifie pas d'erreur.
    Le problème se situe partout où il y a un nombre>0.
    Ca devrait permettre d'affiner.
    A+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/02/2013, 13h35
  2. Réponses: 4
    Dernier message: 26/06/2008, 18h15
  3. Réponses: 4
    Dernier message: 27/05/2007, 11h11

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