Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] So sánh giá trị record trên cùng 1 trường trong 1 bảng để có kết quả tính toán đúng
#1
Hi All
Mình có 1 vấn đề rất mong mọi người giúp đỡ. Nếu làm bằng excel thì hoàn toàn có thể làm dễ dàng, nhưng trên access mình chưa tìm được giải pháp. Vấn đề đặt ra như sau: Mình có 1 bảng với 3 trường Field1, field2 và filed3 tương ứng có giá trị sẽ được nhập trên form.
Filed1: 123, 123, 123, 123, 123, 124, 124, 125...
Field2: PK5A, PK5B, PK5A, PK5E, PK5E, PK5A
Và kết quả tính toán tại trường 3 theo nguyên tắc như sau: record đầu tiên luôn là 123 + A = 123A. sau đó nó so sánh giá trị mới với các reocord cũ, nếu trùng nhau nó sẽ so sánh giá trị tại trường Filed 2 để quyết định ký tự tiếp theo là gì. nếu record tại trường 2 trùng với bất kỳ record trước nó sẽ lấy trùng tên trước. còn nếu khác nó sẽ chuyển sang ký tự B, C... kết quả như sau:

Filed3: 123A, 123B, 123A, 123C, 124A,  124B

123A: Vì là record đầu tiên
123B: Do 123 trùng nhau ở field1 + PK5A khác Pk5B nên kết quả là 123B
123A tiếp theo là do PK5A trùng với record đầu của field2 và 123 trùng nhau tại field1
123C: PK5E khác với tất cả record trước.
124A: 124 khác với các record trước nên quay về ký tự A đồng thời bắt đầu vòng so sánh mới với những record 124 ( trường 1 giá trị sẽ tăng dần sẽ ko lặp lại giá trị nhỏ hơn)
124B: PK5A khác so với record trước là PK5E

Rất mong mọi người chỉ mình hướng giải quyết, cám ơn các bạn đã đọc bài.
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#2
Bảng này có bắt buộc sắp xếp theo thứ tự Field 1 rồi sau đó sort theo Field 2 không hay chỉ field 1 thôi?
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
(29-05-18, 04:11 PM)ongke0711 Đã viết: Bảng này có bắt buộc sắp xếp theo thứ tự Field 1 rồi sau đó sort theo Field 2 không hay chỉ field 1 thôi?

Cũng không hẳn theo thứ tự field1, nhưng nó phải so sánh trước xem record có giống hay khác nhau. Nếu giống nhau nó sẽ lấy kết quả so sánh bên field2 để có kết quả cuối cùng. còn nếu khác nhau thì ko cần kết quả bên field2 nó gán mặc định là ký tự A. Tiếp theo dựa vào kết quả so sánh bên filed2 cho ra B, C hay D.
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#4
Nếu vậy tôi gán cái record thứ 4: 123 PK5E là 123B được không? (thay vì bạn đang gán là 123C). Còn cái record thứ 2 123 PK5B là 123C.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(29-05-18, 07:38 PM)ongke0711 Đã viết: Nếu vậy tôi gán cái record thứ 4: 123 PK5E là 123B được không? (thay vì bạn đang gán là 123C). Còn cái record thứ 2 123 PK5B là 123C.

không được bạn ah vì PK5E nó khác so với 2 record trên nên phải là C sau A và B. Yêu cầu bài toàn nó hơi phức tạp. Do đó đến giờ mình chưa tìm ra cách. Trường 1 cứ record thay đổi thì nó quay về ký tự đầu tiên là A. nêu nó ko thay đổi thì theo điều kiện từ trường 2 ta có ký tự B, c hay D thậm chí có thể lặp lại nếu record giống nhau. Bạn cứ chỉ mình cách sao có thể so sánh record tại 1 trường. Biết đâu gợi ý từ bạn và mọi người mình có thể giải bài toán này.
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#6
Vậy tức là có sắp xếp theo thứ tự rồi - theo field 1 rồi đến field 2. Nếu ko theo thứ tự làm sao bạn biết chắc 2 cái record đầu tiên nó đến trước (123-PK5A, 123-PK5B)? Tôi hỏi vì cái sắp xếp hay không sắp xếp nó ảnh hưởng đến vòng lặp trong code, nó sẽ cho kết quả theo hướng khác liền.
Tôi chưa test nhưng cách làm tôi nghĩ nó như thế này: 
- Tạo 1 mảng (A,B,.....Z)
- Set rs1 là danh sách các record của Field1. Move first.
- Chạy vòng lặp theo rs1. Do Until rs1.EOF
- Lấy rs2 là "Select các record có field 1 = rs1!Field1 Order by field 2"
- Chạy vòng lặp theo rs2. Sẽ Loop khi dòng kế tiếp của Field 2 # dòng trước nó.
- Gán Field 3 = rs1!Field1 + biến mảng (i)  trong đó i=0 - 25 <=> A...Z
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tvn_hut


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Sử dụng Class Module và Kết nối dữ liệu SQL SERVER trong Access VBA lehongduc 62 30,873 03-08-18, 12:41 PM
Bài mới nhất: Cuong Servenet
  Gửi tin nhắn SMS bằng Access lmthu 9 1,760 23-07-18, 07:09 PM
Bài mới nhất: tt1212
  [Help] Tham so trong lenh Call Shell vodainhan 9 527 05-07-18, 09:15 PM
Bài mới nhất: MTNQ
  [Help] Kết quả tính toán theo dòng record tương ứng tvn_hut 5 397 02-06-18, 03:24 PM
Bài mới nhất: tvn_hut
  [Hỏi] Ghép chuổi trong điều kiện hàm dcount mrsiro 8 548 23-05-18, 10:51 AM
Bài mới nhất: ongke0711

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line