2014-01-27 60 views
0

我試圖從查詢(或多個)填寫新表計數和2個變量

我有一個表TomTom公司有以下的列得到充滿計算的新表: TRIPID DRIVERNAME START_TIME END_TIME(日期和時間) start_postext end_postext

我試圖創建一個名爲woperdayperengineer有以下的列表: ID DRIVERNAME每演義 END_TIME(1天neer) woperday

我希望它爲每個工程師創造一個記錄,他具有到特定位置的旅行次數(可以在tomtom.end_postext中找到)。

我爲這樣的查詢:

SELECT Count(tomtom.tripid) AS NumberOfTripsToASite 
FROM tomtom 
WHERE tomtom.end_time BETWEEN #11/12/2013# AND #11/13/2013# 
AND tomtom.drivername = "John Johnson" 
AND 
(
tomtom.end_postext Like "*S0*" 
Or tomtom.end_postext Like "*S1*" 
Or tomtom.end_postext Like "*S2*" 
Or tomtom.end_postext Like "*S3*" 
Or tomtom.end_postext Like "*S4*" 
Or tomtom.end_postext Like "*S5*" 
Or tomtom.end_postext Like "*S6*" 
Or tomtom.end_postext Like "*S7*" 
Or tomtom.end_postext Like "*S8*" 
Or tomtom.end_postext Like "*S9*" 
Or tomtom.end_postext Like "*K0*" 
Or tomtom.end_postext Like "*K1*" 
Or tomtom.end_postext Like "*K2*" 
Or tomtom.end_postext Like "*K3*" 
Or tomtom.end_postext Like "*K3*" 
Or tomtom.end_postext Like "*K4*" 
Or tomtom.end_postext Like "*K5*" 
Or tomtom.end_postext Like "*K6*" 
Or tomtom.end_postext Like "*K7*" 
Or tomtom.end_postext Like "*K8*" 
Or tomtom.end_postext Like "*K9*" 
) 
And tomtom.end_postext Not Like "*Shurgard*"; 

結果給出的旅行,約翰·約翰遜在2013年11月12日提出的數量。

我想這個自動化,所以它會自動填寫表woperdayperengineer。

我沒有做一個查詢來獲取日期的列表:

SELECT DISTINCT DateValue(tomtom.end_time) 
FROM tomtom; 

而且我也做了一個查詢來獲取驅動程序的列表:

SELECT DISTINCT (tomtom.drivername) 
FROM tomtom; 

現在我該怎樣將這些成自動填充表格的查詢或vba腳本?

我想建立一個檢查,以確保它沒有輸入已經在woperdayperengineer表中的日期。

我到目前爲止所做的只是VBA中的循環。我不知道從哪裏開始。有沒有人有提示或示例代碼?

我使用Access 2007年

更新後的第2個RESPONCES:

非常感謝您的答覆! 到目前爲止,我這個(基於雙方的碼的組合):

Woperdayperengineer_append_qry:

INSERT INTO woperdayperengineer 
SELECT tomtom.drivername AS drivername, 
Format (tomtom.end_time, "mm/dd/yyyy") AS end_time, 
Count(tomtom.tripid) AS woperday 
FROM tomtom 
WHERE tomtom.end_time BETWEEN #11/12/2013# AND #11/13/2013# 
AND tomtom.drivername = "John Johnson" 
AND 
(
tomtom.end_postext Like "*S#*" 
Or tomtom.end_postext Like "*K#*" 
) 
And tomtom.end_postext Not Like "*Shurgard*" 
GROUP BY 
tomtom.drivername, 
Format (tomtom.end_time, "mm/dd/yyyy"); 

Form3與按鈕Command0:

Private Sub Command0_Click() 
    Dim dbb As Database 
    Set dbb = CurrentDb 
    Private Sub ButtonName_Click() 
    DoCmd.SetWarnings False 
    CurrentDb.Execute "woperdayperengineer_append_qry" 
    DoCmd.SetWarnings True 
End Sub 

當我按下按鈕沒有反應。

此外,我認爲它需要更多的步驟才能完全自動化。 (我不介意它是否會在啓動時自動觸發,或者如果您不得不按下按鈕,那麼完全自動的過程將是最好的)。日期部分(第#11/12/2013#和#11/13/2013#)應自動選擇工程師工作的下一個日期。當工程師的所有行程完成後,應該選擇下一位工程師(drivername)並生成他工作的所有日期的列表。

當代碼完成後的表應該woperdayperengineer這樣的:

drivername – end_time – woperday 
John Johnson 11/12/2013 2 
John Johnson 11/13/2013 3 
John Johnson 11/14/2013 5 
Jack Jackson 11/12/2013 1 
Jack Jackson 11/13/2013 4 
Jack Jackson 11/14/2013 5 

TomTom的數據看起來是這樣的(由數據):

tripid - drivername - start_time - end_time - start_postext - end_postext (and more) 
123144 - John Johnson - 11/12/2013 1:45:16 PM - 11/12/2013 2:45:16 PM - Kalverstreet, Amsterdam - Longstreet 69, Rotterdam, K0347 
123145 - John Johnson - 11/12/2013 3:49:36 PM - 11/12/2013 4:49:36 PM - Coolsingel, Rotterdam, S2345 - Damstreet, Amsterdam, S3345 
123146 - Jack Jackson - 11/12/2013 10:49:36 AM - 11/12/2013 1:49:37 PM - Herenstreet, Den Haag - Neudestreet, Utrecht, K8765 

你提到的「更改/刪除日期/你想要的名字標準「,但我不知道如何。

再次感謝迄今爲止所有的幫助。

+0

你想「自動化」這一次搶到所有信息?或者你是否希望隨着時間的推移自動化更新每日/每週/每月等等?這聽起來像你可以使用追加查詢... –

+0

Thx!我想從迄今爲止的所有tomtom數據製作表格。然後我想要在將新數據導入數據庫時​​更新它。我正在考慮每天或每週更新tomtom表。 – user3240443

回答

0

未經覈實的,因爲我沒有你的表,但是這應該工作:

(修改/刪除日期/名稱的標準,你的願望)

INSERT INTO woperdayperengineer 
SELECT 
Count(tomtom.tripid) AS ID, 
tomtom.drivername AS Drivername, 
Format (tomtom.end_time, "mm/dd/yyyy") AS End_time 
FROM tomtom 
WHERE tomtom.end_time BETWEEN #11/12/2013# AND #11/13/2013# 
AND tomtom.drivername = "John Johnson" 
AND 
(
tomtom.end_postext Like "*S0*" 
Or tomtom.end_postext Like "*S1*" 
Or tomtom.end_postext Like "*S2*" 
Or tomtom.end_postext Like "*S3*" 
Or tomtom.end_postext Like "*S4*" 
Or tomtom.end_postext Like "*S5*" 
Or tomtom.end_postext Like "*S6*" 
Or tomtom.end_postext Like "*S7*" 
Or tomtom.end_postext Like "*S8*" 
Or tomtom.end_postext Like "*S9*" 
Or tomtom.end_postext Like "*K0*" 
Or tomtom.end_postext Like "*K1*" 
Or tomtom.end_postext Like "*K2*" 
Or tomtom.end_postext Like "*K3*" 
Or tomtom.end_postext Like "*K3*" 
Or tomtom.end_postext Like "*K4*" 
Or tomtom.end_postext Like "*K5*" 
Or tomtom.end_postext Like "*K6*" 
Or tomtom.end_postext Like "*K7*" 
Or tomtom.end_postext Like "*K8*" 
Or tomtom.end_postext Like "*K9*" 
) 
And tomtom.end_postext Not Like "*Shurgard*" 
GROUP BY 
tomtom.drivername, 
Format (tomtom.end_time, "mm/dd/yyyy"); 

保存此爲你喜歡什麼,說woperdayperengineer_append_qry。使DrivernameEnd_time表爲woperdayperengineer表的主鍵,因此您永遠不會有重複的記錄(即每個驅動程序每天有多個條目)。然後做一個表單的一個按鈕,並指定下列VBA(其中「BUTTONNAME」就是以您的按鈕名稱代替):

Dim dbb As Database 
Set dbb = CurrentDb 
Private Sub ButtonName_Click() 
DoCmd.SetWarnings False 
CurrentDb.Execute "woperdayperengineer_append_qry" 
DoCmd.SetWarnings True 
End Sub 

這將增加從查詢中的所有記錄,而轉向警告過會允許它只添加新的(獨特的)記錄而不詢問你的情況。