2010-04-20 32 views
0

我在Access 2003中執行ServerFilterByForm時遇到問題 當我應用輸入的過濾器時,它返回所請求的數據,但在它出現在屏幕(窗體)上後,它消失了。不知道爲什麼會發生這種情況MS Access:EventFilter事件順序(ADP項目)

有沒有人有同樣的問題?它如何解決? 下面是代碼」

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 

回答

0

嘗試量變到質變這一行

" WHERE " + ServerFilter & _ 

" WHERE " & ServerFilter & _ 

的一部分,而且是什麼ServerFilter的價值?

+0

我懷疑這會解決問題,但重要的是使用正確的連接運算符。 &用於正常級聯(忽略空值),+用於傳播空值。空&「String」=「字符串」,而空+「字符串」=空。 – 2010-04-22 04:26:49

+0

我做了改變,得到了相同的結果。 我的服務器過濾器的價值取決於用戶用於過濾器的內容。假設這是在字段sFirstName中使用包含字符串「Her」的一部分ServerFilter的值是sFirstName就像'%Her%'。 現在,當調試我可以看到所請求的值在Access中。但刷新頁面後,所有信息都從屏幕上消失。我需要再次使用相同的值進行過濾以獲取屏幕上的信息。 – JAVH 2010-04-22 14:48:13

0

我有一個類似.adp。

我用來設置隊列的方法是一個窗體上的視圖(我將它用作具有各種進程隊列的子窗體),它爲serverfilter提供了標記。這將取代你的「選擇頂部1 *」和me.recordsource。該表單作爲子表單嵌入主表單中,提供有關各種隊列的信息。年線,未來數待解決,未來SLA到期...我使用這個打開的初始形式:

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 

然後在work_form我用2個按鈕

一個用於在接下來的WORK_ITEM 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 

另一個調用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 

僅供參考我的子表單引用可能並不完全正確。

希望這會有所幫助。