2016-09-11 26 views
1

我有一個表格myForm綁定到我的數據庫中的表tbl。 (我不知道是否綁定是正確的說法,但它顯示了從TBL記錄一個)。如何使用查詢作爲窗體上文本框的控件源?

形式:

  • 聯繫人:文本框,綁定到TBL。聯繫。
  • dailyCount: textbox,應顯示今日輸入的聯繫人數量。

在表中:

  • 接觸
  • dateEntry

我想使用的查詢是:

SELECT count(*) 
FROM tbl 
WHERE contact = currentContact 
AND month(dateEntry) = month(now) 
AND day(dateEntry) = day(now) 
AND ear (dateEntry) = year(now) 

哪裏currentContact是表示接觸在表格上。

  1. 我試圖把查詢的dailyCount數據源,但它不工作。當我點擊數據源上的三個點來訪問嚮導時,我得到一個窗口來構建函數而不是查詢。

  2. 如何將currentContact顯示在表單中?

回答

1

有多種方法可以做到這一點。出於幾個原因,我不喜歡在特定字段的數據源中對查詢進行硬編碼,而且我主要在VBA中構建/分配所有查詢。所以這就是我會怎麼做。

在你的加載事件形成​​:

Private Sub Form_Load() 
    Dim SQL As String 
    Dim RST As Recordset 
    dim theCOntact as string ' Change accordingly 

    theCOntact = Me.currentContact ' I don't know how your fields are named, so change accordingly 

    SQL = "SELECT count(*) AS cnt FROM tbl WHERE contact = " & theContact & "' AND month(dateEntry) = month(now) AND day(dateEntry) = day(now) AND Year(dateEntry) = year(now)" 

    Set RST = CurrentDb.OpenRecordset(RST) 

    If RST.BOF Then 
     dailyCount.Value = RST!cnt 
    Else 
     dailyCount.Value = 0 
    End If 

End Sub 

假設你的聯繫人字段是字符串,如果它的一些刪除引號在SQL

+0

您不必對比較日,月和年。只需使用WHERE dateEntry = Date() – Rene

0

也許最簡單的方法是使用DLookup function與一個關聯的查詢:

  1. 使用您的SQL代碼或等價物創建並保存指定的查詢。我們稱之爲「qryDailyCount」。需要注意的是,應該進行修改,以看起來像這樣(尤其name列,現在更改記錄參照GROUP BY爲):

    SELECT count(*) as DailyCount 
    FROM tbl 
    WHERE month(dateEntry) = month(now) 
    AND day(dateEntry) = day(now) 
    AND year (dateEntry) = year(now) 
    GROUP BY contact 
    
  2. 在dailyCount文本框,設置控制源的東西像這樣:

    =DLookUp("Count";"qryDailyCount";"contact = [contact]") 
    

(請注意,如果contact字段是一個文本字段,你必須用單引號括起來。)

相關問題