台灣最大程式設計社群網站
線上人數
900
 
會員總數:242642
討論主題:187615
歡迎您免費加入會員
討論區列表 >> ACCESS >> 請問access 如何用vba直接查詢資料筆數
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問access 如何用vba直接查詢資料筆數
價值 : 50 QP  點閱數:591 回應數:8

樓主

fdsa
初學者
10 23
527 90
發送站內信


請問access 如何用vba直接查詢資料表筆數,
我有產生一個暫存表,想知道筆數,主要是做分頁用途。
如果建一個conut查詢,再使用表單的方式讀取查詢結果,這個我會,但這樣要三個步驟,不方便下次引用。
所以我想用vba一次解決,有查詢slq語法,但在access不知該怎麼用。


語法

Count ( expr )

Expr預留位置代表識別的欄位,包含您想要計算的資料或執行計算欄位中使用資料的運算式字串運算式 。Expr運算元可以包含資料表欄位或函數 (可以是內建或使用者定義的但不是其他 SQL 彙總函式) 的名稱。您可以利用任何類型的資料,包括文字。

註解

提示: 在 Access 2010 中,[運算式建立器都有 IntelliSense,,因此您可以查看自己的運算式所需要的引數。

您可以使用 [計數]計算的基準查詢中的記錄數目。例如,您可以使用Count計算出貨特定國家/地區的訂單的數目。

雖然expr可以執行計算欄位,計算只會計算記錄數目。並不重要哪些值會儲存於記錄中。

Count函數不會計算記錄Null 欄位除非expr星號 (*) 萬用字元。如果您使用星號,計算會計算記錄,其中包含Null欄位的總數。Count (*)是比快Count ([欄名稱])。不會以括住星號 (' ')。下列範例會在 [訂單] 資料表中的記錄數目︰

SELECT Count(*) AS TotalOrders FROM Orders;

如果expr識別多個欄位, Count函數會計算記錄只有至少一個欄位不是空值。如果所有指定欄位是空值,就不會計算記錄。以連字號分隔的欄位名稱 (&)。下列範例會示範如何,您可以限制記錄中的計算出貨日期或運費不是空值︰

SELECT Count('ShippedDate & Freight') AS [Not Null] FROM Orders;

您可以查詢運算式中使用字數統計。您也可以使用此運算式中的SQL 屬性QueryDef物件或建立時SQL 查詢為基礎的記錄集物件。

搜尋相關Tags的文章: [ access ] , [ vba ] , [ conut ] ,
本篇文章發表於2017-11-11 13:50
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
所以你題目到底是什麼?

題目比答案難
本篇文章回覆於2017-11-11 17:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

fdsa
檢舉此回應
另一種說法是,我現在的做法是要建個表單接收查詢數量才能用,有沒有只用vba不用表單的做法。
本篇文章回覆於2017-11-13 17:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
還是不知您要什麼
但答案應該不難
本篇文章回覆於2017-11-14 00:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

kib72377
檢舉此回應
1. Recordset.RecordCount 屬性 (DAO)

2.ADO RecordCount Property
objRecordset.RecordCount
參考 https://www.w3schools.com/asp/prop_rs_recordcount.asp

3.
https://www.devhut.net/2016/02/24/ms-access-vba-get-record-count/
這有多種取筆數方法.

4.
SELECT Count(*) AS TotalOrders FROM Orders; --> 用openrecordset方法,不管ADO,DAO總有你能用的,不懂的自己查.
本篇文章回覆於2017-11-14 08:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

P陳
檢舉此回應
TO kib72377:

樓主說用表單的他作出來了,如何才能不用表單作。

請問您的程式片段要如何才能在沒有表單之下執行?

本篇文章回覆於2017-11-14 10:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

kib72377
檢舉此回應
我想"一般人"所謂的用表單方式處理指的是"結合欄位",或使用函數,巨集,

其他"要寫程式碼"的,即VBA.....
本篇文章回覆於2017-11-14 15:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

Roger
檢舉此回應
要數筆數, 放在一個值內.
1.本來寫在Form的A欄位內 =DCount("[編號]","代墊費用名細-TABLE","[輸入日]=Date() and [費用名稱]<>1 and [編入帳]=-0 and [已收款]=0 and [單據結案]=0").
2.要寫代入VBA的值, 不就是
DIM ANS
ANS =DCount("[編號]","代墊費用名細-TABLE","[輸入日]=Date() and [費用名稱]<>1 and [編入帳]=-0 and [已收款]=0 and [單據結案]=0")

本篇文章回覆於2018-03-08 18:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

fdsa
檢舉此回應
樓上正解,我用dcount去查,這就是我要的結果,我原本的做法是,事先建一個子表單,用vba重新查詢子表單,計算子表單筆數

Count 函數已經過最佳化,可以加速在查詢中計數記錄。請在查詢運算式中使用 Count 函數而不使用 DCount 函數,並選擇是否設定準則以限制傳回的結果。如果必須從程式碼模組、巨集或計算控制項內計數網域中的記錄,則使用 DCount 函數。

DCount 函數可用來計算包含特定欄位的記錄數目,且該特定欄位不是表單或報表所使用的記錄來源。例如,在使用 [產品] 資料表的表單上的計算控制項中,可顯示 [訂貨主檔] 資料表中的訂單數目。

對於 expr 所參考且欄位中包含 Null 值的記錄,DCount 函數並不會計算這些記錄,除非 expr 是星號 (*) 萬用字元才會計算。如果使用星號,DCount 函數會計算記錄的總數目,包括欄位為 Null 值的記錄。下列範例會計算 [訂貨主檔] 資料表的記錄數目。

intX = DCount("*", "Orders")

如果 domain 這個資料表具有主索引,也可以將 expr 設定為主索引鍵欄位來計數記錄總數,因為主索引鍵欄位絕不可能出現 Null 值。
本篇文章回覆於2018-03-08 20:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.