Các bạn chú ý rằng trong SunSytem các trường dữ liệu chúng ta phải thường xuyên làm việc là:
_ PERIOD: Kỳ làm việc. Thông thường tùy thuộc vào từng công ty mà kỳ làm việc của năm tài chánh có thể khác nhau. Ví dụ có công ty kỳ I của năm tài chánh 2005-2006 là tháng 07/2005, nhưng cũng có công ty lại khác.
Đây là trường kiểu dữ liệu là chuổi. Ví dụ: 2006005 i.e kỳ 5.
_ MVMNT_DATE: là ngày của movement. Các bạn có thể hiểu là ngày của giao dịch (xin múa rìu qua mắt thợ một tý! Có gì các bạn có thể góp ý)
_ LOCATION: có thể xem như kho. Ví dụ tôi có kho thành phẩm, kho vật tư, kho hàng trả về, kho hàng hư, kho hàng ở phân xưởng I, kho hàng ở phân xưởng II,...
_ ITEM_CODE: mã sản phẩm, vật tư,...
_ UNITS: đơn vị tính.
_ QUANTITY: số lượng.
_ MVMNT_TYPE: loại movement. Cái này thì tùy thuộc vào mỗi công ty định nghĩa. Ví dụ: I-PRO: tức là xuất vào sản xuất, R-FGD: nhận thành phẩm...
_ MVMNT_REF: mã số tham khảo. Ví dụ như LDSH00025 là Loadsheet số 00025,...
Sau đây là đoạn SQL để lấy số lượng vật tư xuất cho bộ phận sản xuất:
Mã:
sSQL = "SELECT ITEM_CODE, UNITS, SUM(QUANTITY) AS [TONG], MVMNT_DATE, SUM(AVE_VALUE) AS [GIATRI], MVMNT_REF, BATCH_NO " & _
"FROM dbo.SMMFMOVSDM " & _
"WHERE PERIOD='" & sPeriod & "' " & " AND (MVMNT_TYPE='R-FGD' OR MVMNT_TYPE='I-FGD') " & _
"AND MVMNT_DATE BETWEEN '" & dteDate1 & "' AND '" & dteDate2 & "' " & _
"AND LOCATION='" & sLocation & "' AND LEFT(LTRIM(MVMNT_REF),2)='LD' " & _
"GROUP BY ITEM_CODE, UNITS, MVMNT_DATE, MVMNT_REF, BATCH_NO " & _
"ORDER BY ITEM_CODE; "
Chú ý:
_ Bảng dữ liệu là: dbo.SMMFMOVSDM
_ sPeriod là biến để lưu kỳ làm việc. Ví dụ bạn dùng validation để chọn kỳ. Sau đó các bạn gán kỳ này cho biến này. Và sau đó đưa nó vào chuỗi SQL.
_ Tương tự các bạn có thể làm với MVMNT_TYPE. Tức là các bạn cũng dùng validation để nhập liệu cho trường này.
_ sLocation là biến để lưu Location mà bạn muốn truy xuất.
_ BATCH_NO: khi các bạn nhập liệu mỗi khi các bạn hoàn tất (đồng ý) nhập các dữ liệu của bạn và cơ sở dữ liệu thì hệ thống sẽ tạo ra số này. Nó sẽ cho bạn biết ai Nhập liệu, Ngày giờ,...
Các bạn có thể bỏ ra chuỗi sau từ chuỗi SQL trên
Mã:
AND LEFT(LTRIM(MVMNT_REF),2)='LD'
Có thể giải thích câu SQL trên nhằm:
Mã:
"SELECT ITEM_CODE, UNITS, SUM(QUANTITY) AS [TONG], MVMNT_DATE, SUM(AVE_VALUE) AS [GIATRI], MVMNT_REF, BATCH_NO " & _
"FROM dbo.SMMFMOVSDM "
Lấy trường ITEM_CODE, UNITS, Tổng (QUANTITY), MVMNT_DATE, Tổng (AVE_VALUE), MVMNT_REF, BATCH_NO Từ bảng dữ liệu dbo.SMMFMOVSDM
Với điều kiện:
Mã:
"WHERE PERIOD='" & sPeriod & "' " & " AND (MVMNT_TYPE='R-FGD' OR MVMNT_TYPE='I-FGD') " & _
"AND MVMNT_DATE BETWEEN '" & dteDate1 & "' AND '" & dteDate2 & "' " & _
"AND LOCATION='" & sLocation & "' AND LEFT(LTRIM(MVMNT_REF),2)='LD' "
Kỳ phải bằng sPeriod, kiểu movement là R-FGD hay I-FGD, ngày của chứng từ là từ ngày dteDate1 đến dteDate2, chúng ta lấy từ sLocation và chứng từ tham khảo có 2 ký tự bắt đầu là LD. Bạn chú ý rằng ở đây có phân biệt chữ thường và chữ hoa.
Lê Văn Duyệt