Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.

Réponse
 
Outils de la discussion
Vieux 03/09/2008, 14h59   #1 (permalink)
Débutant(e)
 
Date d'inscription: décembre 2007
Messages: 993
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 :
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.
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/09/2008, 17h33   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de Demco
 
Date d'inscription: mai 2002
Localisation: Bordeaux / Lacanau-Océan, entre deux vagues
Âge: 27
Messages: 1 397
Par défaut

Fais un Debug.Print de :

Code :
 
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.
__________________
Modérateur Access & Web
Débogage des requêtes SQL écrites par VBA -- Vos cours Access -- Votre FAQ Access
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment.

*~* >>>>> A Lire Avant De Poster - Imperatif
Java User Group enfin sur Bordeaux. Inauguration le 9/10/08.
Demco est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ACCESSF.A.Q AccessF.A.Q VBATutorielsSourcesOutilsLivresAccess TVAccess 2007

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide