Help viết code dùm mình cái form nay voi

hoainamvnn2015

New Member
Hội viên mới
mình có file access này, nhờ các cao thủ giúp mình viết code ở form frmbanle dùm cái. khi nhấp vào nút giao dịch và chọn khoảng vài sản phẩm và gõ số lượng vào cột số lượng bán thì ở cột tồn kho tự động trừ đi tương ứng. và khi nhấp vào nút thanh toán thì nó tự động cập nhật dữ liệu vào table dsthuoc_kho và dsthuoc_bán. mình làm hoài mà chưa được. mong tất cả mọi người giúp đỡ mình. cảm ơn nhiều.
 

Đính kèm

  • db16.rar
    905.7 KB · Lượt xem: 359
Mình cài phần mềm quản lý bán hàng cho cửa hàng thuốc chỉ vài trăm k.Nếu bạn có nhu cầu dùng thử bạn để lại địa chỉ email mình gửi cho.
hj, mail của mình là: phamhoainam07@yahoo.com. Thanks Trước nha. nhưng nếu bạn viết được cái code đó thì chỉ cho mình với. vì mình cũng thích học viết phần mềm mà chưa biết nhiều.
 
mình có file access này, nhờ các cao thủ giúp mình viết code ở form frmbanle dùm cái. khi nhấp vào nút giao dịch và chọn khoảng vài sản phẩm và gõ số lượng vào cột số lượng bán thì ở cột tồn kho tự động trừ đi tương ứng. và khi nhấp vào nút thanh toán thì nó tự động cập nhật dữ liệu vào table dsthuoc_kho và dsthuoc_bán. mình làm hoài mà chưa được. mong tất cả mọi người giúp đỡ mình. cảm ơn nhiều.

Hi hoainam,

Tôi đã xem cái file mdb của em rồi và có vài ý kiến để làm tốt hơn nhé.
- Trước khi bước vào viết code vba thì em nên nghiên cứu kỹ các tổ chức CSDL cho chuẩn để nó hỗ trợ rất nhiều về thời gian và logic khi code hoặc query. CSDL không cồng kềnh, trùng lắp dữ liệu làm file nặng thêm khi xử lý.
- Mấy cái table của em rối và chưa chẩn hóa các tên cột (Field) và liên kết giữa các table. Vd: bảng [DanhMucThuoc] thì sản phẩm không quản lý bằng mã hàng. Đây là Field quan trọng nhất xuyên suốt CSDL để truy vấn thông tin sản phẩm thông qua mã này. Bảng [Dsthuoc_kho] thì lại có mã hàng (Chắc đây mới là bảng danh mục thuốc chính). Dữ liệu của bảng Dsthuoc _kho thì nên tách làm 2 ,3 bảng khác nhau để dễ quản lý, truy vấn...
- Em xem file tôi đính kèm. Tôi chỉ chỉnh lại một số Field cơ bản, thêm table bán riêng, nhập riêng và chỉ dùng Query để ra số tồn kho (chưa cần xài code VBA cho thêm khó hiểu)
Nói chung thiết kế các bảng cho chuẩn đã rồi mới tính tiếp chứ không thiết kế form code cho đã xong gặp một số trường hợp phát sinh thì phát hiện thiếu dữ liệu rồi phải thiết kế lại...Die soon!
 

Đính kèm

  • db16.mdb.zip
    1.3 MB · Lượt xem: 425
Hi Anh,
trước tiên em xin cảm ơn anh đã giúp đỡ em. Em đang xem file của anh thiết kế xem như thế nào. nhưng nếu anh có thể viết code theo file của em thì anh viết dùm em với. cảm ơn anh nhiều.
 
:) Table nó lộn xộn và phải tổ chức lại thì mới viết đúng được hoainam. Có một quái chiêu tính tồn kho thực của bác Ông Văn Thông đó, mua về đọc tham khảo code đó đi. Hình như là cuốn "Hệ quản trị nâng cao" thì phải.
 
Anh cho em hỏi cái form "text" của anh làm sao em thấy cột tồn kho dữ liệu nó nhảy không đúng hay sao đó. với mấy cái table anh tạo cho em. giờ em muốn tạo 1 cái form bán lẻ mới để khi chọn mã sản phẩm và số lượng và nhấp vào nút lệnh command buton thì nó mới update dữ liệu vào table bán lẻ và tồn kho được hả anh. thanks!
 
Cái form TEST và mấy cái tables a làm cho em là gợi ý các thức làm. Muốn tính tồn kho thì thông qua các bảng và 4 cái query như vậy. Còn cột Tồn kho trong form TEST không nhảy đúng vì chưa chạy event Requery cái qryTonKho sau khi nhập cột Số Lượng để cập nhật.
- Trong thực tế a chưa thấy ai thiết kế cái table và form mà có cột nhập Số Lượng Nhập sẽ cập nhật vô cột tồn kho của cùng một table như vậy. Thêm cái cột Tồn kho có trong table Nhập và Xuất sẽ dư thừa vì không có tác dụng quản lý hoặc phục vụ cho công việc báo cáo gì cả. Ví dụ: em muốn báo cáo Tồn kho thì em sẽ dựa trên thông tin từ table nào để trích xuất báo cáo (theo ngày, theo mã hàng)?
- Về thiết kế form nhập liệu (nhập hoặc xuất) thường thì ngoài cái subform nhập liệu sẽ có thêm cái subform Tồn kho (không gộp chung một table nhập liệu) bên cạnh chỉ để tham chiếu hoặc cảnh báo khi không đủ tồn kho để xuất.
- Về y/c của e là là bấm command button sẽ update dữ liệu thì em nghiên cứu về thiết kế Unbound Form nhé.
 
anh ơi mấy cái form em gửi cho anh là em lấy từ phần mềm ở trên mạng đó. em cũng coi mấy cái video hướng dẫn trên mạng và viết code lại xong hết mấy cái form kia rồi còn cái formbanle là em làm hoài không được nên mới nhờ diễn đàn giúp. để em gửi anh bản gốc và file em crack được nhưng không có code vba nên em mới viết lại. tai khoan: quanly mk: abc123
 

Đính kèm

  • hn.rar
    3.3 MB · Lượt xem: 308
Nói chúng Bs Quân viết pm phục vụ công việc của mình được như vậy là quá hay. Nhưng về mặt CSDL vẫn là không chuẩn. Nếu em muốn làm theo vậy để học hỏi cũng ok thôi.
Ở file này bs Q cho thông số nhập và tồn kho vô cùng 1 field [soluong] của table Dsthuoc_kho. Ở form banle, Recordsource là query banle vậy ở event AfterUpdate [slban] thêm code:
------------------------------------------
Option Compare Database
Option Explicit
Dim slbancu As Integer

Private Sub slban_AfterUpdate()

If slbancu <> 0 Then
Me.soluong = Me.soluong + slbancu - Me.slban
slbancu = Me.slban
Else
Me.soluong = Me.soluong - Me.slban
slbancu = Me.slban
End If

End Sub
 
Anh ơi, em cũng đã từng viết đoạn code tương tự như vậy vào ô textbox slban như vậy rồi. nhưng làm vậy dữ liệu nó đi thẳng vào table dsthuoc_kho và dsthuoc_ban luôn khi mà mình chưa nhấn nút hoàn thành. làm vậy cứ mỗi lần em sửa số lượng bán o textbox slban thi cot tonkho nó cứ trừ và update vào table luôn. giờ viết thế nào mà nhấn nút hoàn thành nó mới update vào table giống như file bs. quân làm được.
 
Về cái CSDL nhìn sơ qua tôi thấy có một số chỗ lủng như sau:
- Nhập kho: Theo dõi lịch sử nhập kho như thế nào? ngày nào nhập và nhập bao nhiêu? Bên cạnh đó còn có "hạn sử dụng" của mã hàng mới nhập? Hạn sử dụng được cập nhật theo lô hàng nhập mới nhất vậy hàng cũ còn tồn kho với hạn sử dụng cũ thì sao? theo dõi ở đâu?
- Tồn kho: kiểm tra tồn kho ở thời điểm mong muốn như thế nào?
 
anh ơi, em thấy phần mềm này cũng ok cho tiệm thuốc tây rồi vì nó rất đơn giản và dễ sử dụng. yêu cầu chỉ cần 1 ngày thống kê bán được bao nhiêu hàng và được bao nhiêu tiền. và cũng kiểm được lượng hàng trong kho còn bao nhiêu là ok rồi. ở phần nhập kho thì lâu lâu chủ tiệm mới nhập 1 lần và mỗi lần nhập chỉ việc update lại cái số lượng là được. nếu như hàng cũ còn trong kho và lấy hàng mới về thì mình cứ lấy hạn sử dụng cũ cũng được, cái này cũng không quan trọng lắm. em đang suy nghĩ viết hoài ko ra được, nếu anh viết được thì giúp em. thanks
 
Anh ơi, em cũng đã từng viết đoạn code tương tự như vậy vào ô textbox slban như vậy rồi. nhưng làm vậy dữ liệu nó đi thẳng vào table dsthuoc_kho và dsthuoc_ban luôn khi mà mình chưa nhấn nút hoàn thành. làm vậy cứ mỗi lần em sửa số lượng bán o textbox slban thi cot tonkho nó cứ trừ và update vào table luôn. giờ viết thế nào mà nhấn nút hoàn thành nó mới update vào table giống như file bs. quân làm được.

Để khi bấm Save thì mới lưu, em sử dụng unbound form cho cái form nhập liệu. Khi bấm save thì chạy update recordset.
- Để trong Recordsource của cái formbanle cũng như các textbox
- textbox SoLuong có Name là txtSoLuong

Private cmdSave_Click()

Dim db as DAO.Database
Dim rs as DAO.Recordset
Set db=currentDb
Set rs = db.OpenRecordset ("Dsthuoc_kho", dbOpenDynaset)

With rs
.AddNew
!SoLuong=Me.txtSoLuong
!slban=Me.txtslban
!........
.Update
End with
 
cái code của anh em đã làm bên formnhapkho roi, cái này mỗi lần nhấp nút save thì hình như em chỉ update được 1 record hiện hành vào table. còn cái subform list_banle này là datasheet record thì phải, em muốn chọn nhiều record và bấm lưu thì sẽ lưu toàn bộ records vào table. ở đây còn tính đến công thức tính tồn kho nữa. nếu anh viết code được như của bs.quan thì làm dùm em với. anh làm luôn vào file access đó gửi lên đây được ko. thanks
 
Muốn lưu toàn bộ các records mới nhập thì dùng Do Until..Loop. Còn công thức tính tồn kho đối với unbound form thì cũng dùng cách khai báo như code của cmdSave và setvalue cho textbox Tồn Kho.
---------------
Private cmdSave_Click()

Dim db as DAO.Database
Dim rs1 as DAO.Recordset, rs2 as DAO.Recordset
Set db=currentDb
Set rs1 = db.OpenRecordset ("Dsthuoc_kho", dbOpenDynaset)
Set rs2 = db.OpenRecordset ("XuatKhoTam", dbOpenDynaset) '---> Table tạm để lưu dữ liệu nhập vào cho unbound form

If rs2.Recordcount <> 0 then
rs2.MoveFirst
End if

Do Until rs2.EOF
With rs1
.AddNew
!SoLuong=rs2!txtSoLuong
!slban=rs2!txtslban
!........ = rs2!...
.Update
rs2.MoveNext
Loop
End with

rs1,Close
rs2.Close
Set rs1=nothing
Set rs2=nothing

End Sub
-----------------------

Private slban_AfterUpdate()
Dim tonkho as Integer
tonkho=Nz(Dlookup("soluong","Dsthuoc_kho","mathuoc = '" & Me.cboMaThuoc & "'") ,0) '--> cboMaThuoc là text box mã thuốc trong subform

If slbancu <> 0 Then
Me.soluong = tonkho + slbancu - Me.slban
slbancu = Me.slban
Else
Me.soluong = tonkho - Me.slban
slbancu = Me.slban
End if

End Sub
 
không biết anh đã viết code vào file access va chạy thử chưa. chứ em làm theo anh hướng dẫn mà vẫn không được. anh có thể viết code vào file access và gửi lên đây được ko. thanks anh nhiều.
 
À code đó tôi làm hơi nhanh nên có dòng sai. Rs.edit chứ ko addnew, đổi cách tìm mathuoc để update. Tối tôi rảnh sẽ gửi lên.
 
rs.addnew thj em nghĩ sẽ làm update vào table dsthuoc_ban còn rs.edit thì cho dsthuoc_kho. làm sao mà có thể chọn được nhiều sản phẩm và nó update hết tất cả vào 2 table dsthuoc_kho va ds_thuocban khj nhap nut save. nói chung nếu làm được như của bs.quan là ok rồi. em thấy ở file của bs.quân chỉ có viết code ở nút giao dịch ở event onlick thôi là làm được câu tồn kho rồi. còn update vào table thì làm ở nút hoàn thành thôi. anh xem có thể làm được như vậy thì làm vào file luôn rồi gửi lên dùm em. thanks!
 
em up ca 2 file luôn rồi mà. 1 cái là bản gốc, 1 cái em unlock rồi. để em up lại nè. chj can bam phim shift nhấp đúp vào file unlock là được rồi.
 

Đính kèm

  • hn.rar
    3.3 MB · Lượt xem: 325

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top