2012-07-12 13 views
6

TLDR: Tại sao nhóm theo mệnh đề bị tắt trong tra cứu khi trường sử dụng tra cứu không trống?Tra cứu và nhóm tùy chỉnh theo

Tôi muốn thực hiện tra cứu tùy chỉnh trên một trường trong biểu mẫu. Bảng CTable trông như thế này:

Val Spec 
------------ 
A alpha 
A beta 
A gamma 
B delta 
C epsilon 

Các tìm kiếm chỉ liên quan đến các Val cột được định nghĩa bằng một EDT với một mối quan hệ cơ bản về nó: Val == CTable.Val

các tra cứu rõ ràng mang lại cho tôi một danh sách như thế này:

A 
A 
A 
B 
C 

Hãy cùng một nhóm để loại bỏ tất cả các bản sao Như tôi đã nghĩ! Nội dung nào đó dọc theo dòng:

QueryBuildDataSource.orderMode(OrderMode::GroupBy); 
QueryBuildDataSource.addGroupByField(fieldNum(CTable, Val)); 

Hiện tại có một hành vi lạ và điểm thực tế của câu hỏi của tôi. Trên một cánh đồng trống, nhóm bằng được thực hiện một cách chính xác và tôi có được điều này:

A 
B 
C 

Bây giờ hãy chọn "A" trong việc tra cứu, sau đó thực hiện tra cứu lại vì tôi muốn bấm vào "B" để thay thế . Nhóm của bây giờ đã bị vô hiệu hóa vì lý do không xác định và tôi nhận được kết quả tìm kiếm giống như kết quả đầu tiên tôi đã có trước đây.

Tại sao lại như vậy? Làm thế nào tôi có thể vượt qua điều đó?

Trả lời

5

Cùng câu hỏi và câu trả lời hữu ích: http://dynamicsuser.net/forums/t/63438.aspx

Bạn có thể vô hiệu hóa hành vi này bằng cách thiết lập useLookupValues ​​trong SysTableLookup false. Thật không may tôi không biết chính xác lý do tại sao AX làm điều đó. Tôi nghi ngờ rằng nó thay đổi OrderMode thành OrderBy.

+3

Lưu ý rằng [câu trả lời chỉ có liên kết] (http://meta.stackoverflow.com/tags/link-only-answers/info) không được khuyến khích, các câu trả lời SO phải là điểm cuối của việc tìm kiếm giải pháp (so với nhưng một điểm dừng khác của tài liệu tham khảo, mà có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

2

Tôi đã có cùng một vấn đề ngày hôm qua.

Tôi đoán mã này có trong "init" có thể?

Tôi phải thêm mã "GroupBy" (ở trên) vào phương thức executeQuery, bởi vì dòng sau đã xóa nhóm GroupBys khỏi truy vấn của tôi (tôi đã kiểm tra điều này bằng các điểm ngắt);

qbsSum.sortClear(); 

Nếu bạn sử dụng điểm ngắt, tôi mong đợi tùy chọn GroupBy của bạn sẽ bị xóa trước khi truy vấn thực hiện lại.

+0

Không có số này không nằm trong init. Đó là phương pháp ở cấp độ bảng sẽ thực hiện tra cứu. Phương thức này có dạng stringControl như một tham số, sử dụng một đối tượng SysTableLookup để thực hiện tra cứu dựa trên một đối tượng truy vấn cục bộ. Đối tượng truy vấn cục bộ này có Group By Clause trên nó. Không có phương thức "executeQuery" nhìn thấy được nhưng có một "performLookup" ở cuối phương thức. – Max

+0

Tôi cho rằng bạn đang gặp phải vấn đề tương tự nếu nó hoạt động một lần cho đến khi truy vấn chạy lại - trước khi truy vấn chạy (tức là khi bạn bấm B) thêm nhóm bằng mã vào QueryBuildDataSource một lần nữa. – AnthonyBlake

1

Tôi đã gặp vấn đề tương tự. Điều này đã giúp tôi:
sysTableLookup.parmUseLookupValue(False);