-
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:
- Lấy ngày và giờ trên máy như thế nào?
- Hỏi cách viết 1 hàn function tính điểm TB
- Cần được giúp đở.
- Chỉ giúp em chỗ sai của đoạn code này.
- V/v tiếp tục khởi động ứng dụng quản lý nhập xuất
- Học Access bằng cách xây dựng một ứng dụng cụ thể - Quản lý Mua và Bán hàng - Phần 1 - Mô tả
- Xóa các record trong table access
- Lập trình bảo mật cơ sở dữ liệu Access
- Làm sao để ghi dữ liệu vào record?
- Lập trình VBA trên Access - hình như ít ngườ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
- hiện tại không ít người đã sử dụng đồ chơi tình dục và hiệu quả mà shop bán đồ chơi người lớn mang lại thật không thể ngờ đến. Với đồ chơi dục tình bạn sẽ không phải lo lắng đến việc phải làm thế...
Công cụ tình yêu Doc Johnson mang đến khoái cảm dâng trào