Cách tính hàng tồn kho như thế nào?

15.6009

Trả lời :
Cách giải quyết bài toán của bạn dễ dàng và tin cậy nhất là lập trình truy xuất database thông qua các đối tượng của thư viện Microsoft ADO. Qui trình xây dựng bảng TonKho gồm các bước chính như sau:

 1. Dùng đối tượng ADODB.Connection để quản lý file database Access, file này chứa các bảng số lượng cần xử lý.
 2. Dùng đối tượng ADODB.Recordset để chứa các record của từng bảng dữ liệu.
 3. Duyệt từng record trong bảng Nhap, đọc record có maSP tương ứng trong bảng Xuat, nếu không có thì coi như số lượng xuất = 0. Cập nhật field số lượng rồi lưu record này lên bảng TonKho.
 4. Duyệt từng record trong bảng Xuat, đọc record có maSP tương ứng trong bảng Nhap, nếu có thì bỏ qua, nếu không có thì hiệu chỉnh field Soluong (thêm dấu trừ vào) rồi lưu record này lên bảng TonKho.

 Cụ thể, đoạn code VB 6.0 được viết như sau:
 'Khai báo các biến cần dùng
 Dim Connection1 As ADODB.Connection
 Dim Command1 As ADODB.Command
 Dim RecordSet1 As ADODB.Recordset
 Dim RecordSet2 As ADODB.Recordset
 
 'Thủ tục xử lý Click chuột vào button Start
 Private Sub btnStart_Click()
 'Khai báo các biến cần dùng
 Dim strSQL As String
 Dim MyConString As String
 MyConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\YourDB.mdb"
 '1. Tạo connection tới database
 Set Connection1 = New ADODB.Connection
 Connection1.Open MyConString
 '2. Tạo recordset chứa các data của table Nhap
 Set RecordSet1 = New ADODB.Recordset
 RecordSet1.Open "Nhap", Connection1, adOpenStatic, adLockReadOnly, adCmdTable
 'Tạo command làm việc với database
 Set Command1 = New ADODB.Command
 Command1.ActiveConnection = Connection1
 'xóa table Tonkho nếu đã có rồi
 Command1.CommandText = "drop table TonKho"
 On Error Resume Next
 Command1.Execute
 'xây dựng SQL tạo mới Table Tonkho
 strSQL = "CREATE TABLE TonKho (maSP varchar(10), Soluong integer)"
 'Tạo table TonKho
 Command1.CommandText = strSQL
 Command1.Execute
 'Tạo recordset quản lý dữ liệu của table Tonkho
 Set RecordSet2 = New ADODB.Recordset
 RecordSet2.Open "Tonkho", Connection1, adOpenKeyset, adLockOptimistic, adCmdTable
 '3. duyệt copy từng record từ Nhap sang Tonkho
 While Not RecordSet1.EOF
 'tạo record mới trên table Tonkho
 RecordSet2.AddNew
 RecordSet2.Fields("maSP").Value = RecordSet1.Fields("maSP").Value
 RecordSet2.Fields("Soluong").Value = RecordSet1.Fields("Soluong").Value - slXuat(RecordSet1.Fields("maSP").Value)
 RecordSet2.Update
 'di chuyển đến record kế
 RecordSet1.MoveNext
 Wend
 'đóng đối tượng RecordSet1 đã dùng lại
 RecordSet1.Close
 'Tạo recordset chứa các data của table Xuat
 RecordSet1.Open "Xuat", Connection1, adOpenStatic, adLockReadOnly, adCmdTable
 '4. duyệt copy từng record của bảng Xuat
 While Not RecordSet1.EOF
 'kiểm tra record có trên table Nhap khong
 If Not CoNhap(RecordSet1.Fields("maSP").Value) Then
 ' nếu không có thì ghi lên bảng Tonkho
 RecordSet2.AddNew
 RecordSet2.Fields("maSP").Value = RecordSet1.Fields("maSP").Value
 RecordSet2.Fields("Soluong").Value = -RecordSet1.Fields("Soluong").Value
 RecordSet2.Update
 End If
 'di chuyển đến record kế
 RecordSet1.MoveNext
 Wend
 'đóng các đối tượng đã dùng lại
 RecordSet1.Close
 RecordSet2.Close
 Connection1.Close
 End Sub
 
 'hàm tìm số lượng xuất của 1 sản phẩm
 Private Function slXuat(maSP As String) As Integer
 Dim Rs As ADODB.Recordset
 Command1.CommandText = "SELECT * FROM Xuat where maSP = '" & maSP & "'"
 Set Rs = Command1.Execute()
 'kiểm tra xem có không
 If Not Rs.EOF() Then
 'Nếu có thì trả về số lượng
 slXuat = Rs.Fields("Soluong")
 Else
 'Nếu không có thì trả về số 0
 slXuat = 0
 End If
 Rs.Close
 End Function
 
 'hàm kiểm tra sự tồn tại của 1 sản phẩm
 Private Function CoNhap(maSP As String) As Boolean
 Dim Rs As ADODB.Recordset
 Command1.CommandText = "SELECT * FROM Nhap where maSP = '" & maSP & "'"
 Set Rs = Command1.Execute()
 'kiểm tra sản phẩm có không
 If Not Rs.EOF() Then
 'Nếu có thì trả về TRUE
 CoNhap = True
 Else
 'Nếu không có thì trả về FALSE
 CoNhap = False
 End If
 Rs.Close
 End Function

 Lưu ý đoạn code trên có sử dụng các đối tượng trong thư viện "Microsoft ADO" để truy xuất database dễ dàng. Để dùng được các đối tượng ADO trong 1 Project ứng dụng, bạn phải "add" chúng vào Project của mình bằng cách chọn menu Project.References để hiển thị cửa sổ References, duyệt tìm và chọn mục "Microsoft ActiveX Data Objects 2.x Library" rồi nhấn Ok.
0--1

Liên hệ xóa tin: [email protected]