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 :

enregistrement impossible si champs vide


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut enregistrement impossible si champs vide
    Bonjour à tous,

    j ai un formulaire principal et un sous formulaire, qui contiennent tous deux plusieurs champs (texte et chkbox).

    J ai cree un bouton pour passer à l'enregistrement suivant, et dans le code j ai rajouté une condition pour rendre cela impossible si certains champs sont vide.

    Voici le 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
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Befehl92_Click()
     
    If IsNull(Me.Schicht) Or IsNull(Me.Fhstyp) Or IsNull(Me.Pkz) Or IsNull(Me.Fhsnum) Then
     
    MsgBox "Felder mit * müssen ausgefüllt werden ", vbExclamation + vbOKOnly, "Fehler"
     
    Else
     
    If IsNull(Me!Frontscheibe.Ultraschall_ort) Then
     
    MsgBox "Kästchen In Ordnung oder Nicht in Ordnung müssen ausgefüllt werden ", vbExclamation + vbOKOnly, "Fehler"
     
    End If
    On Error GoTo Err_Befehl92_Click
     
        DoCmd.GoToRecord , , acNext
    Exit_Befehl92_Click:
        Exit Sub
     
    Err_Befehl92_Click:
        MsgBox Err.Description
        Resume Exit_Befehl92_Click
     
    End If
     
    End Sub
    Cela fonctionne pour les champs de mon formulaire en vert, mais il y a une erreur pour le champs Ultraschall_Ort de mon sous formulaire Frontscheibe (en rouge)

    Je ne vois pas quelle syntaxe utiliser, et est ce la meme pour une chkbox(oui/non)?

    question subsidiaire : Comment integrer les noms des champs vide dans la msgbox qui previent que des champs sont vide. En gros preciser lesquels sont vide?

  2. #2
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Je ne sais pas si je t'apporte la réponse a ton probleme, mais la syntaxe ne me parait pas bonne. Essaye plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_du_projet.Form_Frontscheibe.Ultraschall_ort
    Nom_du_projet correspond au nom qui est tout en haut de l'arborescence dans l'éditeur VB.

    Question subsidiaire: la propriété Name, te permet d'extraire le nom de chaque controle. Une petite boucle qui pourrait marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim ctl as Control
    dim str as String
    str = "Les champs vides sont : "
    For each ctl in me.Controls
    on error resume next 'Car je ne suis pas sur que la fonction isnull fonctionne avec tous les types de controles
    if isnull(ctl) then str=str & ctl.name & ","
    next ctl
    Tiens moi au courant!
    puis et puis et encore . Sinon sans oublier et

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    pour un champ de ssf, essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Frontscheibe.form!Ultraschall_ort
    Une idée pour la Q2, si tu veux donner la liste des champs vide à l'utilisteur , construit auparavant une chaine que tu indiquiras dans la message box.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if IsNull(Me.Schicht)
    ChampsASaisir = ChampsASaisir & " Schicht, "
    end if
     
    if IsNull(Me.Fhstyp)
    ChampsASaisir = ChampsASaisir & " Fhstyp, "
    end if
     
    ...
     
    if IsNull(Me.Schicht) Or IsNull(Me.Fhstyp) Or IsNull(Me.Pkz) Or IsNull(Me.Fhsnum) Then
     
    MsgBox "Felder " & ChampsASaisir & " , mit * müssen ausgefüllt werden ", vbExclamation + vbOKOnly, "Fehler"
    salut
    "Always look at the bright side of life." Monty Python.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Salut,
    merci pour vos reponses rapides.
    Malheureusement, les deux solutions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_du_projet.Form_Frontscheibe.Ultraschall_ort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Frontscheibe.form!Ultraschall_ort
    ne fonctionne pas. La forme n est pas reconnue.

    cela vient peut etre du IsNull?

  5. #5
    Invité
    Invité(e)
    Par défaut


    Peut-être en utilisant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Len(Nz(Me.Frontscheibe.Form.Ultraschall_ort,""))=0 Then
    Voilà

  6. #6
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    une des bonnes pratiques peut être de mettre un code de contrôle sur l'événement BeforeUpdate du formulaire, et d'utiliser astucieusement Cancel
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Nz(Me.Frontscheibe.Form.Ultraschall_ort, "")) = 0 Then
    Il surligne ca en rouge, et me dit que cet element est inconnu.

    Le "IL " est bien sur le deboggeur.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    re salut,

    n aurai je pas omis une bibliotheque:j ai entré seulement
    Option Compare Database

  9. #9
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 189
    Points : 54
    Points
    54
    Par défaut
    re bonjour à tous,

    J ai essayé une autre forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![Formulaire]![Sous-Formulaire].champs
    mais ca ne fonctionne pas non plus.

    je suis perdu la....

  10. #10
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    pour les déclarations en entête de tous les modules, mets toujours les 2 lignes :

    Option Compare Database
    Option Explicit

    Ca oblige à bien déclarer toutes tes variables ... et on trouve parfois des surprises.

    A+
    "Always look at the bright side of life." Monty Python.

Discussions similaires

  1. [AC-2003] Filtrage d'enregistrements sur un champ vide.
    Par pegase23 dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/02/2013, 15h08
  2. suppression de tous les enregistrements ayant deux champs vides
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/04/2009, 17h30
  3. Réponses: 11
    Dernier message: 17/08/2006, 17h02
  4. Champs vide => Enregistrement pas renvoyé.
    Par vampiloup dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/03/2006, 20h07
  5. supprimer un enregistrement si un champ est vide
    Par kuhnden dans le forum Access
    Réponses: 2
    Dernier message: 15/02/2006, 19h39

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