Servlet Database I/O: How to "lock" a record being updated ?

Say you have a servlet that displays a list of customers in HTML page, and a button on each customer to click to bring up another page (servlet generated) with the customer info to edit. The customer info is in a database file (could be Access or ORACLE). User makes any changes and clicks a button to update the customer record (with a servlet).
How do you prevent two users from editing the same customer record at the same time? I do not want to lock the whole file, just a record.
Any pointers towards info about this subject appreciated.
Walk Good

sridharranganathan, does your technique assume that the read operation is locked, so that two users cannot obtain the same value of LockCounter?
I have some questions relevant to the following code:
public class theServlet extends HttpServlet
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
     throws ServletException, IOException
         Helper theHelper = new Helper();
         theHelper.setUser(req.getCookies);
         resp.setContentType("text/html");
            PrintWriter out = new PrintWriter(resp.getOutputStream());
            Connection con = null;
         try
               SybDriver sybDriver = (SybDriver) Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance();
               sybDriver.setVersion(com.sybase.jdbcx.SybDriver.VERSION_5);
               DriverManager.registerDriver(sybDriver);
               con = DriverManager.getConnection("jdbc:sybase:Tds:dbsrv1:3520/hospcap", "myuserid", "mypassword");                 if (con != null) {
              if(theHelper.getUserRecord(con, this)) {
                       //do some stuff
                    else { //do some other stuff }
                    con.close();
             }catch(Exception e) { //whatever }
             finally { out.flush(); }
         } //end doGet()
} //end class
public class Helper {
    private String user = "";
    private String field1Val= "";
    private String field2Val= "";
    public boolean setUser(Cookie [] cookies) {
     // method gets the user's userid from a cookie and then:
        user = user_id_from_cookie;
   public boolean getUserRecord(Connection con, theServlet serv){
        StringBuffer sb = new StringBuffer();
        Statement stmt = null;
     try {
         //Try to get the user's info:
            stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
         StringBuffer sql = new StringBuffer("SELECT field1, field2 FROM UserRecords WHERE user_id = '" + user + "'");
         ResultSet rs = stmt.executeQuery(sql.toString());
            rs.last();
            int nrows = rs.getRow();
            if(nrows < 1) { //user doesn't have an entry in the table yet.
             //First, get result set of records with blank userids:
             sql.replace(0, sql.length(), "SELECT * FROM UserRecords WHERE user_id = '' OR user_id = NULL ORDER BY field1");
          rs = stmt.executeQuery(sql.toString());
                rs.last();
                nrows = rs.getRow();
             if(nrows > 0) {
                 //there ARE some records with null user_id, so assign this user to the first one:
                    rs.first();
                 field1Val = rs.getString("field1").trim();
                 field2Val = rs.getString("field2").trim();
                    //QUESTION: IS IT POSSIBLE THAT TWO USERS/THREADS HAVE THE SAME VALUE OF field1Val AT THIS POINT?
                 sql.replace(0, sql.length(), "UPDATE UserRecords SET user_id = '" + user + "' ");
                 sql.append(" WHERE field1 = '" + field1Val+ "' AND user_id is NULL");
              con.setAutoCommit(false);
              //Trying to use transaction isolation to prevent two users from updating the same record.
              //Does this only work if the users share the connection, con?
              int level = con.getTransactionIsolation();
              try {
                  if(con.getMetaData().supportsTransactionIsolationLevel(con.TRANSACTION_READ_COMMITTED)) {
                      con.setTransactionIsolation(con.TRANSACTION_READ_COMMITTED);
                        //SYNCHRONIZE ON SERVLET INSTANCE?
                  //synchronized(serv){
                        nrows = stmt.executeUpdate(sql.toString());
              }catch(SQLException se) {
                     con.rollback();
                     con.setAutoCommit(true);
                     con.setTransactionIsolation(level);
                     stmt.close();
                     return false;
                 con.commit();
                 con.setAutoCommit(true);
                 con.setTransactionIsolation(level);
                    if(nrows < 1) { //couldn't update the db.
                     stmt.close();
                     return false;
                 else {
                     stmt.close();
                     return true;
             else { //There aren't any unused records; deal with it.
                 stmt.close();
                 return false;
            else { // the user has an entry in the table
                rs.first(); //should only be one record for this userid.
                field1Val = rs.getString("field1").trim();
                field2Val = rs.getString("field2").trim();
                stmt.close();
             return true;
        }catch(SQLException se) {
         //some problem not caught elsewhere
         return false;
   } // end getUserRecord
} // end class HelperI should say that the UserRecords table now contains about 5000 records (this will grow in increments of 5000), many of which have null user_id. If the value is not null, then it contains a userid. A user can have either zero or one entry in the table.
Here are my questions regarding the above:
1. In the servlet, each thread will have its own instance of Helper and of Connection, correct?
2. I want to ensure that only one thread can update a particular UserRecords table record at a time. In the getUserRecord method, please note the line where field1Val is assigned, just above the capitalized QUESTION comment. Is it possible that two threads could have the same value of field1Val at the same time?
3. When you set the transaction isolation level for connection1, does that prevent other threads that are using other connections to the database from accessing records being updated by the thread using connection1?
4. As you can see, I am considering passing a reference to the servlet instance into the getUserRecords method and synchronizing the update statement on the servlet instance. Will that ensure only one thread at a time can update the record, without using the transaction isolation code?
Thanks in advance for your answer.

Similar Messages

  • How to lock the record in the Form

    .How to lock the record
    That is In my customized form if user query the record in one of our Customized form and the system automatically should prevent by quering the same record by other user for the same form .The message to be displayed as locked by another user .
    For example in standard form the same option is available.
    Form Name:GMEBCHED.FMB
    Module:ORACLE PROCESS MANUFACTURING(OPM)
    Could you pls help us how to implement the same for our Customized form .
    Appricaiate your help .
    Regards,
    Radha krishnan

    Hi,
    I tried to put the code under Post-Query trigger. Since user can input the selection criteria in the form. After the form open, after I input the "Update user" ID (this is in the non-base table block), the oracle message prompt: FRM-40653: Record not reserved for update or delete. Try again later..
    So, is there any method to solve it?
    Thanks a lot.
    Regards.

  • How to lock a record in a database using java

    hi,
    i want to lock a record in a database. how could it be done.
    if any body has idea pls share with me

    Ok, then you can create a simple lock:
    The idea is same, but this allow you to lock multiple id at the same time:
    static Object LOCK_FLAG = new Object();
    static Object[] locker = new Object[1000]; // assuming you have id 0-999 to lock
        this function will wait until current thread succesfully
        locks all the ids to lock.
    public void lock( int[] idsToLock) {
       while (true) {
           synchronized(locker) {
              boolean success = true;
              for(int i=0; i<idsToLock.length; i++) {
                  if (locker[ idsToLock[ i ] ] != null )
                     success=false;
                  if (!success) break;
              if (success) {
                  for(int i=0; i<idsToLock.length; i++)
                     locker[ idsToLock[ i ] ] = LOCK_FLAG;
                  locker.notify();
                  return;
              locker.notify();
           try {  Thread.sleep(100); } catch (Exception ex) { }
        this function will wait until all locks are released
    public void releaseLock( int[] idsToLock) {
       synchronized(locker) {
           for(int i=0; i<idsToLock.length; i++)
                 locker[ idsToLock[ i ] ] = null;
           locker.notify();
    }How to use:
    int[] recordToLock = new int[] { 1, 100, 55, 32, 25 };
    lock(recordToLock); // lock before modify ..
    try {
       // do anything with your records ...
    } catch (Throwable t) {
       // if any exception ...
    } finally {
       releaseLock(recordToLock);  // make sure this will always be executed
    }rgds,
    Alex

  • How to lock a row before update using UPDATE statement ?

    I want to lock a row before updating using the UPDATE statement! is there any "reserved word" that I can append to an update statement so, that the row get locked!, also, will the lock gets released automatically once the update is done or do I have to explicitly release the lock?
    how can I do this ?
    any help is greatly appreciated.
    Thanks,
    Srini.

    For detail information, see http://otn.oracle.com/doc/server.815/a67779/ch4l.htm#10900
    The lock will be released by "commit".
    FOR UPDATE Examples
    The following statement locks rows in the EMP table with clerks located in New York and locks rows in the DEPT table with departments in New York that have clerks:
    SELECT empno, sal, comm
    FROM emp, dept
    WHERE job = 'CLERK'
    AND emp.deptno = dept.deptno
    AND loc = 'NEW YORK'
    FOR UPDATE;
    The following statement locks only those rows in the EMP table with clerks located in New York. No rows are locked in the DEPT table:
    SELECT empno, sal, comm
    FROM emp, dept
    WHERE job = 'CLERK'
    AND emp.deptno = dept.deptno
    AND loc = 'NEW YORK'
    FOR UPDATE OF emp.sal;

  • How To Hide the Record after Update from ADF Front End

    Hi Every One,
    I have done the Scenario of Database Table rows displayed in ADF front end. It is editing and updating also. My Query is after update the record, how to hide that record from adf front end.
    Could any one please help me.
    Thanks,
    Narasimhulu.S

    hi you can create transient field in view object indicate to visibility of row (boolean ) and create view criteria that show only rows that are able to be visible according to transient attribute and at the update process set the attribute to true inside entityImpl class

  • How to insert new record or update existing record using a complex view?

    Currently I created this screen, there is no problems on display data, only on the update funtionality (it means insert / update / delete on the table for which the view is based on).
    I have a table and a complex view in order to display the information from the table in a tabellar form (i.e up to 70 record in same "record" in the form, one for each item)
    The view is like this
    select a.f1, a.f2, get_value(a.pk1,1) a1, get_value(a.pk1,2) a2, get_value(a.pk1,3) a3............
    from my_table a
    where a.proj_id = user
    and I want to permit the update of the field a1, a2, a3 in a multiposition canvas (tabellar).
    I created an INSTEAD-OF trigger.
    But it not work only in the form. I receive the error FRM-40654 when I try to change the existing value in the running form based on that view.
    The view is woking and updatable using sql-plus.
    If I query
    select * from ALL_UPDATABLE_COLUMNS where table_name = 'SPV_BOQ_BOM_POS_ACTIVITIES';
    in which 'SPV_BOQ_BOM_POS_ACTIVITIES' is the name of my view.
    The question is: why if the view is updatable using SQL*Plus, is not updatable using Oracle Form 10gR2 ?
    Someone could help me asap?
    Thanks

    I removed on the datablock three items that are not showed, one of this is the Sysdate of update on the table for which the view is based.
    I removed also the on-lock trigger and the update from the form is NOT working fine.
    But for now I can still mantaing the ON-LOCK trigger.
    Is not a priority to remove this trigger.
    I still have the problem when the field is null, it mean that in the table SP_BOQ_BOM_POS_ACTIVITIES the record not exist.
    I try now to explayn better.
    SPV_BOQ_BOM_POS_ACTIVITIES is the name of the view.
    SP_BOQ_BOM_POS_ACTIVITIES is the name of the table.
    This are the desc
    desc SPV_BOQ_BOM_POS_ACTIVITIES
    Describing SPV_BOQ_BOM_POS_ACTIVITIES....
    NAME Null? Type
    BOQ_HEADER_ID NOT NULL NUMBER(12,0)
    BB_ID NOT NULL NUMBER(12,0)
    BOQ_ID NOT NULL NUMBER(12,0)
    PROJ_ID NOT NULL VARCHAR2(10)
    ACT_GROUP_CODE VARCHAR2(30)
    TOTAL_QTY NUMBER
    ACT_CODE_1 VARCHAR2(4000)
    QTY_1 NUMBER
    ACT_CODE_2 VARCHAR2(4000)
    QTY_2 NUMBER
    ACT_CODE_3 VARCHAR2(4000)
    QTY_3 NUMBER
    ACT_CODE_4 VARCHAR2(4000)
    QTY_4 NUMBER
    ACT_CODE_5 VARCHAR2(4000)
    QTY_5 NUMBER
    ACT_CODE_6 VARCHAR2(4000)
    QTY_6 NUMBER
    USR_ID NOT NULL VARCHAR2(10)
    LMOD NOT NULL DATE
    INT_REV NOT NULL NUMBER(6,0)
    The field QTY_1, QTY_2.... QTY_6 are calculated with a customer stored function from the table SP_BOQ_BOM_POS_ACTIVITIES.
    Also the field ACT_CODE_1, ACT_CODE_2, .... ACT_CODE_6 are calculated with a customer stored function from the table SP_BOQ_BOM_POS_ACTIVITIES.
    desc SP_BOQ_BOM_POS_ACTIVITIES
    Describing SP_BOQ_BOM_POS_ACTIVITIES....
    NAME Null? Type
    BBPA_ID NOT NULL NUMBER(12,0)
    BOQ_HEADER_ID NOT NULL NUMBER(12,0)
    BB_ID NOT NULL NUMBER(12,0)
    BOQ_ID NOT NULL NUMBER(12,0)
    PROJ_ID NOT NULL VARCHAR2(10)
    ACT_GROUP_CODE NOT NULL VARCHAR2(30)
    ACT_CODE NOT NULL VARCHAR2(30)
    QTY NUMBER(12,0)
    FLG_MANUAL_CHANGE VARCHAR2(1)
    USR_ID NOT NULL VARCHAR2(10)
    LMOD NOT NULL DATE
    INT_REV NOT NULL NUMBER(6,0)
    If I use SQL Navigator this insert working fine
    insert into SPV_BOQ_BOM_POS_ACTIVITIES
    (BOQ_HEADER_ID, BB_ID, BOQ_ID, PROJ_ID, ACT_GROUP_CODE, ACT_CODE_1, QTY_1)
    values (5050, 5015, 30486, 'B39368', 'TEST', '0101010101010101', 1709)
    1 row(s) inserted
    Instead using the Screen, at runtime, I receive the message:
    FRM-40400 Transation Complete: 1 records applied and saved
    but nothing is saved in the table SP_BOQ_BOM_POS_ACTIVITIES, and the view SPV_BOQ_BOM_POS_ACTIVITIES contain the calculated QTY_1 for the 'key', with null value.
    Moreover If in the field QTY_1 (NUMBER) I put a character, instead a Number, just to see if the Screen attempts or not an UPDATE or AN INSERT, the message is FRM-40509: Oracle Error. UNABLE TO UPDATE RECORD. Why happen an Update and not an INSERT using the Screen?
    In effect, the trial using SQL navigator of the following statement
    insert into SPV_BOQ_BOM_POS_ACTIVITIES
    (BOQ_HEADER_ID, BB_ID, BOQ_ID, PROJ_ID, ACT_GROUP_CODE, ACT_CODE_1, QTY_1)
    values (5050, 5015, 30486, 'B39368', 'TEST', '0101010101010101', 'r');
    I got Invalid Number and it's ok as answer from the database.
    Edited by: fmariani on 30-apr-2009 1.51

  • How to return to record after updating (ie add a url with variable)

    I want to put a link in to return to the page displaying the record after updating.  I followed the Dreamweaver insrtuctio an added this after the page url in the update behaviours:
    ?recordID=<?php echo $row_recordsetName['fieldName']; ?>
    However the page does not load but gives this error:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\UwAmp\www\testmypms\update_spec_rx.php on line 77
    Here's the page code:
    <?php require_once('Connections/testmypms.php'); ?>
    <?php
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;   
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      return $theValue;
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "updateSpecRx")) {
      $updateSQL = sprintf("UPDATE spec_rx SET spec_rx_date=%s, FK_user_id=%s, spec_rx_rsph=%s, spec_rx_rcyl=%s, spec_rx_raxis=%s, spec_rx_rhprism=%s, spec_rx_rhprismbase=%s, spec_rx_rvprism=%s, spec_rx_rvprismbase=%s, spec_rx_rnadd=%s, spec_rx_rnhprism=%s, spec_rx_rnhprismbase=%s, spec_rx_rnvprism=%s, spec_rx_rnvprismbase=%s, spec_rx_rintadd=%s, spec_rx_rinthprism=%s, spec_rx_rinthprismbase=%s, spec_rx_rintvprism=%s, spec_rx_rintvprismbase=%s, spec_rx_lsph=%s, spec_rx_lcyl=%s, spec_rx_laxis=%s, spec_rx_lhprism=%s, spec_rx_lhprismbase=%s, spec_rx_lvprism=%s, spec_rx_lvprismbase=%s, spec_rx_lintadd=%s, spec_rx_linthprism=%s, spec_rx_linthprismbase=%s, spec_rx_lintvprism=%s, spec_rx_lintvprismbase=%s, spec_rx_lnadd=%s, spec_rx_lnhprism=%s, spec_rx_lnhprismbase=%s, spec_rx_lnvprism=%s, spec_rx_lnvprismbase=%s, ext_rx=%s WHERE spec_rx_id=%s",
                           GetSQLValueString($_POST['rHprism'], "date"),
                           GetSQLValueString($_POST['userID'], "int"),
                           GetSQLValueString($_POST['rsph'], "double"),
                           GetSQLValueString($_POST['rcyl'], "double"),
                           GetSQLValueString($_POST['raxis'], "double"),
                           GetSQLValueString($_POST['rHprism'], "double"),
                           GetSQLValueString($_POST['rHprismbase'], "text"),
                           GetSQLValueString($_POST['rVprism'], "double"),
                           GetSQLValueString($_POST['rVprismbase'], "text"),
                           GetSQLValueString($_POST['rNradd'], "double"),
                           GetSQLValueString($_POST['rNrHprism'], "double"),
                           GetSQLValueString($_POST['rNrHprismbase'], "text"),
                           GetSQLValueString($_POST['rNrVprism'], "double"),
                           GetSQLValueString($_POST['rNrVprismbase'], "text"),
                           GetSQLValueString($_POST['rIntadd'], "double"),
                           GetSQLValueString($_POST['rIntHprism'], "double"),
                           GetSQLValueString($_POST['rIntHprismbase'], "text"),
                           GetSQLValueString($_POST['rIntVprism'], "double"),
                           GetSQLValueString($_POST['rIntVprismbase'], "text"),
                           GetSQLValueString($_POST['lsph'], "double"),
                           GetSQLValueString($_POST['lcyl'], "double"),
                           GetSQLValueString($_POST['laxis'], "double"),
                           GetSQLValueString($_POST['lHprism'], "double"),
                           GetSQLValueString($_POST['lHprismbase'], "text"),
                           GetSQLValueString($_POST['lVprism'], "double"),
                           GetSQLValueString($_POST['lVprismbase'], "text"),
                           GetSQLValueString($_POST['lIntadd'], "double"),
                           GetSQLValueString($_POST['lIntHprism'], "double"),
                           GetSQLValueString($_POST['lIntHprismbase'], "text"),
                           GetSQLValueString($_POST['lIntVprism'], "double"),
                           GetSQLValueString($_POST['lIntVprismbase'], "text"),
                           GetSQLValueString($_POST['lNradd'], "double"),
                           GetSQLValueString($_POST['lNrHprism'], "double"),
                           GetSQLValueString($_POST['lNrHprismbase'], "text"),
                           GetSQLValueString($_POST['lNrVprism'], "double"),
                           GetSQLValueString($_POST['rNrVprismbase'], "text"),
                           GetSQLValueString(isset($_POST['extRx']) ? "true" : "", "defined","1","0"),
                           GetSQLValueString($_POST['SpecRxID'], "int"));
      mysql_select_db($database_testmypms, $testmypms);
      $Result1 = mysql_query($updateSQL, $testmypms) or die(mysql_error());
      $updateGoTo = "spec_rx4.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
        $updateGoTo .= $_SERVER['QUERY_STRING'];
      header(sprintf("Location: %s", $updateGoTo));
    /*   date_default_timezone_set('Europe/London');
    $date = strtotime($_POST['specRxDate']);
         $_POST['specRxDate'] = date("Y-m-d",$date); */
    $currentPage = $_SERVER["PHP_SELF"];
    $maxRows_spec_rx = 1;
    $pageNum_spec_rx = 0;
    if (isset($_GET['pageNum_spec_rx'])) {
      $pageNum_spec_rx = $_GET['pageNum_spec_rx'];
    $startRow_spec_rx = $pageNum_spec_rx * $maxRows_spec_rx;
    $colname_spec_rx = "1";
    if (isset($_GET['spec_RxID'])) {
      $colname_spec_rx = (get_magic_quotes_gpc()) ? $_GET['spec_RxID'] : addslashes($_GET['spec_RxID']);
    mysql_select_db($database_testmypms, $testmypms);
    $query_spec_rx = sprintf("SELECT demographics.px_id, demographics.FK_title_id, demographics.firstname, demographics.surname, title.title, title.title_id, spec_rx.spec_rx_id, spec_rx.FK_px_id, DATE_FORMAT(spec_rx.spec_rx_date, '%%d-%%m-%%Y') as formatted_rx_date, spec_rx.FK_user_id, spec_rx.spec_rx_rsph, spec_rx.spec_rx_rcyl, spec_rx.spec_rx_raxis, spec_rx.spec_rx_rhprism, spec_rx.spec_rx_rhprismbase, spec_rx.spec_rx_rvprism, spec_rx.spec_rx_rvprismbase, spec_rx.spec_rx_rnadd, spec_rx.spec_rx_rnhprism, spec_rx.spec_rx_rnhprismbase, spec_rx.spec_rx_rnvprism, spec_rx.spec_rx_rnvprismbase, spec_rx.spec_rx_rintadd, spec_rx.spec_rx_rinthprism, spec_rx.spec_rx_rinthprismbase, spec_rx.spec_rx_rintvprism, spec_rx.spec_rx_rintvprismbase, spec_rx.spec_rx_lsph, spec_rx.spec_rx_lcyl, spec_rx.spec_rx_laxis, spec_rx.spec_rx_lhprism, spec_rx.spec_rx_lhprismbase, spec_rx.spec_rx_lvprism, spec_rx.spec_rx_lvprismbase, spec_rx.spec_rx_lintadd, spec_rx.spec_rx_linthprism, spec_rx.spec_rx_linthprismbase, spec_rx.spec_rx_lintvprism, spec_rx.spec_rx_lintvprismbase, spec_rx.spec_rx_lnadd, spec_rx.spec_rx_lnhprism, spec_rx.spec_rx_lnhprismbase, spec_rx.spec_rx_lnvprism, spec_rx.spec_rx_lnvprismbase, spec_rx.ext_rx FROM spec_rx, demographics, title WHERE spec_rx.spec_rx_id = %s AND spec_rx.FK_px_id = demographics.px_id AND demographics.FK_title_id = title.title_id", $colname_spec_rx);
    $query_limit_spec_rx = sprintf("%s LIMIT %d, %d", $query_spec_rx, $startRow_spec_rx, $maxRows_spec_rx);
    $spec_rx = mysql_query($query_limit_spec_rx, $testmypms) or die(mysql_error());
    $row_spec_rx = mysql_fetch_assoc($spec_rx);
    if (isset($_GET['totalRows_spec_rx'])) {
      $totalRows_spec_rx = $_GET['totalRows_spec_rx'];
    } else {
      $all_spec_rx = mysql_query($query_spec_rx);
      $totalRows_spec_rx = mysql_num_rows($all_spec_rx);
    $totalPages_spec_rx = ceil($totalRows_spec_rx/$maxRows_spec_rx)-1;
    mysql_select_db($database_testmypms, $testmypms);
    $query_users = "SELECT users.user_id, users.username FROM users";
    $users = mysql_query($query_users, $testmypms) or die(mysql_error());
    $row_users = mysql_fetch_assoc($users);
    $totalRows_users = mysql_num_rows($users);
    $queryString_spec_rx = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_spec_rx") == false &&
            stristr($param, "totalRows_spec_rx") == false) {
          array_push($newParams, $param);
      if (count($newParams) != 0) {
        $queryString_spec_rx = "&" . htmlentities(implode("&", $newParams));
    $queryString_spec_rx = sprintf("&totalRows_spec_rx=%d%s", $totalRows_spec_rx, $queryString_spec_rx);
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Amend Spec Rx</title>
    </head>
    <body>
    <p>Amend Spec Rx</p>
    <p><?php echo $row_spec_rx['px_id']; ?></p>
    <p><?php echo $row_spec_rx['title']; ?><?php echo $row_spec_rx['firstname']; ?><?php echo $row_spec_rx['surname']; ?> </p>
    <form action="<?php echo $editFormAction; ?>" method="POST" name="updateSpecRx" id="updateSpecRx">
      <table border="1" cellpadding="5" cellspacing="1">
        <tr>
          <td> </td>
          <td>
         <td><?php date_default_timezone_set('Europe/London'); ?>
        <input name="specRxDate" type="text" id="specRxDate" value="<?php echo $row_spec_rx['formatted_rx_date']; ?>" size="10" maxlength="10" <?php echo 'value="'.date("d-m-Y").'"'; ?>></td>
          <td><input name="SpecRxID" type="text" id="SpecRxID" value="<?php echo $row_spec_rx['spec_rx_id']; ?>" size="2" maxlength="2"></td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
        </tr>
        <tr>
          <td> </td>
          <td>Sph</td>
          <td>Cyl</td>
          <td>Axis</td>
          <td>HPrism</td>
          <td>HPrismBase</td>
          <td>VPrism</td>
          <td>VPrismBase</td>
          <td>NrAdd</td>
          <td>NrHPrism </td>
          <td>NrHPrismBase</td>
          <td>NrVPrism</td>
          <td>NrVPrismBase</td>
          <td>IntAdd</td>
          <td>IntHPrism</td>
          <td>IntHPrismBase</td>
          <td>IntVPrism</td>
          <td>IntVPrismBase</td>
        </tr>
        <tr>
          <td>R</td>
          <td><input name="rsph" type="text" id="rsph" value="<?php echo $row_spec_rx['spec_rx_rsph']; ?>" size="6" maxlength="6">
          </td>
          <td><input name="rcyl" type="text" id="rcyl" value="<?php echo $row_spec_rx['spec_rx_rcyl']; ?>" size="6" maxlength="6">
          </td>
          <td><input name="raxis" type="text" id="raxis" value="<?php echo $row_spec_rx['spec_rx_raxis']; ?>" size="5" maxlength="5"></td>
          <td><input name="rHprism" type="text" id="rHprism" value="<?php echo $row_spec_rx['spec_rx_rhprism']; ?>" size="5" maxlength="5"></td>
          <td>        <select name="rHprismbase" id="rHprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rhprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="OUT" <?php if (!(strcmp("OUT", $row_spec_rx['spec_rx_rhprismbase']))) {echo "SELECTED";} ?>>OUT</option>
            <option value="IN" <?php if (!(strcmp("IN", $row_spec_rx['spec_rx_rhprismbase']))) {echo "SELECTED";} ?>>IN</option>
            </select></td>
          <td><input name="rVprism" type="text" id="rVprism" value="<?php echo $row_spec_rx['spec_rx_rvprism']; ?>" size="5" maxlength="5">
          </td>
          <td><select name="rVprismbase" id="rVprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rnvprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="UP" <?php if (!(strcmp("UP", $row_spec_rx['spec_rx_rnvprismbase']))) {echo "SELECTED";} ?>>UP</option>
            <option value="DN" <?php if (!(strcmp("DN", $row_spec_rx['spec_rx_rnvprismbase']))) {echo "SELECTED";} ?>>DN</option>
          </select></td>
          <td><input name="rNradd" type="text" id="rNradd" value="<?php echo $row_spec_rx['spec_rx_rnadd']; ?>" size="6" maxlength="6"></td>
          <td><input name="rNrHprism" type="text" id="rNrHprism" value="<?php echo $row_spec_rx['spec_rx_rnhprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="rNrHprismbase" id="rNrHprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rnhprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="OUT" <?php if (!(strcmp("OUT", $row_spec_rx['spec_rx_rnhprismbase']))) {echo "SELECTED";} ?>>OUT</option>
            <option value="IN" <?php if (!(strcmp("IN", $row_spec_rx['spec_rx_rnhprismbase']))) {echo "SELECTED";} ?>>IN</option>
          </select></td>
          <td><input name="rNrVprism" type="text" id="rNrVprism" value="<?php echo $row_spec_rx['spec_rx_rnvprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="rNrVprismbase" id="rNrVprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rnvprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="UP" <?php if (!(strcmp("UP", $row_spec_rx['spec_rx_rnvprismbase']))) {echo "SELECTED";} ?>>UP</option>
            <option value="DN" <?php if (!(strcmp("DN", $row_spec_rx['spec_rx_rnvprismbase']))) {echo "SELECTED";} ?>>DN</option>
          </select></td>
          <td><input name="rIntadd" type="text" id="rIntadd" value="<?php echo $row_spec_rx['spec_rx_rintadd']; ?>" size="6" maxlength="6"></td>
          <td><input name="rIntHprism" type="text" id="rIntHprism" value="<?php echo $row_spec_rx['spec_rx_rinthprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="rIntHprismbase" id="rIntHprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rinthprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="OUT" <?php if (!(strcmp("OUT", $row_spec_rx['spec_rx_rinthprismbase']))) {echo "SELECTED";} ?>>OUT</option>
            <option value="IN" <?php if (!(strcmp("IN", $row_spec_rx['spec_rx_rinthprismbase']))) {echo "SELECTED";} ?>>IN</option>
          </select></td>
          <td><input name="rIntVprism" type="text" id="rIntVprism" value="<?php echo $row_spec_rx['spec_rx_rintvprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="rIntVprismbase" id="rIntVprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rintvprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="UP" <?php if (!(strcmp("UP", $row_spec_rx['spec_rx_rintvprismbase']))) {echo "SELECTED";} ?>>UP</option>
            <option value="DN" <?php if (!(strcmp("DN", $row_spec_rx['spec_rx_rintvprismbase']))) {echo "SELECTED";} ?>>DN</option>
          </select></td>
        </tr>
        <tr>
          <td>L</td>
          <td><input name="lsph" type="text" id="lsph" value="<?php echo $row_spec_rx['spec_rx_lsph']; ?>" size="6" maxlength="6">
          </td>
          <td><input name="lcyl" type="text" id="lcyl" value="<?php echo $row_spec_rx['spec_rx_lcyl']; ?>" size="6" maxlength="6">
          </td>
          <td><input name="laxis" type="text" id="laxis" value="<?php echo $row_spec_rx['spec_rx_laxis']; ?>" size="5" maxlength="5"></td>
          <td><input name="lHprism" type="text" id="lHprism" value="<?php echo $row_spec_rx['spec_rx_lhprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="lHprismbase" id="lHprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_lhprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="OUT" <?php if (!(strcmp("OUT", $row_spec_rx['spec_rx_lhprismbase']))) {echo "SELECTED";} ?>>OUT</option>
            <option value="IN" <?php if (!(strcmp("IN", $row_spec_rx['spec_rx_lhprismbase']))) {echo "SELECTED";} ?>>IN</option>
          </select></td>
          <td><input name="lVprism" type="text" id="lVprism" value="<?php echo $row_spec_rx['spec_rx_lvprism']; ?>" size="5" maxlength="5">
          </td>
          <td><select name="lVprismbase" id="lVprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_rvprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="UP" <?php if (!(strcmp("UP", $row_spec_rx['spec_rx_rvprismbase']))) {echo "SELECTED";} ?>>UP</option>
            <option value="DN" <?php if (!(strcmp("DN", $row_spec_rx['spec_rx_rvprismbase']))) {echo "SELECTED";} ?>>DN</option>
          </select></td>
          <td><input name="lNradd" type="text" id="lNradd" value="<?php echo $row_spec_rx['spec_rx_lnadd']; ?>" size="6" maxlength="6"></td>
          <td><input name="lNrHprism" type="text" id="lNrHprism" value="<?php echo $row_spec_rx['spec_rx_lnhprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="lNrHprismbase" id="lNrHprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_lnhprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="OUT" <?php if (!(strcmp("OUT", $row_spec_rx['spec_rx_lnhprismbase']))) {echo "SELECTED";} ?>>OUT</option>
            <option value="IN" <?php if (!(strcmp("IN", $row_spec_rx['spec_rx_lnhprismbase']))) {echo "SELECTED";} ?>>IN</option>
          </select></td>
          <td><input name="lNrVprism" type="text" id="lNrVprism" value="<?php echo $row_spec_rx['spec_rx_lnvprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="rNrVprismbase" id="rNrVprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_lnvprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="UP" <?php if (!(strcmp("UP", $row_spec_rx['spec_rx_lnvprismbase']))) {echo "SELECTED";} ?>>UP</option>
            <option value="DN" <?php if (!(strcmp("DN", $row_spec_rx['spec_rx_lnvprismbase']))) {echo "SELECTED";} ?>>DN</option>
          </select></td>
          <td><input name="lIntadd" type="text" id="lIntadd" value="<?php echo $row_spec_rx['spec_rx_lintadd']; ?>" size="6" maxlength="6"></td>
          <td><input name="lIntHprism" type="text" id="lIntHprism" value="<?php echo $row_spec_rx['spec_rx_linthprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="lIntHprismbase" id="lIntHprismbase">
            <option value=""> </option>
            <option value="OUT">OUT</option>
            <option value="IN">IN</option>
          </select></td>
          <td><input name="lIntVprism" type="text" id="lIntVprism" value="<?php echo $row_spec_rx['spec_rx_lintvprism']; ?>" size="5" maxlength="5"></td>
          <td><select name="lIntVprismbase" id="lIntVprismbase">
            <option value="" <?php if (!(strcmp("", $row_spec_rx['spec_rx_lintvprismbase']))) {echo "SELECTED";} ?>> </option>
            <option value="UP" <?php if (!(strcmp("UP", $row_spec_rx['spec_rx_lintvprismbase']))) {echo "SELECTED";} ?>>UP</option>
            <option value="DN" <?php if (!(strcmp("DN", $row_spec_rx['spec_rx_lintvprismbase']))) {echo "SELECTED";} ?>>DN</option>
          </select></td>
        </tr>
        <tr>
          <td> </td>
          <td><input name="pxID" type="text" id="pxID" value="<?php echo $row_spec_rx['px_id']; ?>" size="3" maxlength="3"></td>
          <td colspan="4"><input name="Update" type="submit" id="Update" value="Update"></td>
          <td><select name="userID" id="userID">
            <?php
    do { 
    ?>
            <option value="<?php echo $row_users['user_id']?>"><?php echo $row_users['username']?></option>
            <?php
    } while ($row_users = mysql_fetch_assoc($users));
      $rows = mysql_num_rows($users);
      if($rows > 0) {
          mysql_data_seek($users, 0);
          $row_users = mysql_fetch_assoc($users);
    ?>
          </select></td>
          <td>External
          <input <?php if (!(strcmp($row_spec_rx['ext_rx'],1))) {echo "checked";} ?> name="extRx" type="checkbox" id="extRx" value="checkbox"></td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
          <td> </td>
        </tr>
      </table>
        <input type="hidden" name="MM_update" value="updateSpecRx">
    </form>
    <p> </p>
    </body>
    </html>
    <?php
    mysql_free_result($spec_rx);
    mysql_free_result($users);
    ?>
    Thanks for any help

    This post solves it:
    How do I pass URL parameter after Update record?

  • How to lock apps from being copied/stolen

    I haven't put much thought into this before but had a few other Techs. ask me about this.
    Is there away to lock down applications from being copied.
    For example, how to stop a user from simply dragging MS Office to a thumb drive then take home with them.
    I know some apps put the SN# and such info in the library's but this is not hard to get around. A lot of apps are just drag drop apps.
    Is there not a way?
    Thanks,
    Carter

    Hi, Carter.
    AFAIK, there's no way to prevent this. Even if you installed the applications on a Mac OS X 10.4 Server volume and used ACLs (Access Control Lists), there's no ACL permission that allows Read while prohibiting "copy." What can be read can be copied, so merely using Read permissions generally won't prevent copying.
    You can read about ACLs in the PDF document Mac OS X Server 10.4 File Services (Manual).
    This is why so many third-party applications are employing "activation" and "phone home" technologies to assure the license is both valid and running on the computer on which it was originally installed. As one can see from reviewing the information on software piracy published by the Business Software Alliance, these methods are still being circumvented, but they are getting better.
    If piracy is an issue in your firm, it should vigorously enforce an anti-piracy "condition of employment," i.e. if someone is found to be stealing apps, they should be fired both immediately and publicly, the latter to set an example that the firm has zero tolerance for piracy.
    Good luck!
    Dr. Smoke
    Author: Troubleshooting Mac® OS X

  • How to lock CAT2 records on timesheet

    HI,
    I have a requirement where in employee should not be able to change existing timesheet entries prior to a certain date. For example all existing entries prior to 03/01/2011 should be greyed out.
    I have been told that there is a standard functionality availble to make this change; this is not related to the no changes after approval option provided by standard SAP. can anyone please let me know the exact IMG node for configuring this requirement.
    Thanks in advance.
    Regards

    Hi,
    In the Data Entry Profile there is a setting where in we can specify the roll back visibility. For example, we can say that a person will be able to scroll back for onlyup to last two weeks. Check out wheher this will be helpful rather than graying out.
    Regards
    Sreekanth

  • Locking the record against update

    Hi all,
    I have a multirow database datablock. Some records I would like to lock against the update, and these records SHOULD be displayed as disabled - does not be able to be selected. So, the changing of default_where does not pass, becose the records should be displayed. Has anyone an Idea how to provide this?
    Regards

    Hi,
    thanks for your updates.
    The solution, that I need is:
    Making the current record in the detail block non-updateable.
    Regards

  • How to restrict customer records being displayed using 'sales_channel_type' criteria in customer search form at 11g?

    OS: Linux
    DB: 11.2.0.3
    ERP: 11g
    Hi There,
         I would like to create a new custom responsibility, which the responsibility is having access to Standard Customer Form (ARXCUDCI.fmb) , but I would like to make a restriction in the customer search form is that, everytime the responsibility user search by customer number, customer name, party name or what ever search field, I would like to limit to restrict further of searching criteria where SALES_CHANNEL_TYPE = 'RTL' is allowed to populate the customer records, there rest of customer records are not allowed to search out.
        This SALES_CHANNEL_TYPE column is from HZ_CUST_ACCOUNTS table.
        I have tried the Form Personalization already, but the customer searching form has too many fields for user to search, therefore form personalization will be putting all over the places in the form. Therefore I saw others recommended of doing "Custom DLL"...may I know for my scenario, how to I go about Customer DLL? or any other more effective solution?
       Appreciate if anyone can share your experience related to matter above.
    Regards,
    Lygine

    Hi Lygine,
    The personalization i sent you works in this way:
    -It does not matter which field you choose to enter the query.
    -If a record is found, when the form opens and the cursor hits the Customer Name field, the personalization looks for the content of the Sales Channel field.
    -If the content of this field is different from the 'RTL' string, the form Customers form (ARXCUDCI) is cleared.
    Independently from the field you fill to perform the query, is a record is found, the Customer Name field is the first the cursor hits when the form is opened.
    Octavio

  • How to insert past record after updating the master table in history table through store PROC

    Master Table
    Party Status
    A Active
    B Inactive
    C Active
    D Inactive
    Duplicate Table
    Party Status
    A Active
    B Active
    C Active
    D Inactive
    Updated Master Table
    Party Status
    A Active
    B Active
    C Active
    D Inactive
    Party History Table
    B Inactive
    I have two table one master and another duplicate I need to update master table based on duplicate table insert the record which updated into Party history table as shown above. need help to write store proc.

    Check MERGE syntax in BOL (example D). There should be a sample with output, e.g.
    insert into PartyHistory (Party, [Status])
    select Party, [Status] FROM
    (MERGE Master M using Duplicate D on M.[Party]=D.[Party]AND M.[Status]<>D.[Status]
    WHEN MATCHED THEN UPDATE
    SET [Status] = D.[Status]
    OUTPUT Deleted.[Party], Deleted.[Status], $Action) AS Changes (Party, [Status], Action) WHERE Action = 'UPDATE'
    For every expert, there is an equal and opposite expert. - Becker's Law
    My blog
    My TechNet articles

  • How do I view data being locked by select for update

    We've implemented a test appointment booking system. The application does explicit row locking (e.g. select * from calendar where ..... for update nowait;)
    I need to view which database SID and USER has which records locked.
    I cannot find such SQL on google or AskTom.
    Currently, I can figureout which records are locked with the following PL/SQL.
    set serveroutput on
    declare id varchar2(20);
    begin
    for r in (select rowid,a.* from CALENDAR a) loop
    begin
    select rowid into id from CALENDAR where rowid=r.rowid for update nowait;
    exception
    when others then
    dbms_output.put_line(r.rowid);
    end;
    rollback;
    end loop;
    rollback;
    end;
    Two questons:
    1. How do I find out which database user and SID is locking each record.
    2. Is there a more elegant way of instead of boing the above PL/SQL.
    Please help?

    Oracle is not maintaining a list of all row locks. I've been told that other RDBMS's do have such a lock manager. Oracle doesn't because it hinders scalability. The fact that a row is locked is written in the block header itself. And you can only see that a row is locked by trying to lock it yourself. If it gives an ORA-00054, the row is locked.
    However, I've seldom come across a situation where I need to know which rows are locked. So what's the real reason behind your requirement "I need to view which database SID and USER has which records locked.". Why is this information important to you?
    Regards,
    Rob.
    PS: About your code: you don't want to catch the OTHERS exception, just the ORA-00054.

  • How to create the servlet as acontroller  and how to use it

    how to create the servlet as acontroller and how to use it

    >
    John
    Please update your forum profile with a real handle instead of "914824".
    When you have a problem you'll get a faster, more effective response by including as much relevant information as possible upfront. This should include:
    <li>Full APEX version
    <li>Full DB/version/edition/host OS
    <li>Web server architecture (EPG, OHS or APEX listener/host OS)
    <li>Browser(s) and version(s) used
    <li>Theme
    <li>Template(s)
    <li>Region/item type(s)
    With APEX we're also fortunate to have a great resource in apex.oracle.com where we can reproduce and share problems. Reproducing things there is the best way to troubleshoot most issues, especially those relating to layout and visual formatting. If you expect a detailed answer then it's appropriate for you to take on a significant part of the effort by getting as far as possible with an example of the problem on apex.oracle.com before asking for assistance with specific issues, which we can then see at first hand.
    I am going to have over 50 buttons in a page, Why? This would be a most unusual UI paradigm. I've never seen such a page, which suggests that whatever you want to do is normally done another way. Please explain the requirement in more detail.
    just wanted to know if its possible to do something like this in java.
    Java is not used in programming APEX UI behaviour. Java and JavaScript may share initial syllables, but they are not closely related.
    It's possible to achieve a great deal in JavaScript, but a clear definition of the requirements is necessary. Do you mean the buttons should be dynamically generated? If so, yes, this is possible in JavaScript. What would drive the process?
    Also, i would like to have dynamic action on it, for example, when the button is pressed, fill a string of text into other items(text field) within the page. Without more detail its not possible to make any specific suggestions. For example, I certainly would not want to create 50+ individual dynamic actions relating to different buttons.

  • How to lock the perticular record in table with some of fields

    Hi,
    I have one Doubt please clarify me.
    How to lock the record in table with perticular fields combination please give me example of code.
    Thanks,
    Hari.

    Hi,
    IT LIKE this....
    This is the function mode that you have to create for locking the contents of you internal table.
      CALL FUNCTION 'ENQUEUE_EZHFINDID'
       EXPORTING
         mode_zhfindid        = 'E'
         mandt                = sy-mandt
         ownid                = w_display-ownid
      X_OWNID              = ' '
      _SCOPE               = '2'
      _WAIT                = ' '
      _COLLECT             = ' '
       EXCEPTIONS
         foreign_lock         = 1
         system_failure       = 2
         OTHERS               = 3.
      CASE sy-subrc.
        WHEN 1.
          w_flag_lock = c_x.
         CLEAR w_okflag.
          MESSAGE e265 WITH w_display-ownnum.
      ENDCASE.
    Jayant Sahu.

Maybe you are looking for

  • I am getting an error report and not sure how to fix the script. Please help... 3

    So now Im getting a new error report. I named the instance of the button in the properties panel btn_ccbil. Here is the code I have now: import flash.net.URLRequest; var url:String = 'http://www.lexiefyfe.com/ccbill9001/index.htm'; btn_ccbil.addEvent

  • Problem with PanelList in ADF

    Hi, I have 'af:PanelList' in a jsp page. I need the display to be like the following one. . Prepare .........New (with a command link) .Search .........Mine(With link) ..........Others(with Link) .Logout But when I use PanelList I get the following r

  • PC Suite & Nokia E61

    I have two recurring issues with my Nokia E61 Issue 1: I cannot get my PC to sync with my E61, although it seems that I can intermittently get my E61 to sync with my PC (by using synchronise on the phone and not the PC) I am operating all the up to d

  • Add Cost Center Group

    Hi Gurus, I'm trying to restructure the cost center hierarchy, OKEON,  I'm trying to add the cost center group M000400(already created) under M000600 is there already in the cost center hierarchy. But the system is not allowing me add an existing gro

  • Invoice List accounting and factorial Discount/Taxes

    Hi , Is it possible to Post Invoice list ( Doc Type LR )Document to FI . If Yes then pl. tell me the procedure ? How can we use factorial Discount and Factorial Tax in Invoice list . if these two conditions are used the how to post in Customers accou