2012-02-17 35 views
0

我遇到了使用正確數據填充數據表的問題。如何僅顯示錶格的子集

我有我使用在表單中的數據表。它被稱爲userConfigProfiles。它有一個2 FK列groupId(這個連接到UserGroupInfo)和corpProfileId(這個連接到我創建的表)。 userConfigProfiles中的數據從另一個表單填充,並且當前正確填充。

的問題是,我需要的SalesTable形式顯示在userConfigProfiles基於斷什麼羣組當前用戶的行的子集上向下創建下降。

我試圖通過添加要做到這一點下面的代碼表中,在SalesTable形式userConfigProfiles:

public void init() 
{ 
    userConfigProfiles.data(userConfigProfiles::find()); 

    super(); 
} 

然後,我添加此查找方法的表本身:

static public userConfigProfiles find() 
{ 
    userConfigProfiles userProfile; 
    UserGroupList userGroupList; 

    str 8 u = curUserId(); 

    select * 
    from userProfile 
    order by userProfile.bdcProfileId 
     join userGroupList 
    where userProfile.groupId == userGroupList.groupId 
     && userGroupList.userId == u; 

    return userProfile; 
} 

然而,即使我的find方法被調用並且它返回正確的數據,它也不會影響到我的表單上的下拉列表中的數據。

我的下拉列表是userConfigProfiles的DataSource和corpProfileId的數據字段一個StringEdit場。

我敢肯定有幾種方法可以解決我的問題,我是開放給任何人,即使這意味着要刪除所有我的代碼,做下拉框中完全不同。

回答

1

使用表UserConfigProfiles與存在加入(屬性joinMode)至表UserGroupList創建查詢,使用適當的關係,然後在字段UserId添加範圍內的一個(currentUserId())value

此值是一個動態query expression其由類SysQueryRangeUtil提供。

最後創建使用SysTableLookup類使用查詢查找。

+0

謝謝你的幫助!我能夠使用你給我的東西,並找出如何解決我的問題! – 2012-02-20 15:14:45

2

到目前爲止,在查找方法最好的教程是由瓦尼亞:

http://kashperuk.blogspot.com/2009/04/lookup-methods-tutorial-custom-list.html

下載他的教程XPO並使用他對你的表格選項之一。你的代碼看起來有點像黑客工作。

如果你想在表格中顯示的記錄的子集,您應該修改查詢(),但如果你想從查找更改顯示的值,然後我會看看他的博客帖子。

+0

我想顯示記錄的子集,但我不知道如何做到這一點。 – 2012-02-17 21:36:40

+0

你說:「我需要在SalesTable窗體上創建一個顯示行的子集的下拉列表」,這稱爲查找。查找的一個例子是如果你去SalesTable,然後在銷售線上,你點擊物品單元旁邊的下拉箭頭,這樣你就可以看到Each,Feet,Inches等等。這就是你所要的試圖創造? – 2012-02-17 22:29:03

+0

是的,除了下拉列表中的項目與當前登錄的用戶相關而不是與銷售線本身相關。 – 2012-02-18 00:21:59