2015-11-03 1 views
0

Je rencontre des problèmes pour faire ajuster ce bit de code pour faire défiler les enregistrements de mon sous-formulaire. lorsque le sous-formulaire est chargé, il parcourt les enregistrements actuellement filtrés, en ajustant le champ 6 en fonction de son statut respectif dans une autre table (tDPARSHEET). Cependant im incapable de le faire travailler quand je l'appelle de mon bouton d'actualisation sur le formulaire principalRecordsetclone Ne fonctionne pas sur le sous-formulaire

With Me.RecordsetClone 
If Not (.BOF And .EOF) Then 
.MoveFirst 
While Not .EOF 
Debug.Print .Fields(6).Name, .Fields(6).Value 
If .Fields(6).Value <> DLookup("OverallStatus", "tDPARSHEET", "[LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'") Then 
'Debug.Print "No Match" 
.Edit 
.Fields(6).Value = DLookup("OverallStatus", "tDPARSHEET", "[LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'") 
.Update 
Else 
'Debug.Print "!!Match Found!!" 
End If 
.MoveNext 
Wend 
.Requery 
End If 
End With 

Je crois que cela fonctionne sur la charge en raison de la Me.Recordsetclone étant appelé les charges de sous-formulaires, si je voulais Appelez cela à partir de la mainform, spécifiquement à partir d'un bouton que j'utilise pour actualiser le formulaire principal, alors je devrais l'appeler directement

Forms! frmMain.frmsub.Form.recordsetclone est la syntaxe que j'ai vu. Avec toute autre syntaxe que j'ai vu sur le web [me.frmsub.form.recorsetclone // frmMain.subfrmctrlname.form.recordsetclone // me.frmMain.frmsub.forms.subfrmctrlname.recorsetclone] Certains d'entre eux semblaient faux, mais je les ai essayé tout de même. J'ai inclus quelques informations de formulaire ci-dessous pour une utilisation dans la syntaxe

Mainform: frmDPARTOP
SubForm Nom du formulaire: frmDPARPARTSSubform
SubForm Ctl Nom: subDPARTOP

Qu'est-ce que je fais mal qui ne me permettant d'obtenir ce jeu d'enregistrements à travailler, actuellement j'ai Me.subDPARTOP.Form.RecordsetClone dans, je ne reçois pas d'erreurs, il ne fonctionne tout simplement pas

Ci-dessous le code actuel je travaille avec après les instructions sur ici. Code actuel ne parvient pas Debug.Print à la ligne 5, pour autant que je peux dire, que rien n'est montré dans la fenêtre immédiate

Private Sub Command31_Click() 
'Loops through Subform and updates DPAR Status from tDPARSHEET 
'Main Form Name is frmDPARTOP 
'Sub Form Name is frmDPARPARTSSubform 
'Sub Form Control is subDPARTOP 
Dim Field6 As Variant 
With Me!subDPARTOP.Form.RecordsetClone 
While Not .EOF 
    Field6 = DLookup("OverallStatus", "tDPARSHEET", "[LocalCustomer]='" & .Fields(2).Value & "' AND [LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'") 
    Debug.Print .Fields(6).Name, .Fields(6).Value, Field6 
    If .Fields(6).Value <> Field6 Then 
     Debug.Print "No Match" 
     .Edit 
      .Fields(6).Value = Field6 
     .Update 
    Else 
     Debug.Print "!!Match Found!!" 
    End If 
    .MoveNext 
Wend 
.Requery 
End With 
'Refreshes DPAR Counter 
Me.Customer.SetFocus 
Me.Dirty = True 
Me.Refresh 

End Sub 

Répondre

0

Il faut lire:

Dim Field6 As Variant 
With Me!SubformCONTROLName.Form.RecordsetClone 
    If .RecordCount > 0 Then 
     .MoveFirst 
    End If 
    While Not .EOF 
     Field6 = DLookup("OverallStatus", "tDPARSHEET", "[LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'") The 
     Debug.Print .Fields(6).Name, .Fields(6).Value, Field6 
     If .Fields(6).Value <> Field6 Then 
      Debug.Print "No Match" 
      .Edit 
       .Fields(6).Value = Field6 
      .Update 
     Else 
      Debug.Print "!!Match Found!!" 
     End If 
     .MoveNext 
    Wend 
    .Requery 
End With 
+0

Cela ne met à jour l'enregistrement sélectionné dans le sous-formulaire lors de l'exécution –

+0

J'ai également remarqué qu'il n'atteint pas la section de débogage du code, car rien n'est imprimé dans la fenêtre immédiate –

+0

S'il met à jour un enregistrement, une ligne de débogage sera imprimée. – Gustav