2010-04-20 19 views
0

J'ai des problèmes avec l'exécution de ServerFilterByForm dans Access 2003 Lorsque j'applique le filtre entré, il renvoie les données demandées mais après qu'elles apparaissent à l'écran (formulaire) ça disparaît. Je ne sais pas pourquoi cela se produitMS Access: Ordre des événements dans l'événement ApplyFilter (projet ADP)

Est-ce que quelqu'un a eu le même problème? Comment peut-il être résolu? Voici une partie du code »

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) 
    Dim stSql As String 

    If Len(ServerFilter) > 0 Then 
     stSql = "SELECT * FROM v_InitialReviewQuery " & _ 
       " WHERE " + ServerFilter & _ 
       " ORDER BY acctnumber" 

    Else 
     stSql = "SELECT top 1 * FROM v_InitialReviewQuery ORDER BY acctnumber" 
    End If 


    Me.RecordSource = stSql 
End Sub 

Répondre

0

Essayez changeing cette ligne

" WHERE " + ServerFilter & _ 

Pour

" WHERE " & ServerFilter & _ 

également quelle est la valeur de ServerFilter?

+0

Je doute que cela résoudrait le problème, mais il est important d'utiliser le bon opérateur de concaténation. & est pour la concaténation normale (ignore Nulls) et + est pour propager Nulls. Null & "String" = "String", tandis que Null + "String" = Null. –

+0

J'ai fait le changement et obtenu les mêmes résultats. La valeur de mon filtre de serveur dépend de ce que l'utilisateur utilise pour le filtre. Disons que l'utilisation de Contient une partie de la chaîne "Her" sur le champ sFirstName la valeur de ServerFilter est sFirstName Like "% Her%". Maintenant, lors du débogage, je peux voir que les valeurs demandées sont dans Access. Mais après avoir rafraîchi la page, toutes les informations ont disparu de l'écran. J'ai besoin de filtrer à nouveau avec les mêmes valeurs pour obtenir les informations à l'écran. – JAVH

0

J'ai un même .adp.

La méthode que j'utilise pour définir la file d'attente est une vue sur un formulaire (je l'utilise comme sous-formulaire avec plusieurs files d'attente de processus) qui fournit les critères pour le filtre de serveur. Cela remplacerait votre "select top 1 *" et me.recordsource. Le formulaire est intégré en tant que sous-formulaire sur un formulaire principal que je fournis des informations sur diverses files d'attente. Nombre en ligne, à côté de travailler, suivant l'expiration SLA ... J'utilise ceci pour ouvrir la forme initiale:

Dim stDocName As String 
Dim stLinkCriteria As String 
Dim Next_TD_ID As String 

Forms![Launch_Control]![queue_subfrom].Form.Refresh 
Next_ID = Forms![Launch_Control]![queue_subfrom].Form.[nxt_id] 

stLinkCriteria = "nxt_ID = " & Next_ID 
stDocName = "Work_form" 
DoCmd.OpenForm stDocName, , , stLinkCriteria 

ensuite sur la work_form J'utilise 2 boutons

Un pour la prochaine WORK_ITEM dans la que:

private sub next_button_click() 
    dim nxt_id as string 
    nxt_id = Forms![Launch_Control]![queue_subfrom].Form![nxt_id] 
    Me.ServerFilter = "identifier_in_view = " & Nxt_id 
    Me.Refresh 
end sub 

L'autre pour appeler la commande filterby from.

Private Sub button_click(button As String) 

    Forms![your_form].Reviewer.SetFocus 
    Me.ServerFilter = "" 
    Me.Refresh 
    Me.ServerFilterByForm = True 
    Me.Refresh 
    DoCmd.RunCommand acCmdServerFilterByForm 
end Sub 

FYI ma réfrence sous-formulaire peut ne pas être exacly correcte.

Espérons que cela aide.