Je crée actuellement une base de données d'accès pour la saisie de données. En ce moment, j'ai un écran de bienvenue qui demande un numéro de participant et la date à laquelle l'évaluation a été complétée. Après cela, les évaluateurs seront pris au formulaire suivant pour remplir les données qui ont été recueillies pour le participant. Y a-t-il un moyen d'avoir accès à un formulaire déjà rempli si le numéro de participant et la date correspondent et ont déjà été saisis? Merci pour toute aide!Comment extraire un formulaire en fonction des critères correspondants?
0
A
Répondre
0
Plus d'une façon d'accomplir. Une approche consiste à appliquer des critères de filtre lors de l'ouverture du formulaire. Exemple très simple:
If Not IsNull(DLookup("fieldname", "tablename", "criteria here")) Then
DoCmd.OpenForm "form name", , , "criteria here"
Else
DoCmd.OpenForm "form name", , , , , acFormAdd, "new data here"
End If
De même, les moyens de transmettre les nouvelles données au formulaire ouvert et remplir les champs du nouvel enregistrement. Une approche consiste à utiliser l'argument OpenArgs d'OpenForm (les 'nouvelles données ici' montrées dans l'exemple). Et puis le code derrière le second formulaire tirerait des valeurs de l'OpenArgs.
If Me.NewRecord Then
'code to extract data elements from OpenArgs and populate fields
'or if the opening screen is still open,
'just reference controls on that form for the data elements
End If
La véritable astuce consiste à déterminer dans quel événement mettre du code. Gardez à l'esprit: «plus convivial, plus de code».
Lorsque vous développez du code avec lequel vous rencontrez un problème spécifique, postez-le pour analyse.
0
Alors, juste une maquette rapide:
Public Sub btnLoadEval_Click()
Dim ParticipantNumber as String
Dim EvaluationDate as Date
Dim EvaluationID as Variant
If Not IsNull(Me.txtParticipantNumber.Value) And _
Not IsNull(Me.txtEvaluationDate.Value) Then
ParticipantNumber = Me.txtParticipantNumber.Value
EvaluationDate = Me.txtEvaluationDate.Value
EvaluationID = DLookup("EvaluationID", "Evaluations", _
"[ParticipantNumber]=""" & ParticipantNumber & _
""" And [EvaluationDate]=#" & EvaluationDate & "#")
If Not IsNull(EvaluationID) Then
Call DoCmd.OpenForm("frmEvaluation",,,"[EvaluationID]=" & _
EvaluationID
Call DoCmd.Close(acForm, Me.Name, acSaveNo)
Else
Call MsgBox("No matching evaluation!")
End If
Else
Call MsgBox("Please enter both fields!")
End If
End Sub