-
11-19-2009, 09:48 AM #1Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Tôi có một vấn để nhờ các PRO giúp đỡ:
Tôi có một table theo dõi mua hàng (THEODOI) của các khách hàng, gồm MSKH, HOTEN, NG_MUA, MAHANG, SOTIEN. Mỗi lần có khách hàng mua hàng là tôi lại cập nhập tiếp vào.
Tôi muốn lọc ra lần mua hàng cuối cùng (ngày mua cuối cùng) của các khách hàng để đánh giá xem bao lâu rồi khách hàng này chưa mua hàng.
Các PRO giúp tôi với nhé.View more random threads:
- Xóa các record trong table access
- Không Cho Hiện Bản Ghi Đầu Tiên Trên Form
- Thay đổi kích cỡ khi ở chế độ kích cỡ màn hình khác nhau?
- Cần mấy pro giúp đở gắp
- Hỏi cách viết 1 hàn function tính điểm TB
- Bẫy lỗi trong Access bằng VBA
- ACCESS: tìm kiếm và xóa file bằng VBA!
- access chạy độc lập
- Tạo chương trình trắc nghiệm bằng ACcess
- Compact and repair Database bị lỗi
-
11-20-2009, 04:32 AM #2Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Bạn làm cái query:
SELECT MSKH, Max(ng_mua) AS [ngay mua cuoi cung]
FROM tblmuahang
GROUP BY MSKH;
-
11-20-2009, 04:49 AM #3Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
hay dung phan mem nay, ko phai suy nghi nhieu, co mọi báo cáo mà bạn cần. "metadata.com.vn/setupmda939.exe" 'minhhoan1010@yahoo.com" co j cu nhan tin nghen, tôi sẽ hỗ trợ bạn suốt quá trình sử dụng, kể cả dùng thử "0933.115.234"
-
11-20-2009, 05:45 AM #4Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi muontennguoi
-----------------------------------------------------------------------------------------
Các bác PRO thử giúp em xem ý tưởng như thế này liệu có được không:
Quét table (tạo vòng lặp) và đặt 2 biến để so sánh: tại bản ghi thứ nhất gán biến cho MSKH và ngaymuahang; sau đó quét: nếu gặp MSKH=bien(1), so sánh nếu ngaymuahang>bien(2), gán lại biến. Khi quét hết ta sẽ lấy được MSKH với ngaymuahang (bien2) lớn nhất. Append vào một table.
Quay lại vòng lặp. Tôi thấy phức tạp quá, chắc mình không làm được. Các PRO xem xét giúp nhé.
Đồng thời, các PRO cho xin đoạn code quét table để lấy record có giá trị primarykey trùng với biến.
-
11-20-2009, 04:10 PM #5Banned
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Ý tưởng của bạn cũng sẽ cho kết quả, nhưng tốn nhiều Time lắm, nhất là khi CSDL của bạn có nhiều bản ghi. Bạn thử truy vãn sau nhé:
SELECT THEODOI.MSKH, Last(THEODOI.HOTEN) AS HOTEN, Last(THEODOI.NG_MUA) AS NG_MUA, Last(THEODOI.MAHANG) AS MAHANG, Last(THEODOI.SOTIEN) AS SOTIEN
FROM THEODOI INNER JOIN [SELECT THEODOI.MSKH, Max(THEODOI.NG_MUA) as NgayCuoi FROM THEODOI GROUP BY THEODOI.MSKH]. AS tblNgayCuoi ON (tblNgayCuoi .NgayCuoi = THEODOI.NG_MUA) AND (THEODOI.MSKH = tblNgayCuoi .MSKH)
GROUP BY THEODOI.MSKH;
-
11-20-2009, 05:56 PM #6Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Đúng là ý tưởng của tôi điên rồ thật, mới chạy có mấy trăm bản ghi mà chậm lắm.
Tôi làm theo cách của bác DONGNAMND. Các bác thử xem giúp code này nhé:
- Tạo tblNGAYCUOI:
Mã:SELECT MaKH, Max(ngaymua) AS ngaycuoi INTO tblNGAYCUOI FROM tblTHEODOI GROUP BY MaKH
Mã:SELECT tblTHEODOI.MSKH, tblTHEODOI.HOTEN, tblTHEODOI.NGAYMUA, tblTHEODOI.SOTIEN FROM tblTHEODOI INNER JOIN tblNGAYCUOI ON (tblTHEODOI.ngaymua = tblNGAYCUOI.ngaycuoi) AND (tblTHEODOI.MSKH = tblNGAYCUOI.MSKH;
-
11-20-2009, 06:07 PM #7Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi haquocquan
Trong query lấy ngày cuối bạn có thể không cần INTO tblNGAYCUOI
Thay vào đó hãy đặt tên cho query đó là tblNGAYCUOI.
Máy chỉ lưu lại 1 dòng lệnh thay vì phải lưu lại cả 1 table nháp.
Cắt lệnh query dài nhằng ra thành những đơn vị nhỏ sẽ có thể dùng lại cho việc khác được thuận tiện.
Lấy ví dụ nếu như 1 khách hàng có thể mua hàng nhiều lần trong cùng 1 ngày, khi đó bạn cần 1 cái query nho nhỏ để sum số tiền mua của 1 người trong 1 ngày.
Cái query đó có thể sẽ dùng cho nhiều báo cáo.
Trong cái báo cáo ban đầu của bạn có thể bạn sẽ cần Inner Join nó vào tiếp.
-
11-20-2009, 08:16 PM #8Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 2
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi muontennguoi
Đoạn code này chính là query tblNGAYCUOI phải không bác. Tức là tạo một query ảo có đúng không ạ? Em tạm gọi query trên là query ảo, có cách nào tạo một query ảo độc lập không bác. Cho em xin đoạn code nhé. Em toàn phải tạo query thật để chạy thôi, trong MDB nhiều query quá.
-
11-20-2009, 09:48 PM #9Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Chưa hiểu ý bạn về query ảo, query độc lập.
Các query là các query, nó là 1 cách nhìn khác về các table thực trên dĩa.
Một số phần mềm khác gọi nó là các View để phân biệt với các lệnh làm thay đổi table (như update, creat, delete ...).
-
11-20-2009, 11:30 PM #10Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
Gửi bởi haquocquan
Một query thôi:
SELECT mskh, hoten, ngaymua, SUM(sotien) AS tongso
FROM tblTHEODOI
WHERE mskh+Format("yyyymmdd",ngaymua)
IN (SELECT mskh+ngay FROM (SELECT mskh, MAX(Format("yyyymmdd", (ngaymua)) FROM tblTHEODOI) GROUP BY mskh)
GROUP BY mskh, hoten, ngaymua
Epson - một trong những tập đoàn công nghệ hàng đầu thế giới, đã khẳng định vị thế tiên phong của mình trong lĩnh vực máy chiếu. Với bề dày lịch sử và sự đổi mới không ngừng, Epson không chỉ mang đến...
Lịch sử hình thành và phát triển của thương hiệu máy chiếu Epson