2009-04-21 61 views
24

Bạn có thể sử dụng các biểu thức case trong Access không? Tôi đang cố gắng để xác định các hình thức ngày max 2 cột nhưng cứ bị lỗi cú pháp trong đoạn mã sau:Biểu thức trường hợp trong Access

CASE 
    WHEN dbo_tbl_property.LASTSERVICEDATE > Contour_dates.[Last CP12 Date] 
    THEN dbo_tbl_property.LASTSERVICEDATE 
    ELSE Contour_dates.[Last CP12 Date] 
END AS MaxDate 

Trả lời

41

Bạn có thể sử dụng chức năng IIF() để thay thế.

IIF(condition, valueiftrue, valueiffalse) 

condition là giá trị bạn muốn kiểm tra.

valueiftrue là giá trị được trả lại nếu điều kiện đánh giá là TRUE.

valueiffalse là giá trị được trả lại nếu điều kiện đánh giá là FALSE.

+0

tôi nghĩ bạn phải có một câu trả lời đúng flase để làm điều đó? –

+3

"dbo_tbl_property.LASTSERVICEDATE> Contour_dates. [Ngày CP12 cuối cùng]" là true/false –

7

Không có tuyên bố trường hợp nào trong Access. Thay vào đó bạn có thể sử dụng câu lệnh switch. Nó sẽ trông giống như hình dưới đây:

switch(dbo_tbl_property.LASTSERVICEDATE > Contour_dates.[Last CP12 Date],dbo_tbl_property.LASTSERVICEDATE,dbo_tbl_property.LASTSERVICEDATE <= Contour_dates.[Last CP12 Date],Contour_dates.[Last CP12 Date])

Để biết thêm cái nhìn đọc tại địa chỉ: http://www.techonthenet.com/access/functions/advanced/switch.php

Hoặc đối với trường hợp thực hiện chức năng ví dụ trong VBA:

http://ewbi.blogs.com/develops/2006/02/adding_case_to_.html

Kính trọng, J.

+3

Chức năng 'chuyển đổi 'là một chức năng tốt hơn để sử dụng nếu có nhiều điều kiện được đánh giá. Sẽ dễ đọc/hiểu/bảo trì hơn so với sử dụng các hàm 'IIF' lồng nhau. Ngoài ra, một cách thay thế để thực hiện một giá trị mặc định thay vì tạo một biểu thức logic về cơ bản đánh giá là "tất cả các biểu thức trước là sai", là chỉ sử dụng 'true' làm biểu thức cuối cùng cần được đánh giá. Ví dụ 'switch (dbo_tbl_property.LASTSERVICEDATE> Contour_dates. [Ngày CP12 cuối cùng], dbo_tbl_property.LASTSERVICEDATE, true, Contour_dates. [Ngày CP12 cuối cùng])' –

-2

FWIW - IIF là một kéo, và giải pháp chuyển đổi dường như không hợp lệ cho SQL (tôi có thể đã làm điều gì sai). Tôi bước vào giá trị mà Fionnuala cung cấp vào một bảng mới có tên AccessObjectXref:

ID ObjectType ObjectDesc 1 -32.768 -32.766 Mẫu 2 Macro 3 -32.764 Báo cáo 4 -32.761 -32.758 Module 5 Users 6 -32.757 DB Document 7 1 Bảng 8 2 DB 9 3 Vùng chứa 10 5 Truy vấn 11 8 Biểu mẫu con

Sau đó sử dụng SQL sau để tạo danh sách tên đối tượng và số lượng đối tượng của chúng. Rõ ràng, bạn có thể bao gồm tất cả các kỷ lục nếu bạn muốn:

SELECT objectdesc, Count(*) AS Expr1 
FROM msysobjects, AccessObjectTypeXref 
where type = objecttype group by objectdesc order by objectdesc 

tôi có danh sách các loại đối tượng từ: Meaning of MsysObjects values

Các vấn đề liên quan