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 :

Problème de formulaire de détail avec la fonction Nz


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Par défaut Problème de formulaire de détail avec la fonction Nz
    Bonjour à tous, j'ai un léger soucis qui va je pense très vite ce régler!!!

    J'ai un formulaire avec une zone de liste, et j'ai mis un code sur évenement doucle clic de cette zone de liste, qui me permet d'ouvrir un second formulaire, qui correspond en fait au détail de l'intervention sur laquelle j'ai double cliqué dans ma zone de liste.

    Je m'explique! Dans mon premier formulaire, j'ai une zone de liste qui m'indique pour chaque intervention 1) la date d'intervention
    2) la machine sur laquelle je suis intervenue
    3) le desriptif de l'intervention

    Ensuite sur double clique de cette zone de liste j'ai placé le code suivant:

    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
    Private Sub lstResults_DblClick(Cancel As Integer)
    Dim Descriptif As String, sql As String
    Dim DateIntervention As Date
    Dim compteur As Integer, id_Intervention As Integer, ID_Machine As Integer, Id_Ligne As Integer, ID_Type As Integer, ID_Categorie As Integer, ID_Diagnostic As Integer, ID_DuréeArret As Integer, ID_DuréeIntervention As Integer, ID_tech1 As Integer, ID_tech2 As Integer, ID_Référence As Integer, quantité As Integer
    Dim oRst As DAO.Recordset
    Dim odb As DAO.Database
    Set odb = CurrentDb
     
    If IsNull(Me.lstResults.Column(0)) Then
    MsgBox ("Il n'y a actuellement aucun travaux dans la liste")
    Exit Sub
    Else
    id_Intervention = Me.lstResults.Column(0)
    End If
     
    sql = "select * from tbl_Intervention where ID_intervention = " & id_Intervention & ";"
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
    DateIntervention = oRst.Fields("DateIntervention").Value
    ID_Machine = Nz(oRst.Fields("ID_Machine").Value, 0)
    ID_Type = Nz(oRst.Fields("ID_Type").Value, 0)
    ID_Catégorie = Nz(oRst.Fields("ID_Catégorie").Value, 0)
    Descriptif = Nz(oRst.Fields("Descriptif").Value, "")
    ID_Diagnostic = Nz(oRst.Fields("ID_Diagnostic").Value, 0)
    ID_DuréeArret = Nz(oRst.Fields("DuréeArrétMachine").Value, 0)
    ID_DuréeIntervention = Nz(oRst.Fields("DureéIntervention").Value, 0)
     
    DoCmd.OpenForm ("DetailIntervention")
     
    Form_DetailIntervention.txtDateIntervention.Value = DateIntervention
    Form_DetailIntervention.listeMachine.Value = ID_Machine
    Form_DetailIntervention.listeTypeIntervention = ID_Type
    Form_DetailIntervention.listeNatureintervention.Value = ID_Catégorie
    Form_DetailIntervention.txtDescriptifIntervention.Value = Descriptif
    Form_DetailIntervention.listeDiagnostic.Value = ID_Diagnostic
    Form_DetailIntervention.listeDuréeArretProduction.Value = ID_DuréeArret
    Form_DetailIntervention.listeDuréeIntervention.Value = ID_DuréeIntervention
    Form_DetailIntervention.listeLigneDeProduction.Value = Form_DetailIntervention.listeMachine.Column(1)
     
    sql = "SELECT tbl_PiécesChangées.ID_référence, tbl_Désignation.Désignation, tbl_Référence.Référence, tbl_PiécesChangées.Quantité as Qté FROM (tbl_Désignation INNER JOIN tbl_Référence ON tbl_Désignation.[ID_Désignation] = tbl_Référence.[ID_Désignation]) INNER JOIN tbl_PiécesChangées ON tbl_Référence.[ID_Référence] = tbl_PiécesChangées.[ID_référence] WHERE (((tbl_PiécesChangées.ID_intervention)=" & id_Intervention & "));"
    Form_DetailIntervention.listePiécesChangées.RowSource = sql
     
    sql = "SELECT Count(*) FROM (SELECT tbl_Intervenir.ID_Intervention FROM tbl_Intervenir WHERE (((tbl_Intervenir.ID_Intervention)=" & id_Intervention & ")));"
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
    compteur = Nz(oRst.Fields(0).Value, 0)
     
    sql = "SELECT tbl_Intervenir.ID_Personnel FROM tbl_Intervenir WHERE tbl_Intervenir.ID_Intervention=" & id_Intervention & ";"
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
     
    If compteur = 1 Then
    oRst.MoveFirst
    ID_tech1 = Nz(oRst.Fields(0).Value, 0)
    End If
     
    If compteur = 2 Then
    oRst.MoveFirst
    ID_tech1 = Nz(oRst.Fields(0).Value, 0)
    oRst.MoveLast
    ID_tech2 = Nz(oRst.Fields(0).Value, 0)
    End If
     
    Form_DetailIntervention.listeIntervenant1.Value = ID_tech1
    Form_DetailIntervention.listeIntervenant2.Value = ID_tech2
     
    End Sub
    Et le souci, c'est que quand je double clic sur un enregistrement dans ma zone de liste, si je ne place pas la fonction Nz, j'ai une erreur d'utilisation incorrecte de Null et si je l'utilise comme je l'ai fait, sa ne m'affiche pas des champs vides, mais sa me prend par défaut la valeur du premier enregistrement de ma list déroulante!!!

    Si quelqu'un peut m'aider même si je sais que ce n'est pas clair, mais je n'arrive pas à m'expliquer, donc posez moi des questions pour un supplément.

  2. #2
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    Fais un Debug.Print de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = "select * from tbl_Intervention where ID_intervention = " & id_Intervention & ";"
    Histoire de voir si tu as le bon id_intervenant qui passe par la requête.

    En espérant t'aider.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/07/2010, 09h14
  2. Problème de type de variable avec la fonction find
    Par Sarune dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/11/2008, 17h06
  3. Réponses: 2
    Dernier message: 03/07/2008, 11h36
  4. [PHPMailer] problème d'envoi de mail avec la fonction phpmailer ()
    Par leclone dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 23/02/2007, 12h26
  5. Réponses: 6
    Dernier message: 03/04/2006, 09h42

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