Liên quan đến CSDL Access nhiều hơn Excel nhưng vẫn phải hỏi (2 người xem)

Liên hệ QC

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

Function lamtron () là làm tròn lên.
Hàm Round() của Access là làm tròn trên 5 dưới 4
Còn cách làm tròn của các anh các chị viết hoá đơn là muôn hình muôn vẻ, có khi tròn lên, có khi tròn xuống, có khi tròn đến hàng chục không chừng. Em xem hoá đơn tiền điện và tiền điện thoại thì biết, làm tròn bằng phần mềm đấy, mà ba hồi tròn lên, ba hồi tròn xuống.
Vậy không nên tự làm khổ mình hơn nữa, lám tròn theo Access là ổn rồi.
 
Cho em hỏi là vì mỗi tháng có thể có những mặt hàng được bán là khác nhau cho nên khi thống kê xuất nhập tồn, bắt buộc mình phải nhập lại thủ công chỉ số tồn của từng mặt hàng trong Excel để tính phải ko anh, chắc ko thể dùng query truy vấn rồi paste cột qua excel được
 
Cho em hỏi là vì mỗi tháng có thể có những mặt hàng được bán là khác nhau cho nên khi thống kê xuất nhập tồn, bắt buộc mình phải nhập lại thủ công chỉ số tồn của từng mặt hàng trong Excel để tính phải ko anh, chắc ko thể dùng query truy vấn rồi paste cột qua excel được

Bạn dùng lệnh TransferSpreadsheet của Access để chuyển dữ liệu của một table hay một query ra file Excel. Câu lệnh sau đây là để chuyển dữ liệu từ table PhatSinh ra file Excel "PhatSinh.xls" trong thư mục ThucHanh của ổ đĩa E
Mã:
Sub ChuyenraEx()
     DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tblPhatSinh", "E:\ThucHanh\PhatSinh.xls"
End Sub
Thân
 
Chào AnhPhuong,
Tôi thường dùng câu lệnh sau hơn:
DoCmd.OutputTo acOutputQuery, QueryName, acFormatXLS, "Filename.xls", True

Trong Access 2007 có thể Export nhiều query ra 1 file Excel nhiều sheet, nhưng tôi chưa thử bằng code. Anh đã thử chưa?
 
Việc xuất dữ liệu từ Access qua Excel theo em có thể dùng nhiều phương thức khác nhau. Giống như A.Phương và A.Mỹ đề cập ở trên.
Ngoài ra, theo em thì mình có thể dùng các công nghệ sau này như DAO, ADO, ADO.NET. Việc báo cáo xuát ra sẽ theo định dạng mình muốn.

Lê Văn Duyệt
 
Em thấy bản thống kê mẫu thống kê theo mặt hàng, sau đó em kiểm tra lại thống kê theo hóa đơn thì thấy tổng tiền bị chênh lệch, do là bên hóa đơn tổng tiền đã được nhân với VAT
Bos nói cứ tính kiểu cũ sau đó lấy tổng tiền nhân VAT kiểm tra lại vì boss bảo bên kia sẽ tính lại VAT và các thứ linh tinh gì khác -+*/-+*/
Nhưng khi xét lại trong đống hóa đơn thì lòi ra 1 cái VAT 5%, những cái còn lại là 100%, như vậy là bắt buộc phải cộng VAT khi thống kê theo hàng chứ đâu có để đến cuối mới nhân VAT ????
 
Sao em nói "Bây giờ thì chắc đành thêm 1 cột chiết khấu vào kế bên mặt hàng "?
Vậy thì thêm 1 field nữa tính VAT. có vậy cũng hỏi!
Còn nữa: thống kê công nợ mới có VAT, thống kê hàng tồn không có VAT.
Công nợ dựa trên hoá đơn, mỗi hoá đơn chỉ có 1 loại thuế suất, --> mỗi hoá đơn chỉ cần tổng VAT thôi. Tổng này nằm trong dữ liệu Master
Tuy vậy thêm 1 field trong Child cũng không ảnh hưởng gì, vào form cho nó tự cộng xuống tổng.
 
Vậy thực chất tổng tiền thanh toán của hóa đơn phải tính theo công thức là tổng của tiền mỗi mặt hàng đã nhân VAT của hàng đó
Vậy mà từ trước giờ em toán tính tiền hàng xong mới nhân VAT, so với hóa đơn thấy đúng nên cứ làm hoài @!##
Như vậy nếu có chiết khấu và VAT thì ta sẽ tính như vậy
Mã:
 Thành tiền =soluong*((dongia-dongia*chietkhau/100)+(dongia-dongia*chietkhau/100)*VAT/100))
Hay
Mã:
 =soluong*dongia*(1-chietkhau/100)*(1+VAT/100)
+-+-+-++-+-+-++-+-+-++-+-+-+
 
Lần chỉnh sửa cuối:
Không không, VAT 1 field riêng. Thành tiền không VAT là giá nhập kho, Thành tiền cộng VAt là công nợ phải trả. Sẽ phải dùng nó để tính toán riêng sau này.
Vậy sẽ có 2 field:
thanhtien=dongia*soluong*(1-forms!hoadon.chietkhau/100)
tienVAT=thanhtien*tsVAT hoặc = thanhtien*forms!hoadon.tsVAT)

Trong Query nhập kho lấy field thanhtien, Trong Query công nợ lấy 2 field cộng lại.

Hay là em đưa công trình của em lên kèm yêu cầu, anh xem cấu trúc dữ liệu cho.
Các yêu cầu cần có để thiết kế CSDL:
- Cần tính nhập kho, đương nhiên
- Có tính giá xuất kho không? theo PP nào?
- Xuất kho bán có thuế VAT không? có chiết khấu không? Giá bán 1 loại hay nhiều loại giá? VAT 1 thuế suất hay nhiều thuế suất?
- Tính tồn đầu theo đầu năm hay theo tháng hay theo kỳ không cố định?
- Có phải theo dõi công nợ người bán không?
- Có phải theo dõi công nợ người mua không? Có phân loại KH hay không?
- Báo cáo NXT có cần giá trị hay chỉ cần số lượng? Có cần sổ chi tiết 1 mặt hàng không? Có giá trị không hay chỉ cần số luợng?
- Liệt kê các loại báo cáo cần phải thực hiện kèm mẫu nếu là mẫu đặc biệt. Mẫu thông thường thì khỏi.
 
Em cũng chưa bao giờ thực hiện cái này cả, em mới tập thôi nên cũng ko biết các thứ như công nợ và VAT này nọ T_T, mấy cái tiêu chuẩn trên để em hỏi lại boss xem
Cụ thể là boss đưa cho em 1 tờ giấy và bảo làm nguyên mẫu như tờ giấy đó cho các kỳ sau luôn
Mẫu tờ giấy bao gồm
Mã Hiệu+Tên Hàng+Đơn vị+S.Lượng(TĐK)+Giá trị (TĐK)+S.Lượng(NTK)+Giá trị (NTK)+S.Lượng(XTK)+Giá trị (XTK)+S.Lượng(TCK)+Giá trị (TCK)+Đơn giá
Mỗi tháng boss đưa 1 đống hóa đơn tháng đó, em nhập và thống kê ra 1 tờ mà tên gọi theo tờ mẫu là SỔ TỔNG HỢP XUẤT TỒN KHO

Hôm qua em hỏi boss có cộng VAT ko, boss cũng lưỡng lự tính toán gì đó rồi mới nói thôi khỏi. Theo em thì chắc boss cũng phụ thuộc vào bên công ty kế toán hay thuế gì đó chứ ko hiểu nhiều về kế toán, vì cả chục năm rồi hình như bây giờ cái đại lý của boss mới đổi thành công ty, boss cũng ko quen với các nguyên lý và hoạt động của máy tính **~****~****~**
Xui thật,

Em đã làm như anh là tạo 1 bảng danh mục hàng hóa với 1 field là Tồn kho, vậy khi nhập hay edit số lượng hàng trong hóa đơn thì đồng thời ta cũng tăng hay giảm đơn vị tồn của mặt hàng đó phải ko ???
 
Chỉnh sửa lần cuối bởi điều hành viên:
khi cần lập báo cáo tháng 3, em sẽ lập 1 query từ DMHH, chi tiết NX, điều kiện lọc là ngayct< 01/03/2008, lấy tổng nhập và tổng xuất , tạo 1 field mới tính ra tồn cuối:
toncuoi02 = tondau + sumnhap - sumxuat. Query này lưu lại giả sử TonCKtruoc.
Sau đó làm 1 query khác từ TonCKtruoc lấy số tồn, chi tiết NX lấy tổng nhập và xuất theo đk lọc ngayct between 01/03/2008 and 31/03/2008. Cũng như trên tạo 1 field mới tính số tồn cuối kỳ báo cáo (TonCKBC).
2 tham số ngày đầu kỳ & cuối kỳ báo cáo có thể chọn trên form. Giả sử trên form1 (chọn kỳ báo cáo) có 2 textbox hoặc calendar tên date1 và date2:
Điều kiện lọc của Query thứ nhất:
Ngayct< Forms!Form1.Date1
Điều kiện lọc của Query thứ hai:
Ngayct Between Forms!Form1.Date1 And Forms!Form1.Date2
Nói ít ráng hiểu nhiều.
 
Em đã làm gần giống như vậy rồi, chỉnh lại tí nữa là xong
Em vẫn chưa hiểu làm sao để cho hai cái
TonCKtruoc và TonCKBC có cùng số mặt hàng cả
Vì khi em chi xuất từ DMHH và chi tiết NX (bằng lệng group by Mã Hàng) thì ở kỳ trước có những mặt hàng mà kỳ sau ko có và ngược lại, như vậy khi em xuất sang excel em không thể cho nó bind từ trên xuống được
Hiện nay em xử lý tình huống này bằng cách
1. Truy vấn tất cả các mặt hàng rá list . Sau đó dùng MS Excel Object xuất sang cột Mã Hàng và Tên Hàng Hóa bên Excel
2. Truy vấn dữ liệu Tồn CK Trước, sau đó cứ mỗi record em cho dò theo mã hàng từng dòng bên Excel, nếu dò đến dòng có mã hàng trùng thì cho dữ liệu vô ô đó ngay
3. Truy vấn dữ liệu Tồn CK Sau, sau đó thì làm y chang bước 2
Kết quả chạy đúng nhưng như vậy có thừa về mặt thuật toán ko ???

ERROR.jpg


* Những mặt hàng có số 0 chính là những mặt hàng sau khi truy vấn từ danh mục hàng hóa và chi tiết nhập xuất nó ko có (vì nó ko nhập trong kỳ đó nên khi truy vấn dùng group by mã hàng sẽ ko thấy mặt hàng này), dẫn đến khi cho xuất dữ liệu mà ko kiểm tra coi đúng dòng mã hàng ko sẽ bịsaii
 
Lần chỉnh sửa cuối:
Khi truy vấn lấy TonCKtruoc hay lấy TonCKBC đều làm theo 1 cách sẽ được DS dài như nhau:
Chọn Join type (loại quan hệ) giữa DMHH và DataNX là Include All Record in DMHH and only those from DataNX where the joined field are equal.
Như vậy sẽ lấy mọi mã hàng dù có tồn đầu hoặc nhập xuất hay không. (trong cả 2 query)
Bảo đảm DM 2 query bằng nhau về số luợng mã hàng.

Chú ý nếu mặt hàng có tồn đầu, không nhập hoặc không xuất sẽ không tính được (ra kq zero) vì sum(slnhap) hoặc sum(slxuat) bị null. Giải quyết bằng cách:
PHP:
 SLToncuoi = Tondau + IIf(sum(slnhap)>0,sum(slnhap),0) - IIf(sum(slxuat)>0,Sum(slxuat),0)
Tương tự cho field TTToncuoi
 
Cho em hỏi 2 vấn đề nữa

Thứ nhất là nếu một ngày đẹp trời trong 1 cái hóa đơn nào đó nó ghi " Trừ tiền nợ tháng trước 200.000", hay "thấy mặt thằng mua thấy ghét cộng vào 200.000" (cái này thì ko có, em chỉ ví dụ thôi ^^), thì các khoảng tăng hay giảm đó mình xử lý ra sao, hay là mình cứ cộng thủ công rồi điền vào ô tổng tiền, và các khoản như thế có tính VAT hay ko

Thứ 2 là khi em tính xuất nhập tồn về số lượng và số tiền thì em nên tính ra sao. Số lượng hàng thì không nói vì chỉ cần trừ là ra. Còn về tiền bán thì nhập giá khác, xuất giá khác, lúc báo vào tồn cuối thì nên cho công thức tính tiền thế nào
Cám ơn
 
1. Về hoá đơn:
- Trừ nợ không bao giờ được phép trừ trên hoá đơn. Chỉ có chiết khấu, giảm giá mới ghi trên hoá đơn. Lúc đó sẽ trừ vào giá từng mặt hàng.
- VAT là số thực tế ghi trên hoá đơn, dù tổng tiền là bao nhiêu, có bị trừ vì các lý do trên hay không.
2. Giá xuất phải tính trong Query: Nếu tính giá bình quân gia quyền định kỳ:
Mã:
giabq=(IIf(ttDK>0,ttDK,0)+IIf(Sum(ttnhap)>0,Sum(ttNhap),0))/
(IIf(slDK>0,slDK,0)+IIf(Sum(SlNhap)>0,Sum(SlNhap),0))
Giá bq giữa kỳ và cuối kỳ có thể khác nhau, và kỳ này kỳ khác cũng có thể khác nhau, nhưng báo cáo chỉ in cuối kỳ nên không lo.

3. Tạo 1 field riêng để lọc:
Mã:
 Loc= SlDK+Sum(SlNhap)+Sum(SlXuat)
hoặc
Mã:
 Loc= SlDK*Sum(SlNhap)*Sum(SlXuat)
- Đk lọc Loc > 0
- Visible = False

Mục đích là loại những mặt hàng không dùng đến, không tồn đầu, và không nhập xuất. ngoài ra tránh được lỗi #DivBy0 do slDK + Sum(SlNhap) = 0
 
Khi có giá bq rồi thì tính thành tiền xuất phải làm tròn:
ttxuat=round(giabq*sum(slxuat),0)
thành tiền cuối kỳ thì cộng trừ, đừng nhân. Mục đích là ra kết quả nguyên. Để tránh trường hợp:

- nhập sl 3 x gbq 3,3333 = 10
xuất trong kỳ: sl 2 x gbq 3,3333 = 6,6666
tồn cuối: sl 1 x gbq 3,3333 = 3,3333

- Tương tự mặt hàng 2: nhập sl 11 x gbq 2,4545 = 27
xuất sl 8 x gbq 2,4545 = 19,63636
tồn cuối sl 3 x gbq 2,4545 = 7,3636

Lên báo cáo thường là số nguyên:

XNTon.jpg


Sẽ thấy ngay dòng cộng : 3 + 7 = 11, không hay tí nào

Lâu ngày chầy tháng, xảy ra tình trạng hết số lượng, còn giá trị 1đ hoặc -1 đ, kiếm hoặc điều chỉnh mệt mỏi.

Báo cáo công nợ cũng bị như vậy nếu VAT không làm tròn hoặc gõ trực tiếp số tiền vào.
 
Cho em hỏi là khi mình chọn source của 1 form là 1 table hay query thì làm thế nào để mình di chuyển đến 1 record xác định (ví dụ như khi nhấn nút "Tìm" thì di chuyển đến record có mã Hóa đơn là 065489/BA-2007)
Em thử dùng DoCmd.GotoRecord nhưng nó chỉ cho mình di chuyển đến số bản ghi (mà số này thay đổi liên tục)
 
Đặt trỏ chuột vào textbox có trường muốn tìm, nhấn ctrl+F (ở đây là số hóa đơn.)
 
Cho em hỏi là nếu nhập xuất chung 1 bảng thì mình tính tồn bằng hàm iifsum
còn nếu mình chia thành 2 bảng thì có thể tính được ko. Em thử chia thành 2 bảng nhập xuất riêng và tính bằng Group By ,Sum và INNER JOIN nhưng nó chỉ đúng khi mình nhập cái gì thì phải bán cái đó nếu ko số tính của nó sai tùm lum 2000 mà có khi ko biết soa tính ra đến mười mấy ngàn đơn vị
 
Web KT

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

Back
Top Bottom