Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 11
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Xin hướng dẫn giúp mình cách đánh số thứ tự trong Form Access.

    Xin hướng dẫn giúp mình cách đánh số thứ tự trong Form Access.

    Mình có 1 Form main, trong Form main có 1 Form Sub. Mình muốn đánh số thứ tự Form Sub này.(Nếu Form Sub có 3 hàng thì đánh số lần lượt là 1,2,3)

    Mình đã Google và chưa thấy ai trả lời vấn đề này cụ thể hết.

    Anh chị em nào biết xin giúp mình. Mình xin cảm ơn rất nhiều.

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Thu cai nay thu em
    Khi bạn tạo report, ô số thứ tự bạn để =1. Và ô Running Sum =Over All thì số nó tự tăng dần 1->2->3
    Nhưng Chữ thì bạn không thể làm như thế. Nhưng ta có hàm Char để chuyển từ số thành chữ.
    Nghĩa là bạn tạo 1 ô tên là txtSTT trong report và có các thuộc tính sau:
    -Visible: No
    -Controll Source : =1
    - Running Sum: Over All

    bạn tạo 1 ô Đánh Alphabe bình thường. Và có Control source =Chr([txtSTT]+64)
    Khi đó, khi ô STT bằng 1, thì ta sẽ có ô cần đánh số theo thức tự A-z = Char(65) tức là chữ A. Tương tự khi STT=2 thì nó là B.... Nhưng số record của bạn ít thôi nhé. Không thì nó ra cả tiếng ả rập đấy!

  3. #3
    Ngày tham gia
    Feb 2016
    Bài viết
    1
    Report mình biết rồi. Bạn biết tạo bên Form thì chỉ giúp mình nhe.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Anh chị nào biết xin giúp mình với :help:

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    5
    Trích dẫn Gửi bởi tuanh289
    Anh chị nào biết xin giúp mình với :help:
    Trên report:
    -Controll Source : =1
    - Running Sum: Over All

    +Còn trên form thì chỉ có tự nhập tay vào thôi bạn
    +Nếu report bạn đã tạo chức năng: Running Sum: Over All thì bạn nhập bình thường dữ liệu đầu tiên hàng số 1 bạn nhập mặc định là 1 trên report, và hàng thứ 2 là số 2 trên report......

  6. #6
    Ngày tham gia
    Nov 2015
    Bài viết
    2
    xin nhờ mọi người giúp đỡ.

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tuanh289
    Xin hướng dẫn giúp mình cách đánh số thứ tự trong Form Access.
    Mình có 1 Form main, trong Form main có 1 Form Sub. Mình muốn đánh số thứ tự Form Sub này.(Nếu Form Sub có 3 hàng thì đánh số lần lượt là 1,2,3)
    Mình đã Google và chưa thấy ai trả lời vấn đề này cụ thể hết.
    Anh chị em nào biết xin giúp mình. Mình xin cảm ơn rất nhiều.
    Chào Bạn,
    Sau đây là 1 cách làm:
    + Tạo RecordSource cho Sub Form là 1 Query, trong query đó, khai báo 1 cột làm cột ghi số thứ tự và cột này lấy giá trị từ 1 biểu thức dùng DCount tương tự như ảnh đính kèm.

    Ta sẽ được kết quả cột ghi số thứ tự liên tục như ý.


    [IMG]http://**************/attachments/danhsothuturectrenform-recordsource-png.962677274/[/IMG]




    [IMG]http://**************/attachments/danhsothuturectrenform-png.962677275/[/IMG]

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Đây là file của mình. Bạn Lehongduc ngó giúp mình với nhe. Vì 1 mã của bảng 1 thì ở bảng 2 xuất hiện 1 hoặc vài hàng, nên mình không làm Query được.
    http://www.mediafire.com/download/eo0d8h1efsw073g/HELPME.accdb

  9. #9
    Ngày tham gia
    Nov 2015
    Bài viết
    26
    Trích dẫn Gửi bởi tuanh289
    Đây là file của mình. Bạn Lehongduc ngó giúp mình với nhe. Vì 1 mã của bảng 1 thì ở bảng 2 xuất hiện 1 hoặc vài hàng, nên mình không làm Query được.
    http://www.mediafire.com/download/eo0d8h1efsw073g/HELPME.accdb
    Chào Bạn,
    Tôi đã xem file của Bạn nhưng chẳng hiểu "đầu đuôi" gì cả.
    Để Bạn dễ hiểu tôi đính kèm theo đây file minh hoạ lấy từ gốc của Microsoft, tôi chỉ thay đổi một số chi tiết sau đây:
    1. Thêm vào bảng "Order Details" 1 Field với tên "OrderDetailsID" kiểu số - AutoNumber
    2. Sửa lại Query "Order Details Extended", 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;
    Xin xem ảnh và mở file đính kèm.

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Chào các Bạn,

    Tôi vừa nhận được email của nhiều Bạn đề nghị giải thích rõ hơn về cách thức đánh số thứ tự danh sách trên 1 Form mà bài viết trên của tôi đã trình bày. Sau đây là giải thích cụ thể:

    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.



    "OrderID<=" & [OrderID]
    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.

    Trong file minh hoạ Northwind lấy từ gốc của Microsoft, 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

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •