Tìm kiếm với hai điều kiện

219928 lượt xem

B

baochauphi88

Sơ cấp
1/8/10
3
0
1
31
HN
Chào các bạn!
Mình đang làm một file access để quản lý bán hàng thì bị mắc ở vấn đề sau:
có 2 bảng
+ tb_gia :nhập giá sản phẩm, gồm mã sản phẩm và giá được cập nhật theo thời gian
+ tb_hd: hóa đơn bán hàng, gồm mã sản phẩm, thời gian lập hóa đơn và giá.
Vấn đề là giá của bảng tb_hd phải được tự động tìm kiếm trong tb_gia với điều kiện:
1. theo mã sản phẩm
2. theo thời gian bán hàng.
Các bạn xem theo file ảnh đính kèm để biết rõ hơn ý của mình.
Nếu chỉ có đk 1 thì dùng Dlookup, nhưng có thêm đk 2 mình chưa biết giải quyết thế nào. Mong các bạn chỉ giúp.
Thanks!
 
U

unregister

Thành viên thân thiết
8/4/08
293
89
28
Hà Nội
Nếu bảng số liệu chỉ đơn giản thế kia thì dùng hàm SUMIFS cũng được nhé. Còn nếu 1 ngày 1 sản phẩm có nhiều đơn giá thì phải làm thêm bước trung gian khác.
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,270
210
63
Bình Định
aso2pc.co.cc
Nếu bảng số liệu chỉ đơn giản thế kia thì dùng hàm SUMIFS cũng được nhé. Còn nếu 1 ngày 1 sản phẩm có nhiều đơn giá thì phải làm thêm bước trung gian khác.
Hàm này ở đâu trong access thế?
Chào các bạn!
Mình đang làm một file access để quản lý bán hàng thì bị mắc ở vấn đề sau:
có 2 bảng
+ tb_gia :nhập giá sản phẩm, gồm mã sản phẩm và giá được cập nhật theo thời gian
+ tb_hd: hóa đơn bán hàng, gồm mã sản phẩm, thời gian lập hóa đơn và giá.
Vấn đề là giá của bảng tb_hd phải được tự động tìm kiếm trong tb_gia với điều kiện:
1. theo mã sản phẩm
2. theo thời gian bán hàng.
Các bạn xem theo file ảnh đính kèm để biết rõ hơn ý của mình.
Nếu chỉ có đk 1 thì dùng Dlookup, nhưng có thêm đk 2 mình chưa biết giải quyết thế nào. Mong các bạn chỉ giúp.
Thanks!
Có phải là lấy giá được cập nhật mới nhất không? Cái này mới phù hợp với thực tế.

Ví dụ:
D1 D2 D3 ...Dn là ngày cập nhật giá của sản phẩm A
thì: giá khi lập hóa đơn thỏa điều kiện:
Dn < today()
and lastest
------------
nếu diễn giải bằng logic thì

Lấy một mãng D1 D2 ...Dn với diều kiện nhỏ hơn ngày lập hóa đơn ( trước ngày lập hóa đơn).
Và, lấy giá trị mới nhất.
 
B

baochauphi88

Sơ cấp
1/8/10
3
0
1
31
HN
[QUOTE="nguoiconxunui.........

Lấy một mãng D1 D2 ...Dn với diều kiện nhỏ hơn ngày lập hóa đơn ( trước ngày lập hóa đơn).
Và, lấy giá trị mới nhất.[/QUOTE]
Cám ơn bạn nguoiconxunui quan tâm, theo gợi ý của bạn, tớ làm theo hướng:
Tạo query 1 để tìm mã SP ở record có ngày cập nhật mới nhất đồng thời thỏa mãn <= today.
Tạo query 2 để lấy thêm giá tương ứng.
-----------Tớ hơi gà nên biện pháp kia có thể lòng vòng (file đính kèm).
Không biết tớ làm vậy có đúng ý tưởng của bạn không?
Và trong trường hợp này có cách nào ngắn hơn không? Mong bạn chỉ giúp nhé.
Tớ gửi link file vd tớ làm:
http://www.mediafire.com/file/nya4nwmdit72zrv/VD+-+Copy+-+Copy.accdb
Thanks!
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,270
210
63
Bình Định
aso2pc.co.cc
Nếu dùng query thì có thể viết đơn giản thế này

Select TOP 1 price from tblGia where ( product_ID = "xxx" and time_updated < time_created) ORDER BY time_updated

time_updated : thời gian cập nhật giá
time_create: thời gian tạo hóa đơn
Seclect TOP 1 : lấy giá trị đầu tiên -> vì thế phải ORDER BY theo giảm dần theo thời gian ( giá cập nhật mới nhất ở đầu tiên)
 
B

baochauphi88

Sơ cấp
1/8/10
3
0
1
31
HN
Nếu dùng query thì có thể viết đơn giản thế này
.....................
Seclect TOP 1 : lấy giá trị đầu tiên -> vì thế phải ORDER BY theo giảm dần theo thời gian ( giá cập nhật mới nhất ở đầu tiên)
Thanks bạn đã trả lời, nhưng thú thật mình không hiểu thao tác cụ thể như thế nào, mình đã thử sử dụng query select TOP nhưng mà đều chưa được kết quả như ý, bạn có thể làm giúp mình trên file đính kèm mình gửi được không,
Cám ơn bạn rất nhiều!
 

Thành viên trực tuyến

Không có thành viên trực tuyến.

Xem nhiều

TEXT LINK