2012-08-27 45 views
5

Tôi khá bối rối với cách apex_application.gfnn hoạt động và nó chỉ hoạt động cho các báo cáo SQL chuẩn trong Oracle ApEx hay chỉ với SQL (các báo cáo Cập nhật, tức là các dạng bảng).Hiểu biết về Oracle Apex_Application.G_Fnn và Cách sử dụng nó

Về cơ bản tôi đang cố gắng để đạt được những điều sau đây sử dụng mẫu SQL này, mà chỉ là một báo cáo SQL Standard nhưng không chắc chắn nếu những gì tôi đang cố gắng để đạt có thể với loại hình này hoặc báo cáo, ví dụ:

select id, 
     name, 
     telephone, 
     apex_item.checkbox2(10,id) as "Tick when Contacted", 
     apex_item.text(20,my_date) as "Date Contacted", 
     apex_item.textarea(30,my_comment,5,80) as "Comment" 
from my_table 

Dựa trên sql ở trên, giả sử truy vấn sql này trả về 10 hàng. Bây giờ sử dụng hộp kiểm làm id lái xe của tôi, tôi đánh dấu vào hộp kiểm của tất cả các bản ghi/hàng lẻ, tức là hàng 1,3,5,7,9 và cho mỗi hàng này, tôi cũng nhập giá trị ngày (f20) cùng với nhận xét (f30)

Lưu ý điều này, sau đó tôi muốn tạo quy trình trang được gọi khi người dùng nhấn nút "Lưu" sẽ lặp qua các hàng đã kiểm tra này và lưu trữ cho mỗi bản ghi, ngày và nhận xét của tôi nhưng chỉ cho các hàng mà tôi đã chọn.

Vì vậy, dựa trên trên, tôi mong chờ để có 5 dòng tin tức trong bảng của tôi với các cột sau:

ID  MY_DATE  MY_COMMENT 
1  26/08/2012 Comment A 
3  27/08/2012 Comment B 
5  28/08/2012 Comment C 
7  29/08/2012 Comment D 
9  30/08/2012 Comment E 

Đáng tiếc là tôi không chắc chắn làm thế nào để đạt được điều này bằng apex_application.G_F10.COUNT

Tôi muốn có thể truy cập nội dung của từng phần tử mảng (f20) và f (f30) cho mỗi hàng mà tôi đã đánh dấu vào hộp kiểm.

Điều này có thể xảy ra hoặc tôi đã hiểu sai về cách apex_application.G_Fnn hoạt động?

Nếu không thể nêu trên, hãy cho tôi biết cách tôi có thể đạt được điều này?

Tôi có cần báo cáo dạng bảng không?

Mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn.

+0

Tonsils, câu hỏi mới của bạn http://stackoverflow.com/q/12163564/814048 khiến tôi nhận ra rằng tôi đã mắc phải một sai lầm rất ngu ngốc trong mã của mình. Tôi đã sửa đổi câu trả lời của mình. Xin lỗi vì điều đó. – Tom

+0

Xin chào Tom - không sao cả. Đánh giá cao rằng bạn đã sửa đổi câu trả lời của mình, cũng rõ ràng hơn nhiều. Tôi sẽ giữ tâm trí này khi tôi cần phải sử dụng một kịch bản checbox một lần nữa. BTW, câu trả lời sửa đổi này có liên quan đến một báo cáo SQL có thể cập nhật SQL theo bảng hay chỉ là một báo cáo chuẩn? – tonyf

+0

Phụ thuộc vào ý bạn với báo cáo chuẩn! Đối với một dạng bảng: chắc chắn có vì đó là loại chúng tôi đang làm việc với ở đây. – Tom

Trả lời

8

Bạn đang ở rất gần.

select apex_item.checkbox2(10, empno) select_me, 
apex_item.text(20, empno) empno, 
apex_item.text(30, ename)||apex_item.hidden(50, empno) ename 
from emp 

Tôi đang ghép nối mục bị ẩn vì tôi không muốn nó trong cột riêng của nó. Messes với cách bố trí.
Ngoài ra, mục ẩn nằm ở đó vì cách hộp kiểm hoạt động. Hộp kiểm chỉ gửi giá trị của chúng cho các mục đã chọn. Điều này có nghĩa là mảng 10 có 3 giá trị. Các mảng khác sẽ vẫn chứa các giá trị cho tất cả các hàng.
Đây là lý do tại sao tôi thêm empno ẩn một lần nữa: vì vậy chúng tôi có thể khớp các giá trị đã chọn với các hàng khác.

On nộp quá trình:

DECLARE 
    v_empno emp.empno%TYPE; 
    v_ename emp.ename%TYPE; 
BEGIN 
    --f10: checkbox 
    --f20: empno 
    --f30: ename 
    --f50: empno again 
    for i in 1..apex_application.g_f10.count 
    loop 
     for j in 1..apex_application.g_f50.count loop 
     if apex_application.g_f10(i) = apex_application.g_f50(j) 
     then   
      -- access values for the selected rows in the other arrays 
      v_empno := apex_application.g_f20(j); 
      v_ename := apex_application.g_f30(j); 

      apex_debug_message.log_message('Employee: '||v_empno||' - '||v_ename); 
     end if; 
     end loop; 
    end loop; 
END; 

trang Run, cho phép gỡ lỗi, chọn hồ sơ 2, 4 và 6, nộp.

record selection and query output

gỡ lỗi đầu ra:

debug output: BLAKE, JONES, FORD

Tất cả bây giờ bạn cần phải làm là đặt xử lý của bạn trong vòng lặp đó.

+0

Cảm ơn Tom một lần nữa nhưng chỉ muốn xác nhận điều gì đó và có thể ném cờ lê vào các tác phẩm, nhưng liên quan đến f20 và f30, giả sử f20 là trường ngày mà người dùng thực sự nhập và không phải từ cột bảng cơ sở dữ liệu, cùng với f30 , là một trường textarea mà người dùng có thể nhập một bình luận trong và một lần nữa không phải từ một cột trong bảng cơ sở dữ liệu. Việc xử lý của bạn vẫn hoạt động cho kịch bản này hay là những thay đổi cần thiết? – tonyf

+0

Tùy thuộc vào ý bạn thực sự: nếu bạn định sử dụng quy trình xử lý nhiều hàng tiêu chuẩn mà bạn muốn sử dụng cho biểu mẫu dạng chuẩn: bạn không thể. Ngoài ra, với các biểu mẫu dạng bảng thủ công, bạn không thể có các xác nhận biểu mẫu dạng bảng (các khai báo biểu mẫu trong điểm xử lý hợp lệ). Bạn cũng không nhận được checksumming và khóa tối ưu, đó là quan trọng trong các hệ thống với người dùng đồng thời. – Tom

+0

Oh và hey, bạn có thể sử dụng apex_item.date_popup2 cho trường ngày! – Tom

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