2017-04-14 3 views
0

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?

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