Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cách lồng hàm in trong hàm IIF khi tạo truy vấn
#11
(03-09-18, 09:03 PM)ongke0711 Đã viết: - [MA PHONG] là tên hộp thoại để bạn nhập cái DEPTCODE. KHông thể dùng nó trong hàm IIF.
  IIF([DEPTCODE]=121,...,...)
- Tham số trả về khi diều kiện SAI của hàm IIF của bạn là chuỗi rỗng "", nó không đúng với dạng dữ liệu cột CIFNO (dạng số).
- Tham số trả về khi điều kiện ĐÚNG (trả về "IN(..)) cũng không đúng kiểu xử lý của Access nên nó không hiểu trong query. 
- Logic xử lý hàm IIF của bạn nó không hợp lý.

Nói về xử lý table của bạn.
- Nếu CIF thuộc 150 nhưng chuyển giao cho 121 quản lý thì nó thể hiện ở Field nào? bạn dùng nó trong query luôn

Những CIF thuộc 150 nhưng chuyển giao cho 121 quản lý thì là phải gõ tay vào anh vì phải theo dõi thủ công ở ngoài không có trường thể hiện, có cách nào để ACCESS hiểu hàm IN khi mệnh đề IIF đúng ko anh
Chữ ký của Nguyễn Đăng Toản Nguyễn Đăng Toản,gia nhập Thủ Thuật Access từ 03-09 -18.
Reply
Những người đã cảm ơn
#12
Bạn nói rõ lại bạn muốn lọc nhưng dữ liệu gi?
Vậy 2 cái mã CIF bạn đề cập ở trên vừa có DEPTCODE là 121 vừa có 150? tức là dữ liệu trùng lặp trong table này (2 dòng cùng CIFNO mỗi dòng thuộc 1 phòng ban)?
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
#13
(03-09-18, 11:31 PM)ongke0711 Đã viết: Bạn nói rõ lại bạn muốn lọc nhưng dữ liệu gi?
Vậy 2 cái mã CIF bạn đề cập ở trên vừa có DEPTCODE là 121 vừa có 150? tức là dữ liệu trùng lặp trong table này (2 dòng cùng CIFNO)?

Dạ, tức là mỗi CIF chỉ có 1 deptcode duy nhất và ko trùng lắp, (ở đây CIF 7441468, 7441271 có dept 150) (file table CIF theo dept xuất ra từ hệ thống và ăn ngay từ đầu khi gán deptcode theo CIF và ko đổi được sau khi đã bàn giao khách hàng, ko có trường thể hiện việc bàn giao phải theo dõi thủ công)

hiện nay 2 CIF 7441468, 7441271 có dept 150 nhưng đã bàn giao cho dept 121. Bây giờ muốn truy xuất số lượng KH theo dept 121 (trên file dữ liệu chỉ có 3 KH nhưng thực tế có đến 5 KH do nhận bàn giao 2 KH từ dept 150)

Dùng 2 hàm IIF thì ok ví dụ:

PARAMETERS [MA PHONG] Value;
SELECT [T-Cdmast_date].ACNAME, [T-Cdmast_date].CIFNO, [T-Cdmast_date].DEPTCODE
FROM [T-Cdmast_date]
WHERE ((([T-Cdmast_date].DEPTCODE)=[MA PHONG])) OR ((([T-Cdmast_date].CIFNO)=IIf([MA PHONG]=121,7441468))) OR ((([T-Cdmast_date].CIFNO)=IIf([MA PHONG]=121,7441271)));

thì ACCESS hiểu KH của DEPT 121 có toàn bộ 5 KH, ý e hỏi là có cách nào kết hợp lại để ACCESS hiểu trong 1 hàm IIF duy nhất mà ko phải tách ra 2 hàm không.

Ý thứ 2 e muốn hỏi thêm, cũng cùng trong câu lệnh trên viết thế nào để đến khi gõ DEPT 150 thì ko hiện ra KH nào cả (vì 2  CIF 7441468, 7441271 của dept 150 đã bàn giao cho 121) nên hiện tại DEPT 150 ko có khách hàng nào cả

E gửi lại file access có dữ liệu trường hợp của e ạ https://drive.google.com/file/d/1EySSKcU...pmDwQ/view
Chữ ký của Nguyễn Đăng Toản Nguyễn Đăng Toản,gia nhập Thủ Thuật Access từ 03-09 -18.
Reply
Những người đã cảm ơn
#14
Bạn dùng câu lệnh SQL này thử xem:

PARAMETERS [MA PHONG] Short;
SELECT [T-Cdmast_date].ACNAME, [T-Cdmast_date].CIFNO, [T-Cdmast_date].DEPTCODE
FROM [T-Cdmast_date]
WHERE ((([T-Cdmast_date].DEPTCODE)=[MA PHONG])) OR ((([T-Cdmast_date].CIFNO) In (7441468,7441271)));
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 Nguyễn Đăng Toản
#15
(04-09-18, 12:08 AM)ongke0711 Đã viết: Bạn dùng câu lệnh SQL này thử xem:

PARAMETERS [MA PHONG] Short;
SELECT [T-Cdmast_date].ACNAME, [T-Cdmast_date].CIFNO, [T-Cdmast_date].DEPTCODE
FROM [T-Cdmast_date]
WHERE ((([T-Cdmast_date].DEPTCODE)=[MA PHONG])) OR ((([T-Cdmast_date].CIFNO) In (7441468,7441271)));

Dạ cái này chỉ áp dụng với trường hợp có 2 mã 121, 150 ví dụ 3 mã thậm chí hơn nhiều (vì NH có rất nhiều phòng ban) 121, 150, 151 thì có những trường hợp tương tự dept 150 nhận bàn giao 151. Thực tế 5, 6 phòng ban bàn giao KH qua lại cho nhau nên mới cần dùng đến hàm IIF bao gồm các CIF đã nhận bàn giao. Và hàm này chưa khắc phục dc VD khi gõ 150 vào thì loại ra 2 CIF 7441468, 7441271 vì đã bàn giao cho 121.
Chữ ký của Nguyễn Đăng Toản Nguyễn Đăng Toản,gia nhập Thủ Thuật Access từ 03-09 -18.
Reply
Những người đã cảm ơn
#16
- Vậy thì báo bạn luôn là IIF không giải quyết được. Các trường hợp của bạn đưa ra nó thủ công hoàn toàn và không có một table, field nào lưu trữ thông tin phục vụ cho Query truy vấn. 

- Không ai thiết kế CSDL để mỗi khi có thay đổi gì thì vô query thay đổi thủ công lại các công thức, tham số. Bên cạnh đó cú pháp qui định của hàm IIF như đã nói trên không phù hợp để giải quyết các trường hợp đề ra của bạn.

- Có một giải pháp khác là bạn tạo thêm bảng phụ lưu thông tin các mã CIFNP, DEPTCODE đã bàn giao. Sau đó dùng Union Query để gộp 2 bảng tại -> dùng Select Query thông thường với điều kiện lọc mà [MA PHONG]

Vd: Tạo Table mới tên T-TransDept

     CIFNO     |      DEPTTRANSFERD
  ----------------------------------
    7441468  |          121
    7441271  |          121
    1234567  |          150

- Tạo Union Query: đặt tên là quniCIFALL

SELECT [T-Cdmast_date].ACNAME, [T-Cdmast_date].CIFNO, [T-Cdmast_date].DEPTCODE
FROM [T-Cdmast_date]
UNION ALL
SELECT "", [T-TransDept].CIFNO, [T-TransDept].DEPTTRANSFERD
FROM [T-TransDept];


- Tạo Select query lọc theo [MA PHONG]:

PARAMETERS [MA PHONG] Short;
SELECT [quniCIFALL].ACNAME, [quniCIFALL].CIFNO, [quniCIFALL].DEPTCODE
FROM [quniCIFALL]
WHERE (([quniCIFALL].DEPTCODE)=[MA PHONG]));
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 maidinhdan , Nguyễn Đăng Toản
#17
(04-09-18, 12:54 AM)ongke0711 Đã viết: - Vậy thì báo bạn luôn là IIF không giải quyết được. Các trường hợp của bạn đưa ra nó thủ công hoàn toàn và không có một table, field nào lưu trữ thông tin phục vụ cho Query truy vấn. 

- Không ai thiết kế CSDL để mỗi khi có thay đổi gì thì vô query thay đổi thủ công lại các công thức, tham số. Bên cạnh đó cú pháp qui định của hàm IIF như đã nói trên không phù hợp để giải quyết các trường hợp đề ra của bạn.

- Có một giải pháp khác là bạn tạo thêm bảng phụ lưu thông tin các mã CIFNP, DEPTCODE đã bàn giao. Sau đó dùng Union Query để gộp 2 bảng tại -> dùng Select Query thông thường với điều kiện lọc mà [MA PHONG]

Vd: Tạo Table mới tên T-TransDept

     CIFNO     |      DEPTTRANSFERD
  ----------------------------------
    7441468  |          121
    7441271  |          121
    1234567  |          150

- Tạo Union Query: đặt tên là quniCIFALL

SELECT [T-Cdmast_date].ACNAME, [T-Cdmast_date].CIFNO, [T-Cdmast_date].DEPTCODE
FROM [T-Cdmast_date]
UNION ALL
SELECT "", [T-TransDept].CIFNO, [T-TransDept].DEPTTRANSFERD
FROM [T-TransDept];


- Tạo Select query lọc theo [MA PHONG]:

PARAMETERS [MA PHONG] Short;
SELECT [quniCIFALL].ACNAME, [quniCIFALL].CIFNO, [quniCIFALL].DEPTCODE
FROM [quniCIFALL]
WHERE (([quniCIFALL].DEPTCODE)=[MA PHONG]));

Dạ e chưa thử nữa, nhưng e cảm ơn anh rất nhiều ạ, anh nhiệt tình quá
Chữ ký của Nguyễn Đăng Toản Nguyễn Đăng Toản,gia nhập Thủ Thuật Access từ 03-09 -18.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Thêm số thứ tự trong Query Noname 15 10,505 11-09-18, 11:52 PM
Bài mới nhất: thanhtruong
  CÂU LỆNH QUERY LÂY DÒNG CUỐI TRONG BẢNG CỦA MỖI NGÀY tt1212 0 258 08-07-18, 12:49 AM
Bài mới nhất: tt1212
  Cách lọc chuỗi trong query liaemars 1 452 19-06-18, 11:34 PM
Bài mới nhất: ongke0711
  ACCESS CÓ HÀM TƯƠNG TỰ SUMIFS TRONG EXCEL KHÔNG? hoaducvn90 3 355 18-06-18, 11:00 AM
Bài mới nhất: ongke0711
  [Hỏi] Cách replace chuỗi ký tự hoặc che ký tự tungkt 2 296 30-05-18, 02:57 PM
Bài mới nhất: tungkt

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