Đánh số thứ tự tự động trong form (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hoangminhtien

Thành viên gắn bó
Tham gia
29/2/08
Bài viết
1,685
Được thích
2,227
Nghề nghiệp
Mechanical Engineering
Em lập 1 form để nhập dữ liệu. ở phần Subform, em muốn phần stt của em sẽ tự động điền vào. Tức là với record 1 ở phần subform thì số thứ tự là 1, record 2 sẽ tự động là 2. các bác xem rồi hướng dẫn cho em cách làm với nhé! Cám ơn các bác!
 

File đính kèm

Em lập 1 form để nhập dữ liệu. ở phần Subform, em muốn phần stt của em sẽ tự động điền vào. Tức là với record 1 ở phần subform thì số thứ tự là 1, record 2 sẽ tự động là 2. các bác xem rồi hướng dẫn cho em cách làm với nhé! Cám ơn các bác!
giải thuật là đây...
 

File đính kèm


Còn khi xóa 1 Record trên subform thì sao hả bạn, nó sẽ không tự động đếm lại và cập nhật lại số, số đếm tiếp tục sẽ bị trùng với số cũ.
Nên dùng vòng lặp cập nhật lại số trong sự kiện Form_AfterDelConfirm.

Bạn thử nhé.
 
Còn khi xóa 1 Record trên subform thì sao hả bạn, nó sẽ không tự động đếm lại và cập nhật lại số, số đếm tiếp tục sẽ bị trùng với số cũ.
Nên dùng vòng lặp cập nhật lại số trong sự kiện Form_AfterDelConfirm.

Bạn thử nhé.
Bác làm trên form cụ thể cho em xem với, em cũng đang cần cái này

Cảm ơn Bác trước
 
Bác làm trên form cụ thể cho em xem với, em cũng đang cần cái này

Cảm ơn Bác trước
Chào các Bạn,
Trong MS. Access, khi thiết kế 1 Report ta có thể dùng thuộc tính Running Sum của 1 TexBox để tạo 1 cột đánh số thứ tự liên tục, nhưng với Form thì MS. Access không cung cấp sẵn tiện ích để làm điều đó.
Sau đây là một cách để chúng ta có thể thực hiện việc đánh số thứ tự danh sách trên Form hoặc SubForm.

1. Điều đầu tiên là chúng ta phải tạo 1 Field có kiểu dữ liệu là số học - AutoNumber cho bảng chính tham gia vào nguồn dữ liệu của Form hoặc SubForm (Record Source).

2. Sau đó, ta tạo 1 Query làm Record Source cho Form hoặc SubForm, trong Query đó dùng hàm Dcount để tạo 1 Field linh hoạt đánh số thứ tự danh sách (trong ví dụ dưới đây cột thứ tự đó được đặt tên là "SequentialNum"):
+ Nếu Form là 1 Main Form: ta tạo 1 biểu thức dùng Dcount có dạng tương tự như sau:
DCount("OrderID","Orders","OrderID<=" & [OrderID]) AS SequentialNum
Trong đó, OrderID là Field trong bảng Orders có kiểu dữ liệu AutoNumber và phải đặt ORDER BY của Query theo Field này.
+ Nếu Form là 1 SubForm: ta tạo 1 biểu thức dùng Dcount có dạng tương tự như sau:
DCount("OrderDetailsId","Order Details","OrderDetailsId<=" & [OrderDetailsId] & " And OrderID=" & [OrderID]) AS SequentialNum
Trong đó, OrderDetailsId là Field trong bảng "Order Details" có kiểu dữ liệu là AutoNumber, và OrderID là khoá chính liên kết giữa bảng Orders với bảng Order Details. Và tương tự như trên, ta phải đặt ORDER BY của Query theo Field này (OrderDetailsID).

3. Cách thức vận hành của biểu thức trên khi ta cho chạy Query làm Record Source của Form hoặc SubForm nêu trên là:
+ Khi ứng dụng duyệt qua từng mẫu tin (record), biểu thức đếm tổng có điều kiện Dcount sẽ đếm số Record theo điều kiện, trong đó chỉ đếm những mẫu tin có OrderID nhỏ hơn hoặc bằng OrderID của mẫu tin hiện hành.
hoặc
"OrderDetailsId<=" & [OrderDetailsId] & " And OrderID=" & [OrderID]
Dcount sẽ đếm số Record theo điều kiện, trong đó chỉ đếm những mẫu tin có OrderDetailsID nhỏ hơn hoặc bằng OrderDetailsID của mẫu tin hiện hành và chỉ đếm khi OrderID giống nhau thôi.

4. Như vậy, giả định ta có xoá đi một vài mẫu tin trong bảng Orders hoặc Order Details, làm gián đoạn số đã ghi trong Field AutoNumber đi nữa thì kết quả đánh số thứ tự danh sách vẫn không thay đổi, vì điều kiện "nhỏ hơn hoặc bằng" của Dcount vẫn thoả.
Kết quả đếm này chính là số thứ tự của danh sách.

Để các Bác dễ hiểu, tôi xin đính kèm file minh hoạ Northwind lấy từ gốc của Microsoft, trong file này tôi chỉ thay đổi một số chi tiết sau đây:
Ví dụ: đánh số thứ tự danh sách phát sinh chi tiết hàng hoá trong SubForm của 1 chứng từ nhập xuất hàng hoá.
1. Thêm vào bảng "Order Details" 1 Field với tên "OrderDetailsID" kiểu số - AutoNumber
2. Thêm vào Form "Orders SubForm" 1 TextBox dùng để ghi kết quả đánh số thứ tự danh sách chi tiết hàng hoá phát sinh
3. Sửa lại Query "Order Details Extended" là Record Source của Form "Orders SubForm" (Form này làm Sub-Form trong Main-Form "Orders"), nếu xem theo dạng câu lệnh SQL thì nội dung như sau:
Xin chú ý dòng được in đậm.
SELECT DCount("OrderDetailsId","Order Details","OrderDetailsId<=" & [OrderDetailsId] & " And OrderID=" & [OrderID]) AS SequentialNum, [Order Details].OrderDetailsId, [Order Details].OrderID, [Order Details].ProductID, Products.ProductName, [Order Details].UnitPrice, [Order Details].Quantity, [Order Details].Discount, CCur([Order Details].UnitPrice*[Quantity]*(1-[Discount])/100)*100 AS ExtendedPrice
FROM Products INNER JOIN [Order Details] ON Products.ProductID = [Order Details].ProductID
ORDER BY [Order Details].OrderDetailsId, [Order Details].OrderID;
Chúng ta cần chú ý đoạn được tô đậm trong Query trên:
+ Nếu ta không ban hành điều kiện kép, mà chỉ là:
DCount("OrderDetailsId","Order Details","OrderDetailsId<=" & [OrderDetailsId]) AS SequentialNum
Thì danh sách sẽ được đánh thứ tự cho toàn bộ dữ liệu phát sinh trong bảng OrderDetails, mà không đánh thứ tự theo chi tiết của từng số chứng từ phân biệt.
Để đánh thứ tự chi tiết hàng hoá phát sinh theo từng chứng từ phân biệt, ta phải ban hành điều kiện kép:
DCount("OrderDetailsId","Order Details","OrderDetailsId<=" & [OrderDetailsId] & " And OrderID=" & [OrderID]) AS SequentialNum
Như vậy Dcount chỉ đếm liên tục khi số chứng từ (OrderID) của các record trùng nhau
 

File đính kèm

  • 301114-OrderDetailsTable.jpg
    301114-OrderDetailsTable.jpg
    15.2 KB · Đọc: 38
  • 301114-Query_OrderDetailsExtended.jpg
    301114-Query_OrderDetailsExtended.jpg
    21.4 KB · Đọc: 42
  • 301114-Query_OrderDetailsExtended_ViewDataSheet.jpg
    301114-Query_OrderDetailsExtended_ViewDataSheet.jpg
    33.4 KB · Đọc: 36
  • 301114-Orders-Form-01.jpg
    301114-Orders-Form-01.jpg
    29.5 KB · Đọc: 36
  • 301114-Orders-Form-02.jpg
    301114-Orders-Form-02.jpg
    28.2 KB · Đọc: 30
  • 301114-Orders-Form-03.jpg
    301114-Orders-Form-03.jpg
    25.6 KB · Đọc: 29
  • Northwind2k7.zip
    Northwind2k7.zip
    681.6 KB · Đọc: 109
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom