Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để thực hiện xác thực từng hàng trên biểu mẫu Oracle APEX Tabular bằng cách sử dụng Ajax?

Làm thế nào tôi sẽ cố gắng giải quyết nó. Lưu ý rằng điều này không bao gồm tất cả (bất kỳ?) Cuối cùng hoặc xử lý nhiều lỗi. Bạn sẽ phải tự giải thích về nó một chút. Ví dụ:tôi đã sử dụng đầu vào cho một bộ chọn, bạn sẽ cần "chọn". Các mảng có thể không khớp. Bạn có thể cần một bộ chọn hoàn toàn khác, chẳng hạn như bởi td [headers]. Có thể đối tượng trả về của bạn sẽ cần giữ các giá trị khác hoặc nhiều giá trị hơn. Js của bạn có thể cần mở rộng hơn.
Tuy nhiên, nó sẽ cung cấp cho bạn một cơ sở tốt để bắt đầu!

Javascript:

function validaterows(){
  var arrf01 = [], arrf02 = [];

  //fetch all the values from the source columns and put them in
  //a javascript array.
  $("input[name=f03]").each(function(){
    arrf01.push($v(this));
  });

  $("input[name=f04]").each(function(){
    arrf02.push($v(this));
  });

  //provide the constructed arrays to the on-demand process by using
  //the global f## arrays
  apex.server.process ( "MY_PROCESS", {
      f01: arrf01
    , f02: arrf02
  }, {
  , success: function( pData ) { 
      //pData should be an object, because jquery will have parsed the returned json-string
      apex.debug(pData);

      $.each(pData.validationArray, function(index, value){
        if ( value === 'INVALID' ) {
          // do something here when the result is invalid
          // maybe you want to color something red for example
          alert('The data at row '+index+' is not valid!');
        };
      });

      }
  } );
}

Quy trình làm ơn theo yêu cầu:

DECLARE
  l_return VARCHAR2(4000);
BEGIN
  FOR i IN apex_application.g_f01.count
  LOOP
    -- remember: the f## arrays are varchar arrays. Important for comparisons.
    -- Also take into account that the values could NOT be numeric at all.
    -- you'll probably want to run each value through an is-number check or else 
    -- you'll run into ORA errors
    IF to_number(apex_application.g_f01(i)) > to_number(apex_application.g_f02(i))
    THEN
      l_return := l_return || ',"INVALID"';
    ELSE
      l_return := l_return || ',"VALID"';
    END IF;
  END LOOP;

  IF l_return IS NOT NULL
  THEN
    -- create a json string 
    -- holds an object with 1 property (validationArray) with the value being
    -- an array holding a value for each row submitted
    l_return := '{"validationArray":['||LTRIM(l_return, ',')||']}';
  END IF;

  -- write the output to the buffer
  htp.p(l_return);
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy xuất dữ liệu cục lớn bằng sqlplus

  2. Tôi có thể thay đổi thuộc tính AutoCommit của kết nối JDBC nhiều lần không

  3. JDBC Type Scroll Không nhạy cảm và nhạy cảm

  4. Có cần thiết phải vứt bỏ DbCommand sau khi sử dụng không?

  5. Java JDBC không thể kết nối với cơ sở dữ liệu Oracle bằng SSL