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

IHM Discussion :

Utilisation incorrecte de null [AC-2013]


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut Utilisation incorrecte de null
    Bonjour,

    Dans mon formulaire de demande de prix fournisseur je souhaite sélectionner les lignes que je souhaite commander.
    Je coche la case Selectdp de(s) ligne(s) choisies et la demande se transforme en commande. J'utilise déjà cette procédure dans un autre formulaire (devis en commande) et ça fonctionne parfaitement donc je m'en suis inspiré pour créer la macro dans le formulaire de demande de prix.
    Mais voilà, toute les champs concernant le client, le site, le fournisseur se remplissent bien mais les lignes de produits dans le sous-formulaire detail commande ne sont pas remplis.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Commande114_Click()
    On Error GoTo Err_Commande114_Click
    Dim NumCde As String
    Dim stDocName As String
     
        stDocName = "FORM-COMMANDE"
        DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
     
        Forms![FORM-COMMANDE]![IDClient] = IDClient
        Forms![FORM-COMMANDE]![IDSites] = IDSites
        Forms![FORM-COMMANDE]![IDCatégorie] = IDCatégorie
        Forms![FORM-COMMANDE]![Analytique] = Analytique
        Forms![FORM-COMMANDE]![IDFournisseurs] = IDFournisseurs
     
    'Récupérer le numéro de commande en cours
        NumCde = Forms![FORM-COMMANDE]!IDCommande
     
         monsql = "INSERT INTO [T-DetailCde] ( IDCommande, dESIGNATION, Reference, Quantite )" _
                & " SELECT [Formulaires]![FORM-COMMANDE]![IDCommande] AS CdeNum, [T-DetailDemandePrix].Designation," _
                & "[T-DetailDemandePrix].Reference, [T-DetailDemandePrix].Quantite," _
                & " From [T-DetailDemandePrix]" _
                & " WHERE [T-DetailDemandePrix].[Selectdp]=-1 AND [T-DetailDemandePrix].Commandédp=0;"
     
        DoCmd.RunSQL monsql
        'mettre a jour le champ "Commandé" de la table détails devis pour éviter un doublon de commande
        monsql = "UPDATE [T-DetailDemandePrix] SET [T-DetailDemandePrix].Commandédp = -1" _
                & " WHERE [T-DetailDemandePrix].[Selectdp]=-1 AND [TDetailDemandePrix].Commandédp=0;"
     
    Exit_Commande114_Click:
        Exit Sub
     
    Err_Commande114_Click:
        MsgBox Err.Description
        Resume Exit_Commande114_Click
     
    End Sub
    Lors du transfère en commande une fenêtre affiche "Utilisation incorrect de Null" et je ne comprends pas ce que cela veut dire.

    Auriez-vous des conseils à me donner ?

    Avec mes remerciements

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour maringot,

    Si tu mets un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.print "Numéro de commande=", NumCde
    à la ligne 17 de ton code, qu'est-ce que ça donne dans la fenêtre d'exécution ?

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Bonjour madefemere,

    tu écris
    qu'est-ce que ça donne dans la fenêtre d'exécution ?
    Comment utilise t-on la fenêtre exécution ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Dans l'éditeur, tu fais Ctrl +G ou tu vas dans le menu "Affichage" - "Fenêtre d'exécution".
    Le résultat du Debug.Print s'affiche dedans.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Bonjour madefemere,

    J'ai exécuté mais il ne se passe rien. Après ctrl+G le curseur se met dans la fenêtre exécution et clignote mais il ne s'affiche rien.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Après avoir appuyer sur ton bouton Commande114 (dont le nom devrait être plus significatif entre nous) ?
    Si OUI, donc ton code ne s'exécute pas !
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Lorsque je clique sur le bouton c'est toujours pareil, le sous-formulaire ne se rempli pas et j'ai le message "Utilisation incorrect de null".

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    humm !
    Peux-tu poster la base sans les données confidentielles ou seulement les parties incriminées ? et donner le contexte
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Il s'agit d'une BD d'entreprise, il va me falloir un peu de temps pour pouvoir poster une bd allégée. Je fais ça début de semaine prochaine.

    Cordialement

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    J'ai allégé la BD sur un pc qui a Access 2007. Lorsque je fais la manip demande de prix en commande, j'ai le message "Utilisation incorrect de Null".

    Lorsque j'ai copié la BD sur mon pc principal qui a Access 2013, j'ai eu le message suivant lors de la manip : "Erreur de compilation: projet ou bibliothèque introuvable".

    C'est curieux que d'un Access à l'autre les messages soient différents, j'ai tout vérifié il semble ne rien manquer.

    Voici la BD : Pièce jointe 202594

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour Maringot,

    L'erreur venait du fait que ton Idcommande n'était pas renseigné avant l'exécution de la requête INSERT. Il faut exécuter ta procédure AutoNumber pour assigner la valeur et non une simple assignation de la valeur NumCde.
    Et l'écriture de la requête change un peu parce que ce numéro de commande va être constante.
    Le code devient alors :
    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
    Private Sub Commande114_Click()
    On Error GoTo Err_Commande114_Click
    Dim NumCde As String
    Dim stDocName As String
     
        stDocName = "FORM-COMMANDE"
        DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
     
        Forms![FORM-COMMANDE]![IDClient] = IDClient
        Forms![FORM-COMMANDE]![IDSites] = IDSites
        Forms![FORM-COMMANDE]![IDCatégorie] = IDCatégorie
        Forms![FORM-COMMANDE]![Analytique] = Analytique
        Forms![FORM-COMMANDE]![IDFournisseurs] = IDFournisseurs
     
    'Récupérer le numéro de commande en cours
        Forms![FORM-COMMANDE]!IDCommande = AutoNumber("T-Commande", "IDCommande", "[YY]", 4) 'Ligne rajoutée
        NumCde = Forms![FORM-COMMANDE]!IDCommande
     
         monsql = "INSERT INTO [T-DetailCde] ( IDCommande, dESIGNATION, Reference, Quantite )" _
                & " SELECT '" & NumCde & "', [T-DetailDemandePrix].Designation," _
                & "[T-DetailDemandePrix].Reference, [T-DetailDemandePrix].Quantite" _
                & " From [T-DetailDemandePrix]" _
                & " WHERE [T-DetailDemandePrix].[Selectdp]=-1 AND [T-DetailDemandePrix].Commandédp=0;"
        'Debug.Print monsql
        DoCmd.RunSQL monsql
        'mettre a jour le champ "Commandé" de la table détails devis pour éviter un doublon de commande
        monsql = "UPDATE [T-DetailDemandePrix] SET [T-DetailDemandePrix].Commandédp = -1" _
                & " WHERE [T-DetailDemandePrix].[Selectdp]=-1 AND [T-DetailDemandePrix].Commandédp=0;"
     
        DoCmd.RunSQL monsql
     
    Exit_Commande114_Click:
        Exit Sub
     
    Err_Commande114_Click:
        MsgBox Err.Description
        Resume Exit_Commande114_Click
     
    End Sub
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Ah !!! ça commence à prendre forme mais j'ai encore deux petits soucis

    Le 1er : dans mes autres formulaires lorsque je transfère des lignes d'un formulaire à l'autre j'ai un message qui dit "vous allez mettre à jour x ligne(s)..." je clique sur OK et les lignes apparaissent dans le sous formulaire. Là elles n'apparaissent pas mais si je ferme et que j'ouvre le bon de commande elles sont bien présentes.
    Alors j'ai rajouté :
    Forms![FORM-COMMANDE].Refresh (en ligne 14 sous "Forms![FORM-COMMANDE]![IDFournisseurs] = IDFournisseurs") et
    Forms![FORM-COMMANDE].[S/FORM-DETAIL CDE].Form.Requery (en ligne 33 sous "DoCmd.RunSQL monsql") car j'ai ces 2 lignes dans un autre formulaire donc je pensais que c'était ce qui mettait le sous-formulaire à jour dès que que je cliquais sur OK. Mais non, ça ne change rien.

    Le 2nd : après avoir cliquer sur "vous allez mettre à jour..." j'ai un autre message qui dit : "ADPE ne trouve pas le champ "1" auquel il fait référence dans votre expression". Je ne vois pas ce qu'est ce champ 1

  13. #13
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir Maringot,

    Pour ton premier souci, c'est logique, mais effectivement il faut comprendre le fonctionnement de tout cela (ta commande):
    1- Tu as 2 tables T-Commande et T-DetailCde.
    2- A partir de ces 2 tables, tu as créé 2 requêtes RQ-COMMANDE et RQ-DETAIL CDE que tu utilises comme sources du formulaire FORM-COMMANDE et du fous-formulaire S_FORM_DETAIL_CDE.
    3- Ton code actuellement fait :
    a- Ouvre le formulaire de commande en mode ajout
    b- Attribue les différentes valeurs aux différents contrôles du FORMULAIRE : Client - Site - Catégorie - Fournisseur - ...
    c- Donne un numéro d'Id à la commande du FORMULAIRE - Fonction Autonumber
    d- Ajoute les détails sélectionnés et non -commandés dans la table T-DetailCde
    e- Mets à jour les valeurs en "commandés"

    Si tu remarques, il manque l'action qui permettrait la mise à jour de l'Id-Commande dans la table correspondante parce qu'il faut savoir qu'une valeur saisie dans un formulaire n'est enregistrée dans la table source tant que l'on ne passe pas à un autre enregistrement ou que l'on ferme le formulaire. Donc il faut rajouter la commande adéquate après l'assignation de la valeur de l'IdCommande.
    Et un Requery pour actualiser l'affichage du sous-formulaire.

    Le code devient ainsi :
    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
    Private Sub Commande114_Click()
    On Error GoTo Err_Commande114_Click
    Dim NumCde As String
    Dim stDocName As String
     
        stDocName = "FORM-COMMANDE"
        DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
     
        Forms![FORM-COMMANDE]![IDClient] = IDClient
        Forms![FORM-COMMANDE]![IDSites] = IDSites
        Forms![FORM-COMMANDE]![IDCatégorie] = IDCatégorie
        Forms![FORM-COMMANDE]![Analytique] = Analytique
        Forms![FORM-COMMANDE]![IDFournisseurs] = IDFournisseurs
     
    'Récupérer le numéro de commande en cours
        Forms![FORM-COMMANDE]!IDCommande = AutoNumber("T-Commande", "IDCommande", "[YY]", 4) 'Ligne rajoutée
        NumCde = Forms![FORM-COMMANDE]!IDCommande
    'Nouvelle ligne pour sauvegarder l'Id dans la table Commande et que les requêtes source soient mises à jour.
        DoCmd.RunCommand acCmdSaveRecord
     
         monsql = "INSERT INTO [T-DetailCde] ( IDCommande, dESIGNATION, Reference, Quantite )" _
                & " SELECT '" & NumCde & "', [T-DetailDemandePrix].Designation," _
                & "[T-DetailDemandePrix].Reference, [T-DetailDemandePrix].Quantite" _
                & " From [T-DetailDemandePrix]" _
                & " WHERE [T-DetailDemandePrix].[Selectdp]=-1 AND [T-DetailDemandePrix].Commandédp=0;"
        'Debug.Print monsql
        DoCmd.RunSQL monsql
     
        'mettre a jour le champ "Commandé" de la table détails devis pour éviter un doublon de commande
        monsql = "UPDATE [T-DetailDemandePrix] SET [T-DetailDemandePrix].Commandédp = -1" _
                & " WHERE [T-DetailDemandePrix].[Selectdp]=-1 AND [T-DetailDemandePrix].Commandédp=0;"
     
        DoCmd.RunSQL monsql
            Forms![FORM-COMMANDE].S_FORM_DETAIL_CDE.Form.Requery
     
    Exit_Commande114_Click:
        Exit Sub
     
    Err_Commande114_Click:
        MsgBox Err.Description
        Resume Exit_Commande114_Click
     
    End Sub
    ATTENTION : Je ne sais pas où tu te trouves au niveau du développement de ton application mais il faudrait que tu fasses attention dans le "nommage" de tes objets (C'est source de bug difficile à détecter). Il ne faut utiliser que les caractères alpha-numériques et le "_", sans les caractères spéciaux et espace.

    Pour ton point 2, je te conseille de mettre un Debug.print pour "vérifier" ce qu'il y a dans ton monsql parce que je pense qu'il y a une valeur manquante quelque part.

    Cordialement
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Bonjour Madefemere,

    Suite à la modification du code, les lignes du sous-formulaire s'affichent après validation de "vous allez ajouter..." donc tout c'est passé correctement.

    Mais j'ai eu un message qui ne semble pas causer de problème toutefois je ne sais pas ce que cela veut dire : "Erreur définie par l'application ou par l'objet".

    Quant au message précédent : "ADPE ne trouve pas le champ..." il n'apparaît plus (??)

  15. #15
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour Maringot,

    L'erreur que tu indiques :
    Mais j'ai eu un message qui ne semble pas causer de problème toutefois je ne sais pas ce que cela veut dire : "Erreur définie par l'application ou par l'objet".
    est la plus sournoise et le message envoyé par Access dans ce genre de cas ne donne pas d'indication.

    Si c'est une erreur qui ne bloque pas l'application, essaies de compacter ta base.
    Sinon, j'ai remarqué dans la version que tu as transmise qu'il y a beaucoup de "codes" inutilisés dans l'application . Essaies de faire le ménage (supprimer les lignes de codes inutiles).

    Cordialement,

    PS : N'oublies pas de clore le sujet si c'est bon.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 433
    Points : 131
    Points
    131
    Par défaut
    Effectivement je ne vois pas de problème particulier suite à ce message. Je vais voir après avoir fait un compactage s'il apparaît toujours...

    Pour répondre à ta question précédente ma base a déjà 6 ans, depuis mes premiers pas avec Access j'ai appris à éviter les accents et autre signes qui pourraient faire bugger le système mais comme la base est assez complexe (beaucoup de liens entre les tables) il m'a été quasiment impossible de modifier ces paramètres.

    Quant aux codes que tu as vu dans la BD ils sont actifs car j'ai allégé la base au maximum et donc tu n'en vois qu'environ un tiers.

    Je te remercie pour le temps que tu m'a accordé afin de résoudre mes p'tits soucis

    Cordialement

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

Discussions similaires

  1. erreur 94 utilisation incorrecte de null
    Par caossak dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/06/2007, 11h00
  2. Réponses: 3
    Dernier message: 30/03/2007, 14h48
  3. Réponses: 6
    Dernier message: 03/07/2006, 08h26
  4. Utilisation incorrecte de Null ?
    Par pafi76 dans le forum Access
    Réponses: 6
    Dernier message: 28/06/2006, 09h40
  5. Utilisation incorrecte de Null ?
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 23/11/2005, 10h27

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