2010-10-22 20 views
0

MS Access方案:如何引用單個表單元素中的MS Access連續形式

我使用的形式(我們稱之爲select_contract form)和子窗體(我們稱之爲employee_allocations_by_contract subform)。

select_contract形式:

  1. 綁定。
  2. 包含一個組合框,允許用戶選擇一個合約ID。

employee_allocations_by_contract子窗體:

  1. 是連續形式。
  2. 綁定到一張表(我將其稱爲hours_allocation表),其中包含每個員工分配給每個合同的小時數。
  3. 將僅一個字段employee_id字段綁定到hours_allocation表。該字段的行源是一個查詢,該查詢返回分配給用戶在select_contract表單中選擇的合同的小時數的僱員的ID。
  4. 包含12個其他未綁定的字段,每年一個月。這些字段旨在顯示分配給年度中每個月的employee_id字段中列出的員工的小時數。

問題:爲了通過被分配給在employee_allocations_by_contract窗體中列出的每個僱員月顯示的小時數,每月字段的查詢需要訪問關於它們出現的行的employee_id場。我一直無法弄清楚如何引用這個領域。因爲employee_allocations_by_contract子窗體是一個連續窗體,所以引用employee_id字段名似乎引用窗體上的每一行。

我已經搜索了幾個論壇,並發現相關的連續形式問題,但沒有明確解決這個問題。有什麼想法嗎?

+0

我覺得你的解釋混亂。你想在子表單中顯示什麼?與合同有關的每個員工的計算總時間? – 2010-10-23 00:52:43

回答

1

連續窗體上的未綁定控件只能引用具有焦點的記錄。因此,如果將數據輸入到未綁定的控件中,則會以連續的形式查看每條記錄的相同數據。

2

那麼,你可以爲你需要的每個月份列創建一個子查詢。

喜歡的東西:

Select id, employee_ID, bla, bla, bla, 
    (select sum(hours) where month = 1 and year = 2010 and 
     employee_id = ehours.Employee_id from tblProjectHours) 
as month1, 
    (select sum(hours) where month = 2 and year = 2010 and 
     employee_id = ehours.Employee_id from tblProjectHours) 
as month2, 
     (select sum(hours) where month = 3 and year = 2010 and 
     employee_id = ehours.Employee_id from tblProjectHours) 
    as month3 
    etc. for each column needed 

從ehours

注意我用年份和月份爲列,你可能不得不使用一個月([SomeDate)= 2年([SomeDate])= 2010年,但你明白了。

此外,儘管無法對每行進行尋址並將值填入該未綁定文本框,但實際上可以將文本框綁定到返回所需值/函數的函數。

txtBoxMonth1        txtboxMonth2    etc. 
=MyMonth(1,[employee_id])     =MyMonth(2,[Employee_id]) 

而且,當時的形式,有一個名爲

Public Function MyMonth(intMonth as interger, lngEMPID as long) as long 

     ' code here to get total based on employee id and month 

End Funciton 

所以公共功能,您可以將功能綁定到這些文本框,因此,當前行EMP ID可以開車了每個文本框顯示。請記住,該函數應該預處理所有數據,並且您不希望爲每個函數調用重新運行和重新加載數據,因爲這將會非常慢。不過,我用這種方法取得了很大的成功。因此,表單的每一行只有一個實際列(empID),其餘列是從綁定到公共函數的文本框派生的,如上所述,月份與emp ID一起傳遞以返回值柱。

因此,以上是我成功使用的兩種可能的方法。

+0

對不起,延遲迴復 - 被拉到另一個任務。我正在建立一個類似於您在我看到您的回覆時建議的不同SQL查詢的方向。這是以所需格式顯示數據的絕佳解決方案。有沒有一種允許編輯數據的首選方法?我假設我需要類似於您提供的使用函數的方法。在你的例子中,假設表單上有幾個employee_id,該函數是否知道你指的是與該行關聯的employee_id? – Adam 2010-11-01 19:55:19

0

您不能在MS Access連續表單中「單獨」(「在行級別」)引用控件。

此處唯一的解決方案是將這些控件綁定到基礎記錄集\記錄源,其中相應的字段包含要顯示的值。

例如,如果你想顯示的一段時間和一個「約會了」一「日期」之間的區別,你的記錄\ recorsource可能是這樣的:

select id_person,dateIn,dateOut,dateDiff(xx,dateOut, dateIn) as timeIn from ... 

然後你的時間計算控制必須綁定到記錄集的'timeIn'字段。

(*)請檢查dateDiff參數。我在這裏沒有任何幫助..

相關問題