Bài giảng Hệ thống thông tin kế toán 4

pdf 53 trang vanle 2780
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống thông tin kế toán 4", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_thong_thong_tin_ke_toan_4.pdf

Nội dung text: Bài giảng Hệ thống thông tin kế toán 4

  1. TRƯỜNG ĐẠI HỌC NHA TRANG KHOA KẾ TOÁN – TÀI CHÍNH BỘ MÔN KIỂM TOÁN BÀI GIẢNG HỆ THỐNG THÔNG TIN KẾ TOÁN 4 (ACCESS KẾ TOÁN) Giảng viên giảng dạy ThS. Nguyễn Thành Cường Ngô Xuân Ban Bùi Mạnh Cường Đỗ Thị Ly Phạm Đình Tuấn Lưu hành nội bộ 1
  2. MỤC LỤC Phần 1: KHÁI QUÁT VỀ MICROSOFT ACCESS ___ 2 1. Chương trình Access ___2 2. Khởi động___2 3. Tạo mới tệp Access ___3 4. Môi trường làm việc___4 5. Mở tệp đã tồn tại ___5 6. Thoát khỏi Access ___5 Phần 2: XÂY DỰNG CƠ SỞ DỮ LIỆU___6 1. Khái niệm về cơ sở dữ liệu Access ___6 2. Liên kết các bảng dữ liệu ___9 Phần 3: ___17 XÂY DỰNG CHƯƠNG TRÌNH KẾ TOÁN TRÊN MS ACCESS 1. Đặt vấn đề, giới thiệu mục tiêu chương trình xây dựng ___17 2. Hệ thống dữ liệu___17 2.1. Bảng dat_tblBDMTKTongHop ___17 2.2. Bảng dat_tblBDMTK ___18 2.3. Bảng dat_KyKeToan___18 2.4. Bảng dat_tblSoDauKy ___19 2.5. Bảng dat_tblNgiepVu ___20 2.6. Bảng dat_tblSoKTMay ___22 2.7. Bảng dat_tblCompanyInfo ___23 3. Xây dựng mối quan hệ giữa các bảng ___24 4. Tạo Form khởi động và xây dựng các query cơ sở ___24 4.1. Tạo Form khởi động cho chương trình ___24 4.2. Xây dựng các query cơ sở___26 4.2.1. Query Qry_0_SoDuDK: ___26 4.2.2. Query QrySoKTMay_TenTKNoCo: ___27 4.2.3. Query QrySoKTMay:___27 4.2.4. Query QrySoKTMay_TKTH___28 4.2.5. Query QryBDMTK:___29 5. Xây dựng các sổ sách kế toán ___32 5.1. Bảng tổng hợp chi tiế 131: ___32 5.2. Bảng tổng hợp chi tiết TKxx: ___35 5.3. Nhật ký chung: ___36 5.4. Sổ chi tiết chi phí: ___37 5.5. Sổ Cái:___39 5.6. Bảng tổng hợp chi tiết các TK: ___41 5.7. Phiếu thu: ___43 5.8. Phiếu nhập xuất kho:___46 BÀI TẬP ỨNG DỤNG: ___50 TÀI LIỆU THAM KHẢO: ___52 2
  3. Phần 1. KHÁI QUÁT VỀ MICROSOFT ACCESS 1. CHƯƠNG TRÌNH ACCESS 1.1 Tệp chứa Chương trình Access Mỗi một tệp Chương trình thường có một đuôi qui định, ví dụ các tệp Chương trình C có đuôi là .C, tệp Chương trình Pascal có đuôi là PAS, tệp Chương trình Foxpro có đuôi là .PRG.Một tệp Chương do Access tạo ra có đuôi là .MDB 1.2 Một hệ Chương trình do Access tạo ra (hệ Chương trình Access) Chương trình Access gọi là một Database (CSDL). Trong các ngôn ngữ truyền thống như C, Pascal, Foxpro, một hệ Chương trình gồm các tệp Chương trình và các tệp dữ liệu được tổ chức một cách riêng biệt. Nhưng trong Access toàn bộ Chương trình và dữ liệu được chứa trong một tệp duy nhất có đuôi .MDB. như vậy thuật ngữ hệ Chương trình hay CSDL được hiểu là tổ hợp bao gồm cả Chương trình và dữ liệu. Để ngắn gọn nhiều khi ta gọi là Chương trình thay cho thuật ngữ hệ Chương trình. như vậy dưới đây khi nói đến Chương trình hay hệ chương trình hay CSDL thì cùng có nghĩa đó là một hệ phần mềm gồm cả Chương trình và dữ liệu do Access tạo ra. 2. KHỞI ĐỘNG Mở lệnh Start / Programs / Microsoft office/ Microsoft office access của Window; Sau khi chọn xong ta có môi trường access như sau: Sau đó chọn File/ New hoặc biểu tượng New trên màn hình 3
  4. Chọn Blank Access database để bắt đầu tạo một tệp Access mới (tạo mới tệp) Hoặc Access database wizard, page, and project để tạo một CSDL theo mẫu có sẵn (không trình bày trong giáo trình này); Hoặc file/ open để mở tệp Access đã tồn tại để làm việc tiếp. 3. TẠO MỚI TỆP ACCESS Một dự án Access (Access project) là một hoặc nhiều tệp Access nhằm giải quyết một công việc lớn nào đó. Khuôn khổ giáo trình này chỉ trình bày những dự án có 1 tệp. Tệp Access có phần mở rộng *.MDB (ngoài ra những tệp có phần mở rộng *.DBE cũng mở được nhưng chỉ có thể thực thi chứ không chỉnh sửa được cấu trúc). Có 5 thành phần chính trên một tệp: Tables – nơi chứa toàn bộ các bảng dữ liệu  Queries – nơi chứa toàn bộ các truy vấn dữ liệu đã được thiết kế;  Forms – nơi chứa các mẫu giao diện phần mềm;  Reports – nơi chứa các mẫu báo cáo đã được thiết kế;  Macro – nơi chứa các Macro lệnh phục vụ dự án;  Modules – nơi chứa các khai báo, các thư viện chương trình con phục vụ dự án. Thông thường mỗi tệp Access cần phải làm việc trên tất cả các thành phần trên. Để bắt đầu tạo một tệp mới, chọn mục Blank Access database, tiếp theo nhấn OK, hộp thoại sau xuất hiện yêu cầu chọn nơi (thư mục) lưu trữ và đặt tên tệp Chu trình doanh thu: 4
  5. Chọn thư mục trên đĩa, nơi sẽ lưu tệp Chu trình doanh thu Gõ tên tệp cần lưu Hãy chọn nơi lưu trữ ở hộp Save in; gõ vào tên tệp ở mục File Name; nhấn Creat để ghi lại thiết lập. Đến đây đã sẵn sàng sử dụng tệp Access vừa khai báo. 4. MÔI TRƯỜNG LÀM VIỆC Sau khi một tệp Access được mở, môi trường làm việc trên Access xuất hiện với những thành phần như sau: Hệ thống thực đơn (menu) và các thanh công cụ (Toolbar)- nơi thực hiện các lệnh khi cần Cửa sổ tệp Access đang làm việc bao gồm 7 phần chính: Tables, Queries, Forms, Reports, Pages, Macros và Modules. làm việc trên từng phần này trong các chương tiếp theo. 5
  6. 5. MỞ TỆP ĐÃ TỒN TẠI Mỗi tệp Access phải tạo mới duy nhất một lần, được mở ra làm việc và ghi lại trong những lần tiếp theo. Để mở một tệp Access đã tồn tại để làm việc, làm như sau: Bước 1: Từ môi trường Access gọi thực đơn:File | Open (hoặc nhấn nút trên thanh công cụ), hộp thoại Open xuất hiện: Bước 2: Tìm đến tệp Access cần mở trên hộp thoại Open bằng cách: Tìm đến thư mục – nơi chứa tệp Access cần mở ở hộp Look in; Tiếp theo chọn tệp Access cần mở trên danh sách và nhấn nút Open hoặc Enter. Đến đây cửa màn hình làm việc Access với tệp vừa mở xuất hiện để tiếp tục làm việc. 6. THOÁT KHỎI ACCESS Khi không làm việc với Access, hãy ra lệnh thoát khỏi Access bằng một trong các cách:  Mở thực đơn File | Exit;  Nhấn tổ hợp phím nóng Alt + F4;  Hoặc sử dụng nút Close trên cửa sổ Access đang mở. 6
  7. Phần 2. XÂY DỰNG CƠ SỞ DỮ LIỆU Xây dựng CSDL là công việc quan trọng đầu tiên trong toàn bộ qui trình phát triển một ứng dụng trên Access. Một CSDL được thiết kế và xây dựng tốt sẽ là những thuận lợi, những tự tin đầu tiên để bước vào một qui trình phát triển ứng dụng; nhưng trái lại sẽ là một thảm họa cho dự án đang phát triển: sẽ thường xuyên gặp phải những khó khăn để phải chỉnh sửa lại CSDL và tồi tệ hơn, dự án có thể phải thực hiện lại từ đầu do việc thiết kế CSDL quá kém. Trong phần này sẽ trình bày các khái niệm cũng như các kỹ năng để có thể tiếp cận và xây dựng được các hệ CSDL trên Acces, cụ thể là:  Tạo cấu trúc các bảng dữ liệu;  Thiết lập thuộc tính LookUp;  Thiết lập quan hệ và các thuộc tính đảm bảo toàn vèn dữ liệu;  Nhập dữ liệu cho CSDL;  Đặc biệt là qui trình xây dựng một CSDL Access. 1. Các khái niệm về CSDL Access 1.1. CSDL Access CSDL Access là một đối tượng bao gồm tập hợp các bảng dữ liệu, các kết nối giữa các bảng được thiết kế một cách phù hợp để phục vụ lưu trữ dữ liệu cho một ứng dụng quản lý dữ liệu nào đó. Ví dụ: CSDL Chu trình doanh thu tại công ty KIJ bao gồm tập hợp các bảng dữ liệu: VANPHONG, NHANVIEN, KHACHHANG, HANGHOA, HOADON, CHITIETHOADON, được kết nối với nhau một cách phù hợp phục vụ lưu trữ dữ liệu cho ứng dụng quản lý học sinh một trường học. Toàn bộ cấu trúc CSDL quản lý học sinh trên Access được mô tả như sau: 7
  8. 1.2 Bảng dữ liệu Bảng dữ liệu (Tables) là một phần quan trọng nhất của CSDL; Là nơi lưu trữ những dữ liệu tác nghiệp cho ứng dụng. Một CSDL có thể có rất nhiều bảng, các bảng phải được thiết kế sao cho có thể lưu trữ được đầy đủ dữ liệu cần thiết, đảm bảo giảm tối đa tình trạng gây dư thừa dữ liệu (dư thừa dữ liệu được hiểu đơn giản là tình trạng lưu trữ những dữ liệu không cần thiết trên một số bảng. Tác hại của hiện tượng này sẽ gây: sai lệch dữ liệu tác nghiệp và làm tăng dung lượng dữ liệu không cần thiết); giảm tối đa dung lượng CSDL có thể, đồng thời tạo môi trường làm việc thuận lợi cho việc phát triển ứng dụng trong các bước tiếp theo. Một bảng dữ liệu trên Access bao gồm các thành phần: Tên bảng, các trường dữ liệu, trường khoá, tập hợp các thuộc tính cần thiết cho mỗi trường dữ liệu và tập hợp các bản ghi. Mô tả một bảng dữ liệu trong trạng thái Datasheet (nhập, xem, sử dữ liệu): Mỗi cột là một Mỗi dòng là một trường dữ liệu bản ghi (record) (field) Bản ghi đặc biệt cuối cùng gọi là EOF Mô tả một bảng dữ liệu trong trạng thái Design view (đang thiết kế cấu trúc): 8
  9. Tập hợp các thuộc tính của trường dữ liệu Tên bảng Mỗi bảng có một tên gọi. Tên bảng thường được đặt sau khi tạo xong cấu trúc của bảng, tuy nhiên cũng có thể đổi lại tên bảng trên cửa sổ Database như đổi tên tệp dữ liệu trên cửa sổ Windows Explorer. Không nên sử dụng dấu cách (Space), các ký tự đặc biệt hoặc chữ tiếng Việt có dấu trong tên bảng. Trường dữ liệu (Field) Mỗi cột dữ liệu của bảng sẽ tương ứng với một trường dữ liệu. Mỗi trường dữ liệu sẽ có một tên gọi và tập hợp các thuộc tính miêu tả trường dữ liệu đó ví dụ như: kiểu dữ liệu, trường khoá, độ lớn, định dạng, Mỗi trường dữ liệu phải được định kiểu dữ liệu. Trong Access, trường dữ liệu có thể nhận một trong các kiểu dữ liệu sau: TT Kiểu dữ liệu Độ lớn Lưu trữ 1 Number Tuỳ thuộc biến cụ Số: số thực, số nguyên theo nhiều thể kiểu 2 Autonumber 4 bytes Số nguyên tự động được đánh số 3 Text Tuỳ thuộc độ dài xâu Xâu ký tự 4 Yes/No 1 bytes Kiểu logic 5 Date/time 8 bytes Lưu trữ ngày, giờ 6 Currentcy Sing Lưu trữ dữ liệu kèm ký hiệu tiền tệ 7 Memo Tuỳ thuộc giá trị kiểu ghi nhớ 8 Hyperlink Tuỳ thuộc độ dài xâu Lưu trữ các siêu liên kết 9 Ole Objects Tuỳ thuộc kiểu dữ âm thanh, hình ảnh, đồ hoạ . liệu 9
  10. Bản ghi (Record) Mỗi dòng dữ liệu của bảng được gọi một bản ghi. Mỗi bảng có một con trỏ bản ghi. Con trỏ bản ghi đang nằm ở bản ghi nào, người dùng có thể sửa được dữ liệu bản ghi đó. Đặc biệt, bản ghi trắng cuối cùng của mỗi bảng được gọi EOF. Trường khoá (Primary key) Trường khoá có tác dụng phân biệt giá trị các bản ghi trong cùng một bảng với nhau. Trường khoá có thể chỉ 01 trường, cũng có thể được tạo từ tập hợp nhiều trường (gọi bộ trường khoá). Ví dụ:  Bảng BANGVANPHONG của CSDL chu trình doanh thu, trường khoá là msvanphong. Vì mỗi văn phòng có thể nhiều trường có giá trị hệt nhau, nhưng mã văn phòng thì duy nhất.  Bảng NHANVIEN trường msnhanvien sẽ là trường khóa vì không thể tồn tại 2 nhân viên ào trong bảng này trùng msnhanvien 2. Liên kết các bảng dữ liệu Liên kết các bảng dữ liệu là một kỹ thuật trong thiết kế CSDL quan hệ. Chúng là mối liên kết giữa 2 bảng với nhau theo thiết kế cho trước để đảm bảo được mục đích lưu trữ dữ liệu cho ứng dụng. Trong Access tồn tại 2 kiểu liên kết: liên kết 1-1(một – một) và liên kết 1-n (một-nhiều) Xây dựng cấu trúc bảng Mục này hướng dẫn cách thiết kế cấu trúc một bảng dữ liệu trên CSDL Access. Để có thể làm tốt được công việc này, sinh viên cần tuân thủ theo thứ tự các bước liệt kê dưới đây Minh hoạ này hướng dẫn cách tạo cấu trúc bảng VANPHONG bao gồm các trường msvanphong, tenvanphong, diachi, thanhpho. Bước 1 khởi động thiết kế cấu trúc bảng ở chế độ Design view Ở thẻ Tables chọn create table in design view 10
  11. Hộp thoại thiết kế cấu trúc một bảng xuất hiện Bước 2: Khai báo danh sách tên các trường của bảng: bằng cách nhập tên danh sách các trường lên cột field name của cửa sổ thiết kế  Chú ý: Không nên sử dụng dấu cách (Space), các ký tự đặc biệt hoặc chữ tiếng Việt có dấu trong tên trường. Bước 3: Khai báo kiểu dữ liệu cho các trường của bảng, bằng cách chọn kiểu dữ liệu cho từng trường ở cột Data type tương ứng. Để chọn kiểu dữ liệu, dùng chuột chọn kiểu dữ liệu từ hộp thả Bước 4: Thiết lập trường khoá cho bảng (những bảng không có trường khoá có thể bỏ qua bước này) Chọn các trường muốn thiết lập khoá bằng cách dùng chuột kết hợp giữ phím shift đánh dấu dòng các trường muốn thiết lập khoá Mở thực đơn Edit/ Primary key hoặc chọn biểu tượng trên thanh công cụ Bước 5: Lưu lại cấu trúc bảng, Mở thực đơn File/Save hoặc chọn biểu tượng trên thanh công cụ, hộp thoại yêu cầu ghi tên cho bảng sẽ xuất hiện: 11
  12. Hãy nhập tên bảng cần lưu và nhấn OK  Chú ý: Đối với những bảng không thiết lập trường khoá hoặc quên thiết lập trường khoá thì trong quá trình ghi lại cấu trúc bảng chương trình sẽ hỏi Nhấn Yes- máy tính sẽ tạo thêm một trường mới có tên ID và thiết lập trường này làm khoá. Nếu không muốn như vậy hãy nhấn No; nhấn Cancel để huỷ lệnh lưu. Tên bảng không nên chứa dấu cách, các ký tự đặc biệt khác hoặc chữ Việt có dấu. Mỗi trường dữ liệu được khai báo trong cửa sổ trên đều có thể thiết lập được rất nhiều các thuộc tính tuỳ thuộc kiểu dữ liệu trường đó đã nhận. Các thuộc tính này có thể thiết lập tại phần Tập hợp các thuộc tính của các trường như đã trình bày ở trên. Dưới đây là danh sách một số các thuộc tính hay được sử dụng Thuộc tính Dùng để quy định Giá trị có thể chọn Độ lớn của số cho phép nhập Field size Các kiểu số Độ dài tối đa của chuối text Cách tạo ra giá trị mới (chỉ có trong Tăng dần (increment/ ngẫu nhiên New values điều kiện autoNumber) (random) Format Định dạng hiển thị dữ liệu Tuỳ kiểu dữ liệu Decimal Places Quy định số thập phân tối đa Tự động (auto) hoặc tuỳ định Chỉ cho dữ liệu kiểu Text hoặc Input Mask Dạng thức hiển thị số liệu nhập Date Nhãn sẽ xuất hiện thay cho tên Caption Tuỳ chọn trường Giá trị mặc nhiên được gán cho Default Value Tuỳ định vùng khi chờ nhập số liệu Biểu thức kiẻm soát đối với dữ liệu Validation rule Biểu thức hợp lệ nhập vào (điều kiện hợp lệ) Thông báo lỗi cho xuất hiện ra khi Validation Text dữ liệu không thoả mãn điều kiện Tuỳ ý hợp lệ Bắt buộc (Yes)/Không bắt buộc Required Dữ liệu bắt buộc có hay không (No) Allow zero Cho phép nhận chuỗi ký tự Cho (yes)/ không cho (No) Length Không có ký tự nào hay không (No) No: không cần sắp xếp Indexed Sắp xếp dữ liệu hay không Yes: (Duplicates OK) cho sắp xếp, 12
  13. chấp nhận giá trị trùng Yes (No Duplicates) cho sắp xếp không chấp nhận giá trị trùng Thuộc tính Field Size  Với trường Text Độ dài mặc định là 50 Độ dài hợp lệ có thể đặt là từ 1à 255  Với trường Number: Mặc định là Double (8 byte) Kích thước Kích thước chọn Ý nghĩa Số lẻ chiếm Byte Số từ 0 đến 255 Không 1 byte Integer Số từ -32,768 đến 32,768 Không 2 byte Long Integer -2,147,483,648 đến 2,147,483,648 Không 4 byte Số từ - 3.402823E38 đến – 1.401298E-45 cho số âm và từ Single 7 số lẻ 4 byte 1.401298E-45 đến 3.402823E38 cho số dương Số từ -1.79769313486231E308 đến – 4.94065645841247E-324 cho số âm 15 số Double từ 1.79769313486231E308 đến 8 byte lẻ 4.94065645841247E-324 cho số dương Khoá toàn cục – Globally unique Không Replication ID identifier (GUID) xác định duy nhất cho 16byte một đối tượng sao chép phép Thuộc tính Format.  Nếu bỏ qua Format, Access sẽ trình bày dữ liệu theo dạng General.  Các giá trị của thuộc tính Format đối với trường Number (giả định Decimal Places = 2 - Hai chữ số phần thập phân vd: 100,00) Giá trị Format Số Được trình bày General Number 1234,5 1234,5 Fixed 1234,5 1234,5 Standard 1234,568 1.234,50 (dấu chấm ngăn cách hàng ngàn) Percent 0,824 82.40 % Scientific 1234,5 1.23E+03 Currency 1234,5 1.234,50(UK) (dấu phẩy hàng ngàn) Chú ý: 1. General Number: Không phụ thuộc vào Decimal Places, hiện số chữ số thập phân cần thiết nhất 2. Decimal Places = n : Mọi dạng (trừ General Number) hiện đúng n chữ số thập phân. 3. Decimal Places = Auto : Khi đó: Dạng Fixed: 0 số lẻ Dạng khác (trừ General): 2 số lẻ Các giá trị của thuộc tính Format đối với trường DATE/TIME. 13
  14. Giá trị Format Ngày/giờ được trình bày General Date 1/31/2009 4:30:00 PM (U.S) 31/01/2009 16:30:00 (U.K) Long Date Friday, January 31 , 2009 (U.S) 31 January 2009 (U.K) Medium Date 31-Jan- 09 Short Date 1/31/2009 (U.S) 31/01/2009 (U.K) Long Time 4:30:00 PM Medium Time 04:30 phần mềm Short Time 16:30 Các giá trị của thuộc tính Format đối với trường YES/NO Giá trị Format ý nghĩa Yes/No Giá trị logic là Yes và No True/Falsse Giá trị logic là True và False On/Off Giá trị logic là On và Off Thuộc tính Input Mask (mặt nạ nhập liệu). Công dụng:  Tạo khuôn dạng nhập liệu cho dễ nhìn. Trên khuôn dạng có thể thấy các vị trí để nhập liệu và các ký tự phân cách (ví dụ dấu chấm phân cách phần nguyên và phần phân, dấu gạch ngang để phân cách các cụm ký tự của số tài khoản, )  Kiểm tra tính hơp lệ của mỗi ký tự gõ vào. Tại mỗi vị trí trên khuôn dạng có thể quy định lớp ký tự được phép gõ (ví dụ nếu quy định các chữ số thì Access sẽ không nhận các ký tự không phải là chữ số).  Tự động biến đổi ký tự được nhập (ví dụ chuyển sang chữ hoa).  Che dấu thông tin gõ vào: Dùng mặt nạ kiểu Password, khi đó các ký tự gõ vào được thể hiện thành dấu *. Cách tạo mặt nạ nhập liệu: Mặt nạ nhập liệu là một dẫy ký tự gồm các loại sau: Ký tự khuôn dạng: Mỗi ký tự khuôn dạng thể hiện một vị trí giành cho ký tự gõ vào và quy định lớp ký tự được gõ. 0 vị trí dành cho chữ số 0 9, bắt buộc 9 vị trí dành cho chữ số 0 9, không bắt buộc # vị trí dành cho chữ số, dấu + - dấu cách L vị trí dành cho một chữ cái, bắt buộc ? vị trí dành cho chữ cái hoặc dấu cách, không bắt buộc A vị trí dành cho ký tự chữ hoặc số, bắt buộc a vị trí dành cho ký tự chữ hoặc số, không bắt buộc & vị trí dành cho một ký tự bất kỳ, bắt buộc 14
  15. C vị trí dành cho một ký tự bất kỳ, không bắt buộc 2. Ký tự chuyển đổi gồm: Ký tự dùng để đổi các ký tự đứng sau giá trị nhập vào phải khác 0 0 or >l00 giá trị nhập vào phải bằng 0 hoặc lớn hơn 100 Like "K???" phải nhập 4 ký tự, ký tự đầu phải là K Like "CTY*" ba ký tự đầu phải là CTY -#l/1/2009# and <#l/1/2009# ngày nhập phải trong năm 2009 Thuộc tính Indexed Thuộc tính này có thể nhận các giá trị: No Không tạo chỉ mục hoặc xoá chỉ mục đã lập Yes (Dupticates Ok) Tạo chỉ mục Yes (No Duplicates) Tạo chỉ mục kiểu Unique (các giá trị cần khác nhau như thể khóa chính 15
  16. 2.3 Thiết lập mối quan hệ Một bước quan trọng trong xây dựng CSDL Access là thiết lập quan hệ các bảng trong CSDL. Làm được điều này bạn sẽ gặp được rất nhiều thuận lợi trong quá trình sử dụng các trình Wizard và Design View trong Access sau này. Dưới đây sẽ là hướng dẫn cách thiết lập quan hệ cho một cặp bảng. Tương tự bạn phải thiết lập toàn bộ các quan hệ có thể trên CSDL. Bước 1: Mở cửa sổ thiết lập quan hệ bởi thực đơn: Tools | Relationship Hoặc chọn biểu tượng Bước 2: Đưa các bảng (Tables) tham gia thiết lập quan hệ thông qua hộp thoại Show Tables (nếu chưa thấy hộp thoại này dùng thực đơn Relationship | Show table): Chọn bảng cần tham gia thiết lập quan hệ (thường thì chọn tất cả) nhấn nút add, chọn xong toàn bộ nhấn nút close để đóng Bước 3: Thực hiện tạo kết nối giữa từng cặp bảng theo thiết kế, cách làm như sau: Dùng chuột kéo (Drag) trường cần liên kết của bảng này (ví dụ trường msvanphong của bảng VANPHONG) thả (Drop) lên trường cần liên kết đến của bảng kia (ví dụ trường msvanphong của bảng NHANVIEN). Khi đó hộp thoại Edit Relationships xuất hiện: 16
  17. Trong trường hợp muốn thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu (Enforce Referential Integrity) cho quan hệ hãy thực hiện chọn (checked) 3 mục chọn sau: Enforce referential Integrity: để đồng ý thiết lập các thuộc tính đảm bảo toàn vẹn dữ liệu; Cascade Update Related Fields: đảm bảo toàn vẹn dữ liệu khi cập nhật dữ liệu giữa 2 bảng liên quan. Khi đó, nếu giá trị trường khoá liên kết ở bảng 1 bị thay đổi, toàn bộ giá trị trường khoá liên kết ở bảng nhiều cũng bị thay đổi theo. Cascade Delete Related Records: đảm bảo toàn vẹn dữ liệu khi xoá dữ liệu giữa 2 bảng liên quan. Khi đó, nếu một bản ghi ở bảng có quan hệ 1 bị xoá, toàn bộ các bản ghi có quan hệ với bản ghi hiện tại sẽ được tự động xoá ở bảng có quan hệ nhiều (nếu xoá 1 CHA, toàn bộ các con của cha đó sẽ tự động bị xoá khỏi bảng CON); Relationship Type: One – To – Many: Hộp Relationship Type: cho biết kiểu quan hệ giữa 2 bảng đang thiết lập  One – To – One Kiểu 1-1  One – To – Many Kiểu 1-∞  Indeterminate Không xác định được kiểu liên kết Tuỳ thuộc vào kiểu khoá của các trường tham gia liên kết mà Access tự xác định ra được kiểu liên kết giữa 2 bảng. Dưới đây là một số kiểu liên kết được Access tự động xác định: TT Bảng A Bảng B Kiểu liên kết 1 Khoá chính Khoá chính 1-1 2 Khoá chính Khoá ngoại (hoặc không khoá 1-n 3 Khoá ngoại Khoá ngoại (hoặc không khoá) Không xác định kiểu liên kết 4 Không khoá Không khoá Không xác định kiểu liên kết 17
  18. Phần 3: XÂY DỰNG CHƯƠNG TRÌNH KẾ TOÁN TRÊN MS - ACCESS 1. Đặt vấn đề, giới thiệu mục tiêu chương trình xây dựng: Trong công tác kế toán, tất cả các sổ sách, báo cáo đều được lập theo mẫu quy định của nhà nước và theo từng kỳ kế toán. Khi xây dựng chương trình kế toán này chủ yếu hướng tới đến việc lập sổ sách và báo cáo theo từng kỳ kế toán đúng với quy định của chế độ. Việc lập sổ sách bằng máy cũng giống như làm bằng tay đều tuân thủ đều tuân thủ đúng chế độ kế toán hiện hành, cả về quy tắc xây dựng, trình tự ghi sổ. Mục tiêu của chương trình kế toán là xây dựng các sổ sách và báo cáo được tổ chức trong công ty, để tiến hành được việc ban đầu ta cần thiết lập các bảng dữ liệu ban đầu. 2. Hệ thống bảng dữ liệu: Bảng dat_tblBDMTKTongHop: Bảng này liệt kê hệ thống tài khoản cấp 1 của đơn vị theo quy định hiện hành của chế độ kế toán. Các tài khoản này sẽ được sử dụng mở sổ cái. Bảng bao gồm các trường là số hiệu tài khoản, loại tài khoản, tên tài khoản, tài khoản mua được, tài khoản thanh toán được, Cấu trúc bảng như sau: Field name Data type Description Validation rule Indexed SohieuTKTH Text(3) Số hiệu tài khoản tổng hợp No duplicate LoaiTK Text(1) Loại tài khoản là N hoặc C = “N” or = “C” TenTK Text(255) Tên tài khoản No duplicate TMMuaduoc Yes/No Tkthanhtoanduoc Yes/No dat_tblBDMTKTongHop SoHieuTK LoaiTK TenTK TKMuaDuoc TKThanhToanDuoc 111 N Tiền mặt tại quỹ, ngân phiếu No Yes 112 N Tiền gửi ngân hàng No Yes 121 N Đầu tư chứng khoán ngắn hạn No No 128 N Đầu tư ngắn hạn khác No No 129 C Dự phòng giảm giá đầu tư ngắn hạn No No 131 N Phải thu của khách hàng No Yes 133 N Thuế GTGT được khấu trừ Yes No 136 N Phải thu nội bộ No Yes 18
  19. Bảng dat_tblBDMTK: Bảng này lưu trữ thông tin về tài khoản chi tiết. Mỗi tài khoản được mở trong bảng này sẽ theo dõi một hoặc một nhóm đối tượng do yêu cầu quản lý của công ty. Bảng này bao gồm các trường như số hiệu tài khoản, loại tài khoản, tên tài khoản, đơn vị tính, số hiệu tài khoản tổng hợp, tài khoản nhận kết chuyển, mã kết chuyển. Cấu trúc bảng như sau: Field name Data type Description Validation rule Indexed SohieuTKCT Text(20) Số hiệu tài khoản chi tiết No duplicate LoaiTK Text(1) Loại N hoặc N = “N” or = “C” TenTK Text(255) Tên tài khoản No duplicate DVT Text(20) Đơn vị tính SohieuTKTH Text(3) TaikhoannhanKC Text(20) Tài khoản nhận kết chuyển MaKC Text(5) Mã kết chuyển dat_tblBDMTK SoHieuT Loai SoHie TKNhan TenTK DVT MaKC K TK uTKTH KC 1111 N Tiền mặt Việt Nam 111 11211 N Tiền VN gửi không kỳ hạn tại NH nông nghiệp CR 112 11212 N Tiền VN gửi NH đầu tư và phát triển Khánh Hòa 112 11213 N Tiền VN gửi NH Incombank 112 11214 N Tiền VN gửi NH Sacombank 112 11215 N Tiền VN gửi NH NN và PTNT Cam Ranh 112 121 N Đầu tư chứng khoán ngắn hạn 121 1281 N Tiền gửi có kỳ hạn 128 13111 N Phải tthu KH_nước máy_Cam Ranh 131 Bảng dat_KyKeToan Hệ thống tài khoản được dùng qua nhiều kỳ kế toán, nhưng các nghiệp vụ kinh tế phát sinh lại thuộc một kỳ cụ thể. Các tài khoản lại có số dư đầu kỳ khác nhau giữa các kỳ. Để phân biệt được số liệu giữa các kỳ kế toán, ta cần một bảng lưu trữ thông tin kỳ kế toán. Cấu trúc bảng như sau: Field name Data type Description Validation rule Indexed Maky Text(6) Mã kỳ Like ‘??????’ No duplicate Diengiai Text(50) Diễn giải 19
  20. dat_tblKyKeToan MaKy DienGiai 200904 Quý 4 Năm 2009 Bảng dat_tblSoDauKy: Ghi nhận số dư đầu kỳ, số lương tồn đầu kỳ của các tài khoản trong mỗi kỳ kế toán tại công ty. Cấu trúc bảng như sau: Field name Data type Description Validation rule Indexed SohieuTKCT Text(20) Số hiệu tài khoản chi tiết No duplicate Maky Text(6) Mã kỳ kế toán No duplicate SoluongtonDK Number/Double Số lượng tồn đầu kỳ SoduDK Number/Double Số dư đầu kỳ dat_tblSoDauKy SoHieuTK MaKy SoLuongTonDK SoDuDK 1111 200904 0.00 2,455,352.00 11211 200904 0.00 42,750,227.00 11212 200904 0.00 41,150,006.00 1312011 200904 0.00 -9,000,000.00 1312012 200904 0.00 4,500,000.00 1312041 200904 0.00 -11,917,000.00 1312051 200904 0.00 8,670,000.00 1312052 200904 0.00 17,499,000.00 1312151 200904 0.00 645,840,800.00 13131 200904 0.00 951,553,000.00 13132 200904 0.00 -191,164,000.00 20
  21. Bảng dat_tblNghiepVu: Bảng này ghi nhận thông tin tất cả các chứng từ kế toán phát sinh trong kỳ. Các chứng từ kế toán này bao gồm: Hóa đơn GTGT, phiếu thu, phiếu chi, phiếu xuất kho, phiếu nhập kho Do đó bảng này chứa các thông tin của các chứng từ này. Cấu trúc bảng như sau: Field name Data type Description Validation rule Indexed Nghiepvu(*) Auto number Mã nghiệp vụ No duplicate Maky Text(6) Mã kỳ kế toán Ngayghiso Date/time Ngày ghi sổ Diengiaichung Text(255) Diễn giải nghiệp vụ kinh tế Soserie Text(10) Số serie hoá đơn GTGT Sohoadon Text(10) Số hoá đơn Ngayhoadon Date/time Ngày hoá đơn Sophieuthuchi Text(10) Số phiếu thu chi Like ‘P[C,T]*’ Ngaythuchi Date/time Ngày chứng từ thu chi Nguoinhan_nop Text(50) Người nhận (nộp) tiền Sophieunhapxuat Text(10) Ngày chứng từ nhập (xuất) kho Like ‘P[N,X]K*’ Ngaynhapxuat Date/time Ngày nhập (xuất) kho Nguoigiao_nhan Text(50) Người giao (nhận) hàng Giaonhantaikho Text(30) Nơi giao (nhận) hàng tồn kho TenCSKD Text (255) Tên CSKD nhận (cung cấp) hàng tồn kho Masothue Text (12) Mã số thuế của CSKD đối tác ThuesuatGTGT Text (4) 0: không thuế; 0%; 5%; 10% 21
  22. dat_tblNghiepVu Nghi NgayGhiS SoS NgayCT_H ThueSu SoPhieu NgayCT_Th MaKy DienGiaiChung SoHoaDon epVu o erie oaDon atGTGT ThuChi uChi 125 200904 24/11/2009 Trả tiền nước GRDTNS 24/11/2009 126 200904 24/11/2009 Trả tiền lắp đặt đồng hồ nước LTT 24/11/2009 130 200904 07/11/2009 Mua nồi áp suất cho công ty MHD204 20/10/2009 10% C831 07/11/2009 131 200904 07/11/2009 Nhiêu liệu cho xe hút hầm tháng 10 C833 07/11/2009 132 200904 20/10/2009 Lương kỳ 2 và tiền ăn ca tháng 9/2009 C875 20/11/2009 133 200904 06/10/2009 Quét cát cho cảng Cam Ranh C845 06/10/2009 134 200904 06/10/2009 Nhập nắp bảo vệ đồng hồ MHD183 06/10/2009 5.00% C846 06/10/2009 142 200904 27/10/2009 Xăng trực điện CS tháng 10/2009 C856 27/10/2009 143 200904 27/10/2009 Chi theo QT DV nghĩa trang 10/09 C857 27/10/2009 144 200904 31/12/2009 Phí thoát nước thu theo HĐ tiền nước NKDT 31/12/2009 145 200904 31/12/2009 Tiền thuê bao đồng hồ nước NKDT 31/12/2009 150 200904 31/12/2009 Tiền nước rửa xe vệ sinh 5% NKDT 31/12/2009 151 200904 31/12/2009 Tiền tưới nước công viên, cây xanh 5% NKDT 31/12/2009 152 200904 31/12/2009 Tiền nước dùng cho văn phòng công ty 5% NKDT 31/12/2009 153 200904 31/12/2009 Kinh phí vệ sinh môi trường 0% NKDT 31/12/2009 161 200904 30/11/2009 Trả 20% : Nối mạng HTN CTĐông -2009 GRVĐT 30/11/2009 222 200904 06/10/2009 Lắp đặt hệ thống nước T2391 06/10/2009 229 200904 31/12/2009 Điện chiếu sáng đường Tỉnh lộ 9 NKK 31/12/2009 237 200904 01/10/2009 Ốm dài ngày tháng 9 và tháng 10 C819 03/10/2009 238 200904 20/10/2009 Xăng chạy máy phát điện Cty MHD201 20/10/2009 10% C820 20/10/2009 239 200904 20/10/2009 Nhiên liệu vận chuyển rác và cát C824 20/10/2009 240 200904 20/11/2009 Làm việc phòng tài chính- Kp cây xanh 2009 C828 20/11/2009 22
  23. Bảng dat_tblSoKTMay: Bảng này ghi nhận lại các chi tiết định khoản xuất phát từ những chứng từ phát sing trong bảng dat_tblNghiepVu. Cấu trúc bảng như sau: Field name Data type Description Validation rule Indexed Nghiepvu Number Mã nghiệp vụ No duplicate Diengiai Text(2550 Diễn giải TaikhoanGN Text(20) Tài khoản ghi nợ No duplicate TaikhoanGC Text(20) Tài khoản ghi có No duplicate SoluongPS Number/Double Số lượng phát sinh SotienPS Number/Double Số tiền phát sinh dat_tblSoKTMay TKGHIN NghiepVu DienGiai TKGHICO SoLuongPS SoTienPS O 1 Trả tiền nước thô Cam Lâm 11211 13112 0.00 2,559,600.00 2 Lãi tiền gửi_kỳ hạn 3 tháng (2/7/09)-300tr 11211 515 0.00 5,625,000.00 3 Chuyển tiền kỳ hạn 3 tháng sang TG không kỳ hạn 11211 1281 0.00 300,000,000.00 140 Sữa chữa xe ép rác 79H-4955 3358 1111 0.00 8,650,000.00 141 Mua bánh trung thu cho các cháu CBCNV Cty-Q.Phúc lợi 4312 1111 0.00 2,250,000.00 142 Xăng trực điện CS tháng 10/2009 63233 1111 0.00 3,000,000.00 143 Chi theo QT DV nghĩa trang 10/09 63234 1111 0.00 4,720,310.00 144 Phí thoát nước thu theo HĐ tiền nước 13111 3339 0.00 87,265,400.00 145 Tiền thuê bao đồng hồ nước 13111 515 0.00 23,545,200.00 196 Nộp tiền BHXH,YT, TN tháng 11/09 3383 11211 0.00 51,743,770.00 197 Trả tiền điện đơn vịtháng 11/09 cho ĐLực CR 331011 11211 0.00 5,201,637.00 213 Nộp BHXH,BHYT ,BH TN quý 03/2009 1111 1388 0.00 1,126,125.00 214 Lắp đặt hê thống nước 1111 1312000 0.00 1,321,000.00 215 Đóng góp tuyến nước người nghèo 1111 1312000 0.00 153,400.00 216 Thuê xe tải cẩu 1111 13141 0.00 500,000.00 23
  24. Bảng dat_tblCompanyInfo: Bảng này liệt kê một số thông tin liên quan đến công tác hạch toán kế toán của đơn vịnhằm sử dụng để thiết lập thông tin của báo cáo, qua thời gian thay đổi cơ cấu tổ chức ta chỉ cần thay đổi bảng này thì các báo cáo tự cập nhật sự thay đổi đó. Cấu trúc của bảng như sau: Field name Data type Description Validation rule Indexed noidung Text(50) Tên thongtinchung Text(100) Thông tin chung dat_tblCompanyInfo Name Value DiaChiDN Nha Trang Email Buimanhcuong8230@yahoo.com Fax (058)85xxxx GiamDoc Tổng giám đốc KeToanTruong Phụ trách kế toán MST 4200890876 Tel (058)86xxxx Ten_GiamDoc Bùi Thanh Bình Ten_KeToanTruong Bùi Thiên Hồng Uyên Ten_ThuQuy Bùi Khánh Hà TenDN ĐƠN VỊCỔ PHẦN AIST 24
  25. 3. Xây dựng mối quan hệ giữa các bảng: Khi xây dựng xong các bảng, để liên kết giữa các dữ liệu cần tạo các mối liên kết giữa các bảng. 4. Tạo Form khởi động và xây dựng các query cơ sở: 4.1. Tạo form khởi động cho chương trình: Chọn Tools Macros Visual Basic Editor, tạo Module mới (Insert Module) - Tạo các hàm dùng chung: Hàm TenDN: trả về tên công ty Function TenDN() As String TenDN = "CONG TY ABC" End Function Hàm Diachi: trả về địa chỉ công ty Function Diachi() As String Diachi = "149 Cao Ba Quat" End Function Hàm MST: trả về mã số thuế của công ty Function MST() As String 25
  26. MST = "2700165762” End Function - Tạo hàm mã kỳ Private MAKY As String Sub SETMAKY(MAKYCHON As String) MAKY = MAKYCHON End Sub Function GETMAKY() As String GETMAKY = MAKY End Function Toàn bộ Module được thể hiện như sau: Ta tạo Form khởi động như sau: 26
  27. 4.2. Xây dựng các query cơ sở: 4.2.1 Query Qry_0_SoDuDK: Liệt kê tài khoản, tên và số dư đầu kỳ của kỳ kế toán đang chọn, giúp nhập dữ liệu được dễ dàng hơn. Nguồn: dat_tblSoDauKy, dat_tblBDMTK Kết nối inner Join qua Mã kỳ Các trường: SohieuTK, SohieuTKTH, tenTK, DVT, từ dat_tblBDMTK; soluongtonDK, sodudk từ dat_tblsodauky. Câu lệnh SQL SELECT dat_tblBDMTK.SoHieuTK, dat_tblBDMTK.SoHieuTKTH, dat_tblBDMTK.TenTK, dat_tblBDMTK.DVT, dat_tblSoDauKy.SoLuongTonDK, dat_tblSoDauKy.SoDuDK FROM dat_tblBDMTK INNER JOIN dat_tblSoDauKy ON dat_tblBDMTK.SoHieuTK = dat_tblSoDauKy.SoHieuTK; 27
  28. 4.2.2 Query Qry_NghiepVu: Nhằm lấy ra các bảng ghi trong dat_tblNghiepVu liên quan đến kỳ kế toán hiện tại. Nguồn: dat_tblNghiepVu Các trường: * (lấy hết) Điều kiện: Maky = Getmaky() Câu lệnh SQL: SELECT tblNghiepVu.* FROM tblNghiepVu WHERE (((tblNghiepVu.MaKy)=GETMAKY())); 4.2.3 Query QrySoKTMay: Ghi nhận các bút toán định khoản trong kỳ cùng với thông tin chứng từ gốc. Nguồn: dat_tblnghiepvu và dat_tblSoKTmay Các trường: - dat_tblnghiepvu:* (lấy hết) - Soct: nz(sohoadon, nz(sophieuthuchi, nz(sophieunhapxuat))) - Ngayct: nz(ngayct_hoadon,nz(ngayct_thuchi, nz(ngayct_nhapxuat))) - Từ dat_tblsoKTmay lấy các trường: diengiai, Tkghino, Tkghico, soluongps, sotienps 28
  29. Câu lệnh SQL: SELECT dat_tblNghiepVu.*, nz([sohoadon],nz([sophieuthuchi],nz([sophieunhapxuat]))) AS Soct, nz([ngayct_hoadon],nz([ngayct_thuchi],nz([ngayct_nhapxuat]))) AS Ngayct, dat_tblSoKTMay.DienGiai, dat_tblSoKTMay.TKGHINO, dat_tblSoKTMay.SoLuongPS, dat_tblSoKTMay.SoLuongPS, dat_tblSoKTMay.SoTienPS FROM dat_tblNghiepVu INNER JOIN dat_tblSoKTMay ON dat_tblNghiepVu.NghiepVu = dat_tblSoKTMay.NghiepVu; 4.2.4 Query QrySoKTMay_TKTH: Lấy ra các bút toán theo tài khoản tổng hợp trên từng chứng từ. Gom nhóm trên tài khoản tổng hợp bên Nợ, bên Có ở mỗi chứng từ, tính tổng trên số tiền phát sinh. Nguồn: QrySoKTMay, Query type: Totals. Các trường: Field Totals NgayGhiSo GROUP BY SoHoaDon NgayCT_HoaDon 29
  30. SoPhieuThuChi NgayCT_ThuChi SoPhieuNhapXuat NgayCT_NhapXuat SoCT NgayCT DienGiaiChung TKGhiNoTH: Left(TKGhiNo,3) TKGhiCoTH: Left(TKGhiCo,3) SoTienPSTH:SoTienPS SUM Câu lệnh SQL: SELECT QrySoKTMay.NgayGhiSo, QrySoKTMay.SoHoaDon, QrySoKTMay.NgayCT_HoaDon, QrySoKTMay.SoPhieuThuChi, QrySoKTMay.NgayCT_ThuChi, QrySoKTMay.SoPhieuNhapXuat, QrySoKTMay.NgayCT_NhapXuat, QrySoKTMay.Soct, QrySoKTMay.Ngayct, QrySoKTMay.DienGiai, Left([tkghino],3) AS TKGHINOTH, Left([tkghico],3) AS TKGHICOTH, QrySoKTMay.SoTienPS AS SoTienPSTH FROM QrySoKTMay; 4.2.5 Query QryBDMTK: Lập ra một bảng tổng hợp thông tin số dư đầu kỳ, số phát sinh Nợ/Có và số dư cuối kỳ của các tài khoản chi tiết cần theo dõi. Để xây dựng được query QryBDMTK ta phải đi từ các query trung gian. 4.2.5.1 Query QrySoPSNo: 30
  31. Dựa vào QrySoKTMay để tính số lượng, giá trị nhập (phát sinh bên nợ) cho các tài khoản có phát sinh bên nợ trong kỳ. Gom nhóm trên tài khoản ghi nợ, tính tổng trên số lượng và số tiền phát sinh. Nguồn: QrySoKTMay., Query type: Totals. Các trường: Field Totals SoHieuTK:TKGhiNo Group By SLPSNo:SoLuongPS Sum SoPSNo:Sotienps Sum Câu lệnh SQL: SELECT QrySoKTMay.TKGHINO AS SoHieuTK, Sum(QrySoKTMay.SoLuongPS) AS SLPSNo, Sum(QrySoKTMay.SoTienPS) AS SoPSNo FROM QrySoKTMay GROUP BY QrySoKTMay.TKGHINO; 4.2.5.2 Query QrySoPSCo: Dựa vào QrySoKTMay để tính tổng số lượng, trị giá phát sinh bên Có cho các tài khoản có phát sinh bên Có trong kỳ. Gom nhóm trên tài khoản ghi Có, tính tổng trên số lương phát sinh, và số tiền phát sinh. Nguồn: QrySoKTMay, Query type: Totals. Field Totals SoHieuTK:TKGhiCo Group By SLPSCo:SoLuongPS Sum SoPSCo:SotienPS Sum 31
  32. Câu lệnh SQL SELECT QrySoKTMay.TKGHICO AS SoHieuTK, Sum(QrySoKTMay.SoLuongPS) AS SLPSCo, Sum(QrySoKTMay.SoTienPS) AS SoPSCo FROM QrySoKTMay GROUP BY QrySoKTMay.TKGHICO; 4.2.5.3 Query QryBDMTK: Query này liệt kê thông tin các tài khoản với SoHieuTK, SoHieuTKTH, LoaiTK, tên, số dư, số phát sinh, trong kỳ. Nguồn: dat_tblBDMTK, Qry_0_SoDauKy, QrySoPSNo, QrySoPSCo. Các trường: SoHieuTK, SoHieuTKTH, LoaiTK, TenTK, DVT (từ dat_tblBDMTK) SoLuongTonDK, SoDuDK (từ Qry_0_SoDauKy) SoLuongPSNo: CDbl(Nz(SLPSNo,0)) SoPSNo: CCur(Nz([SoPSNo],0)) SoLuongPSCo: CDbl(Nz(SLPSCo,0)) SoPSCo: CCur(Nz([SoPSCo],0)) SoLuongTonCK: IIF(dat_tblBDMTK.SoHieuTK like ‘15[2,3,5,6,8]*’, SoLuongTonDK + SoLuongPSNo – SoLuongPSCo, 0) SoDuCK: SoDuDK + IIF(dat_tblBDMTK.LoaiTK=’N’,SoPSNo – SoPSCo, SoPSCo – SoPSNo) 32
  33. Câu lệnh SQL SELECT dat_tblBDMTK.SoHieuTK, dat_tblBDMTK.SoHieuTKTH, dat_tblBDMTK.LoaiTK, dat_tblBDMTK.TenTK, dat_tblBDMTK.DVT, Qry_0_Sodudk.SoLuongTonDK, Qry_0_Sodudk.SoDuDK, CDbl(Nz([SLPSNo],0)) AS SoLuongPSNo, CDbl(Nz([QrySoPSNo].[SoPSNo],0)) AS SoPSNo, CDbl(Nz([SLPSCo],0)) AS SoLuongPSCo, CDbl(Nz([QrySoPSCo].[SoPSCo],0)) AS SoPSCo, IIf([dat_tblBDMTK].[SoHieuTK] Like '15[2,3,5,6,8]*',[SoLuongTonDK]+[SoLuongPSNo]- [SoLuongPSCo],0) AS SoLuongTonCK, [SoDuDK]+IIf([LoaiTK]='N',[SoPSNo]- [SoPSCo],[SoPSCo]-[SoPSNo]) AS SoDuCK FROM ((dat_tblBDMTK LEFT JOIN Qry_0_Sodudk ON dat_tblBDMTK.SoHieuTK = Qry_0_Sodudk.SoHieuTK) LEFT JOIN QrySoPSCo ON dat_tblBDMTK.SoHieuTK = QrySoPSCo.SoHieuTK) LEFT JOIN QrySoPSNo ON dat_tblBDMTK.SoHieuTK = QrySoPSNo.SoHieuTK; 5. Xây dựng các sổ sách kế toán 5.1. Bảng tổng hợp chi tiết 131 5.1.1Query QryTHCT131: Lọc trên QryBDMTK ra các tài khoản chi tiết 131xxx. Rồi từ số dư cơ bản (đầu kỳ, cuối kỳ), xác định xem nó dư bên nợ hay bên có. Nguồn: QryBDMTK Điều kiện lọc: SoHieuTK like ‘131*’ Các trường: 33
  34. SoHieuTK, TenTK SoDuDKNo: IIF(SoDuDK>0,SoDuDK,0) SoDuDKCo: IIF(SoDuDK 0,SoDuCK,0) SoDuCKCo: IIF(SoDuCK 0,sodudk,0) AS sodudkno, IIf([sodudk] 0,soduck,0) AS soduckno, IIf([soduck]<0-[soduck],0) AS soduckco FROM QryBDMTK WHERE (((QryBDMTK.SoHieuTK) Like "131*")); 5.1.2 Report RptTHCT131: Nguồn: QryTHCT131, Report layout: Tabular 34
  35. Kết quả: 35
  36. 5.2. Bảng tổng hợp chi tiết TKxx : 5.2.1Query QryTHCTTKxx: Nguồn: QryBDMTK Các trường: SoHieuTK, TenTK SoDuDKNo: IIF((LoaiTK= ‘N’ and SoDuDK>0) Or (LoaiTK= ‘C’ and SoDuDK 0) Or (LoaiTK= ‘N’ and SoDuDK 0) Or (LoaiTK= ‘C’ and SoDuCK 0) Or (LoaiTK= ‘N’ and SoDuCK 0) Or ([LoaiTK]='C' And [SoDuDK] 0) Or ([LoaiTK]='N' And [SoDuDK] 0) Or ([LoaiTK]='C' And [SoDuCK] 0) Or ([LoaiTK]='N' And [SoDuCK]<0),Abs([SoDuCK]),0) AS SoDuCKCo FROM QryBDMTK 36
  37. where sohieutk like [nhapsohieuTKTH]&"*" 5.2.2 Report RprTHCTTKxx 5.3. Nhật ký chung 5.3.1. Query QryNKChung: Nguồn: QrySoKTMay Các trường: NgayGhiSo SoCT, NgayCT DienGiaiChiTiet TKGhiNo, TKGhiCo SoLuongPS, SoTienPS Điều kiện lọc: Left(TKGhiNo,3) Not In (‘111’,’131’) And Left(TKGhiCo,3) Not In (‘111’,’331’) 37
  38. Câu lệnh SQL SELECT QrySoKTMay.Soct, QrySoKTMay.Ngayct, QrySoKTMay.DienGiai, QrySoKTMay.TKGHINO, QrySoKTMay.TKGHICO, QrySoKTMay.SoLuongPS, QrySoKTMay.SoTienPS FROM QrySoKTMay; 5.3.2 Report RptNKChung 5.4. Sổ chi tiết chi phí 5.4.1 Query QrySoCP621: Nguồn: QrySoKTMay Các trường: NgayGhiSo SoCT, NgayCT 38
  39. DienGiaiChiTiet GhiNo621: SoTienPS GhiCo152: IIF(TKGhiCo Like ‘152*’, SoTienPS, 0) GhiCo111: IIF(TKGhiCo Like ‘111*’, SoTienPS, 0) GhiCo112: IIF(TKGhiCo Like ‘112*’, SoTienPS, 0) GhiCo331: IIF(TKGhiCo Like ‘331*’, SoTienPS, 0) GhiCoTKKhac: IIF(Left(TKGhiCo, 3) Not In (‘152*’, ‘111*’, ‘112*’, ‘331*’), SoTienPS,0) SoTienTKKhac: IIF(GhiCoTKKhac 0,[TKGhiCo],"") AS SoHieuTKKhac FROM QrySoKTMay WHERE (((QrySoKTMay.TKGHINO) Like '621*')); 5.4.2 Report RptSoCP621 39
  40. 5.5. Sổ cái 5.5.1 Query QrySoCaiTK: Nguồn: QrySoKTMay_TKTH Tham số truyền vào: [SoHieuTK] Các trường: NgayGhiSo, SoCT, NgayCT, DienGiaiChung, TKDoiUng: IIF(TKGhiNoTH=[SoHieuTK], TKGhiCoTH, TKGhiNoTH) SoPSNo: IIF(TKGhiNoTH=[SoHieuTK],SoTienPSTH,0) SoPSCo: IIF(TKGhiCoTH=[SoHieuTK],SoTienPSTH,0) Điều kiện lọc: TKGhiNoTH= [SoHieuTKTH] Or TKGhiCoTH= [SoHieuTKTH] Câu Lệnh SQL 40
  41. SELECT QrySoKTMay_TKTH.NgayGhiSo, QrySoKTMay_TKTH.Soct, QrySoKTMay_TKTH.Ngayct, QrySoKTMay_TKTH.DienGiai, IIf([TKGhiNoTH]=[SoHieuTK],[TKGhiCoTH],[TKGhiNoTH]) AS TKDOIUNG, IIf([TKGhiNoTH]=[SoHieuTK],[SoTienPSTH],0) AS SoPSNo, IIf([TKGhiCoTH]=[SoHieuTK],[SoTienPSTH],0) AS SoPSCo FROM QrySoKTMay_TKTH WHERE (((QrySoKTMay_TKTH.TKGHINOTH)=[sohieutkTH])) OR (((QrySoKTMay_TKTH.TKGHICOTH)=[sohieutkTH])); 5.5.2 Report RptSocai Trong đó:  Số dư đầu kỳ =DSum("sodudk","QryBDMTK","sohieuTKTH='" & [sohieutk] & "'") 41
  42.  Loại TK= DLookUp("LoaiTK","dat_tblBDMTKTongHop","SoHieuTK='" & [SoHieuTK] & "'")  Số hiệu = sohieutTKTH  Tên TK: DLookUp("TenTK","dat_tblBDMTKTongHop","SoHieuTK='" & [SoHieuTK] & "'")  Số dư đầu kỳ nợ: =IIf(([SoDuDK]>0 And [LoaiTK]='N') Or ([SoDuDK] 0 And [LoaiTK]='C') Or ([SoDuDK] 0),[SoDuDKNo]-[SoDuDKCo]+[sumSoPSNo]-[SumSoPSNo],0)  Số dư cuối kỳ có = =IIf(([SoDuDKCo]-[SoDuDKNo]+[sumSoPSCo]- [SumSoPSNo]>0),[SoDuDKCo]-[SoDuDKNo]+[sumSoPSCo]-[SumSoPSCo],0) 5.6 Bảng tổng hợp chi tiết Các TK 5.6.1Query QryTHCTCTK: Nguồn: QryBDMTK Các trường: SoHieuTK, TenTK SoDuDKNo: IIF((LoaiTK= ‘N’ and SoDuDK>0) Or (LoaiTK= ‘C’ and SoDuDK 0) Or (LoaiTK= ‘N’ and SoDuDK 0) Or (LoaiTK= ‘C’ and SoDuCK 0) Or (LoaiTK= ‘N’ and SoDuCK<0), Abs(SoDuCK),0) 42
  43. Câu lệnh SQL SELECT QryBDMTK.SoHieuTK, QryBDMTK.TenTK, IIf(([LoaiTK]='N' And [SoDuDK]>0) Or ([LoaiTK]='C' And [SoDuDK] 0) Or ([LoaiTK]='N' And [SoDuDK] 0) Or ([LoaiTK]='C' And [SoDuCK] 0) Or ([LoaiTK]='N' And [SoDuCK]<0),Abs([SoDuCK]),0) AS SoDuCKCo FROM QryBDMTK 5.6.2 Report RptTHCTCTK 43
  44. 5.7 Phiếu thu: 5.7.1 Query QryPhieuThu: Liệt kê thông tin của tất cả các phiếu thu tổng hợp từ các bút toán định khoản cùng với số phiếu thu tương ứng. Nguồn: QrySoKTMay, Query type: total Các trường: Field Total NghiepVu SoPhieuThuChi CTGoc: SoSerie & “-“ & SoHoaDon Group By Nguoi_NhanNop DiaChi_NguoiNhanNop DienGiaiChung SoTien: IIF(TKGhiNo Like ‘111*’, SoTienPS,0) Sum 44
  45. Điều kiện lọc: TKGhiNo Like ‘111*’ Câu lệnh SQL SELECT Qrysoktmay.NghiepVu, Qrysoktmay.SoPhieuThuChi, Qrysoktmay.NgayCT_ThuChi, Count([soserie] & "-" & [sohoadon]) AS chungtugoc, Qrysoktmay.nguoi_nhannop, Qrysoktmay.diachi_nguoinhannop, Qrysoktmay.DienGiaiChung, Sum(IIf([tkghino] Like '111*',[sotienps],0)) AS sotien FROM Qrysoktmay GROUP BY Qrysoktmay.NghiepVu, Qrysoktmay.SoPhieuThuChi, Qrysoktmay.NgayCT_ThuChi, Qrysoktmay.nguoi_nhannop, Qrysoktmay.diachi_nguoinhannop, Qrysoktmay.DienGiaiChung, Qrysoktmay.TKGHINO HAVING (((Qrysoktmay.TKGHINO) Like "111*")); 5.7.2 Report RptPHIEUTHU 45
  46. Kết quả: 46
  47. 5.8 Phiếu nhập xuất kho: 5.8.1 Query QryPhieuNhapKho: Liệt kê thông tin của tất cả các phiếu nhập kho tổng hợp từ các bút toán định khoản cùng với số phiếu nhập kho tương ứng. Nguồn: QrySoKTMay, dat_tblBDMTK Các trường: NghiepVu, SoPhieuNhapXuat, NgayCT_NhapXuat, TheoChungTu: SoSerie & “-“ & SoHoaDon DienGiaiChung, Nguoi_GiaoNhan, GiaoNhanTaiKho, MaHH: SoHieuTK TenHH: TenTK SLNhap: SoluongPS Sum TriGiaNhap: SoTienPS Sum Điều kiện lọc: Left(TKGhiNo,3) In (‘152*’,’153*’) 47
  48. Câu lệnh SQL SELECT QrySoKTMay.NghiepVu, QrySoKTMay.DienGiaiChung, QrySoKTMay.SoPhieuNhapXuat, QrySoKTMay.TenCSKD AS CuaDV, QrySoKTMay.NgayCT_NhapXuat, [SoSerie] & "_" & [SoHoaDon] AS TheoChungTu, QrySoKTMay.Nguoi_GiaoNhan, QrySoKTMay.GiaoNhanTaiKho, dat_tblBDMTK.SoHieuTK AS MaHH, dat_tblBDMTK.TenTK AS TenHH, Sum(QrySoKTMay.SoLuongPS) AS SLNhap, Sum(QrySoKTMay.SoTienPS) AS TriGiaNhap, dat_tblBDMTK.DVT FROM QrySoKTMay INNER JOIN dat_tblBDMTK ON QrySoKTMay.TKGHINO = dat_tblBDMTK.SoHieuTK WHERE (((Left([TKGhiNo],3)) In ('152','153'))) GROUP BY QrySoKTMay.NghiepVu, QrySoKTMay.DienGiaiChung, QrySoKTMay.SoPhieuNhapXuat, QrySoKTMay.TenCSKD, QrySoKTMay.NgayCT_NhapXuat, [SoSerie] & "_" & [SoHoaDon], QrySoKTMay.Nguoi_GiaoNhan, QrySoKTMay.GiaoNhanTaiKho, dat_tblBDMTK.SoHieuTK, dat_tblBDMTK.TenTK, dat_tblBDMTK.DVT; 5.8.2 Report RPTPhieunhapkho 48
  49. Kết quả thực thi: 49
  50. Xây dựng Module thư viện dùng chung. Trường Name: cho biết tên của giá trị chuỗi thường dùng. Value: cho biết hằng giá trị của nó như thế nào. Ta tạo một Module với tên Md_CompanyInfo dùng với hàm dò tìm thông tin trên bảng như sau: Function GetCompanyInfo(name As String) As String GetCompanyInfo = Nz(DLookup("Value", "CompanyInfo", "Name='" & name & "'")) End Function 50
  51. BÀI TẬP ỨNG DỤNG Doanh nghiệp tư nhân MKM trong tháng 6 năm 2010 có các nghiệp vụ kinh tế phát sinh như sau (đvt: 1.000đ): Số dư đầu kỳ: Số hiệu Dự nợ Số hiệu Dư có TK TK 111 100.000.000 411 2.000.000.000 112 500.000.000 214 1.800.700.000 1311 50.300.000 3312 332.300.000 1521 6.000.000 338 25.000.000 1522 5.000.000 421 20.000.000 155 250.000.000 431 234.000.000 211 3.800.700.000 441 300.000.000 Tổng 4.712.000.000 4.712.000.000 cộng Mã Khách Tên khách Số tiền hàng hàng 1311YIC Công ty YIC 50.300.000 3312KIJ Công ty KIJ 332.300.000 MVT Tên VT ĐVT SL ĐG TT 155HH98 TP HH 98 Cái 1.000 250.000 250.000.000 1521M012 NL chính M012 Kg 400 150.000 6.000.000 1522N045 NL phụ N045 Lít 100 50.000 5.000.000 Các nghiệp vụ kinh tế phát sinh trong kỳ: 1. Ngày 1/6 Chi tiền mặt tạm ứng cho nhân viên Quang mua máy vi tính số tiền 15.000 (PC601) 2. Ngày 1/6 Nhập kho 500 kg nguyên liệu CT023 từ công ty HHA trị giá 50.000, thuế GTGT 10%, đơn vị chưa thanh toán cho công ty HHA (HĐGTGT 1234) 3. Ngày 2/6 Thanh toán tiền quảng cáo sản phẩm HH98 cho công ty quảng cáo Mặt trời số tiền 6.000(PC 602) 4. Ngày 4/6 PXK xuất kho 600 cái sản phẩm HH98 bán cho công ty cổ phẩn MMC, giá bán 500/cái, thuế suất GTGT 5%, công ty MMC đã thanh toán bằng chuyển khoản ngân hàng (GBC2345, HĐGTGT 3456, PXK601) 5. Ngày 5/6 xuất kho 100 kg nguyên liệu M012 sản xuất sản phẩm HH95 (PXK602) 6. Ngày 6/6 Thanh toán tiền điện thoại nhân viên quản lý số tiền 5.540 (PC 603, HĐGTGT 235) 7. Ngày 7/6 Xuất 200kg nguyên liệu CT023 dùng cho sản xuất sản phẩm HH95 (PXK612) 8. Ngày 7/6 Nhân viên Quang thanh toán tạm ứng bằng một máy tính HP5600 trị giá 13.500, số tiền còn thừa nhân viên Quang đã hoàn quỹ (PT601, HĐGTGT 237) 9. Ngày 7/6 Mua 50 cái công cụ dụng cụ C034 dùng trực tiếp cho sản xuất sản phẩm HH95 trị giá 5.000, thuế GTGT 500 từ DNTN TMM, đơn vị đã thanh toán bằng chuyển khoản ngân hàng (HĐGTGT 458, GBN 601) 51
  52. 10. Ngày 9/6 Công ty YIC thanh toán khoản nợ tháng trước bằng chuyển khoản ngân hàng số tiền 50.300 (GBC 604) 11. Ngày 15/6 Nộp vào kho bạc số tiền vi phạm luật giao thông số tiền 2.000 (PC604) 12. Ngày 17/6 tập hợp chi phí quản lý phân xưởng phát sinh 17.000 trong đó: Chi tiền mua nhiên liệu L023: 4.000, thuế GTGT 5% (PC603, HĐGTGT 788); 50 lít nguyên liệu phụ N045 (PXK603); Tiền dịch vụ mua ngoài 10.500, thuế 10% (HĐGTGT 367, PC605) 13. Ngày 18/6 mua một số văn phòng phẩm dùng cho quản lý doanh nghiệp trị giá 12.000, thuế GTGT 10% đơn vị đã thanh toán bằng tiền mặt (PC606, HĐGTGT 4858) 14. Ngày 25/6 BTTL06 tính tiền lương nhân viên tháng 6 trong đó: Nhân viên SXSP 50.000; QLPX 20.000; QLDN 30.000; BH 25.000 Các khoản trích theo lương theo quy định 15. Ngày 26/6 đơn vị đã thanh toán lương cho nhân viên bằng chuyển khoản ngân hàng (GBN 602) 16. Ngày 27/6 Bán 200 sản phẩm HH98 cho công ty OT, giá bán 490/cái thuế suất GTGT 5%, công ty OT.Chưa thu tiền của công ty OT (HĐGTGT 3498) 17. Ngày 28/6 Bảng tính và phân bổ khấu hao 06 chi phí khấu hao toàn doanh nghiệp 5.400 trong đó, QLDN 400, BPSX 4.000, BPBH 1.000 18. Ngày 29/6 Tập hợp chi phí sản xuất tính giá thành sản phẩm. Biết phân xưởng sản xuất báo hoàn thành 1.000 cái sản phẩm HH95, sản phẩm dở dang cuối kỳ 1.000 19. Ngày 29/6 Tập hợp chi phí xác định kết quả kinh doanh tháng 6 của doanh nghiệp MKM 20. Tính thuế GTGT phải nộp trong tháng biết thuế GTGT đầu vào được khấu trừ là 90% Yêu cầu: 1. Anh (chị) hãy điền các nghiệp vụ kinh tế phát sinh vào sổ kế toán máy theo các trường sau (nghiepvu, ngayghiso, ngaychungtu, sohoadon, sophieuthuchi, sophieunhapxuat, chungtukhac, ghinotk, ghicotk, soluongphatsinh, sotienphatsinh) 2. Anh (chị) hãy thiết kế những table cần thiết và mối liên kết giữa những table đó để tổ chức dữ liệu kế toán trên phần mềm access. 3. Anh (chị) hãy xây dựng những query, report cần thiết để lên các sổ sách, chứng từ sau: Sổ chi tiết; bảng tổng hợp chi tiết 131,141,331,334 Sổ chi tiết chi phí 622, 627, 154, 641, 642 Sổ chi tiết, bảng tổng hợp chi tiết dùng chung cho các tài khoản. Sổ quỹ tiền mặt, tiền gửi ngân hàng Nhật ký đặc biệt, nhật ký chung Sổ cái dùng chung cho các tài khoản Phiếu thu chi tiền mặt, tiền gửi ngân hàng; phiếu nhập xuất, kho. 52
  53. TÀI LIỆU THAM KHẢO [1] Hướng dẫn thực hành viết phần mềm kế toán trên Access – Viện tài chính kế toán & Tin học – Ths. Đặng Văn Sáng – Kỹ sư Nguyễn Ngọc Hiến – Nhà xuất bản Giao thông vận tải [2] Bài giảng thực hành Hệ thống thông tin kế toán 1,3 – Bộ môn Kiểm toán – Trường Đại học Nha Trang. 53