Retrieving Previous Record

Hello,
Here's my query...
SELECT row_id, item_code, mfg_date, mfg_qty, good_qty, COUNT(*) OVER
      PARTITION BY item_code
      ORDER BY mfg_date
    ) cnt
  FROM
    table_xHere's a sample output of my sample query above
CREATE TABLE table_x
(     row_id     NUMBER     PRIMARY KEY
,     item_code     varchar(30)
,     mfg_date     DATE
,     mfg_qty     NUMBER
,     good_qty     NUMBER
,     cnt           NUMBER
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt) VALUES (1,  A-001, DATE '2010-08-20',200,195,1);
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt) VALUES (2,  A-002, DATE '2010-08-20',300,290,1);
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt) VALUES (3,  A-002, DATE '2010-08-21',400,200,2);
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt) VALUES (4,  A-002, DATE '2010-08-22',500,450,3);
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt) VALUES (5,  A-002, DATE '2010-08-23',100,100,4);
COMMIT;Question:
I need to create another column from this table, let's name it column_x. If the cnt column is 1, mark column_x as false, else...
Let's take this example... If I'm looking at item 3, I need to retrieve the mfg_qty and good_qty column of item 2. If the mfg_qty of item 2 * 0.9 <= good_qty of item 2, mark the column_x of item 3 as true, else false.
Following the table above, my table now should be...
CREATE TABLE table_x
(     row_id     NUMBER     PRIMARY KEY
,     item_code     varchar(30)
,     mfg_date     DATE
,     mfg_qty     NUMBER
,     good_qty     NUMBER
,     cnt           NUMBER
,       column_x   varchar(5)
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt, column_x) VALUES (1,  A-001, DATE '2010-08-20',200,195,1,'false');
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt, column_x) VALUES (2,  A-002, DATE '2010-08-20',300,290,1,'false');
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt, column_x) VALUES (3,  A-002, DATE '2010-08-21',400,200,2,'true');
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt, column_x) VALUES (4,  A-002, DATE '2010-08-22',500,450,3,'false');
INSERT INTO table_x (row_id, item_code, mfg_date, mfg_qty, good_qty, cnt, column_x) VALUES (5,  A-002, DATE '2010-08-23',100,100,4,'true');
COMMIT;Let me know if you need more clarifications. :)
Edited by: Claude2005 on Nov 9, 2010 7:32 PM
Reworked my post

Claude2005 wrote:
Question:
I need to create another column from this table, let's name it column_x. If the cnt column is 1, mark column_x as false, else...
Let's take this example... If I'm looking at item 3, I need to retrieve the mfg_qty and good_qty column of item 2. If the mfg_qty of item 2 * 0.9 <= good_qty of item 2, mark the column_x of item 3 as true, else false.Thanks for posting DDL and sample data.
Aren't those two conditions (to derive value of column_x) different? Which one are you interested in, either or both?
Assuming you want to derive the value for column_x based on second condition above, how about following?
SELECT row_id, item_code, mfg_date, mfg_qty, good_qty,
           case when lag(mfg_qty) over (order by mfg_date) * 0.9 <= lag(good_qty) over (order by mfg_date)
           then 'true'
           else 'false'
           end as column_x
  FROM
    table_xI don't have access to a database now so above is not tested.
You may also want to consider what should happen when mfg_date and/or item_code are not unique

Similar Messages

  • I am using the database connectivity toolkit to retrieve data using a SQL query. The database has 1 million records, I am retrieving 4000 records from the database and the results are taking too long to get, is there any way of speeding it up?

    I am using the "fetch all" vi to do this, but it is retrieving one record at a time, (if you examine the block diagram) How can i retrieve all records in a faster more efficient manner?

    If this isn't faster than your previous method, then I think you found the wrong example. If you have the Database Connectivity Toolkit installed, then go to the LabVIEW Help menu and select "Find Examples". It defaults to searching for tasks, so open the "Communicating with External Applications" and "Databases" and open the Read All Data. The List Column names just gives the correct header to the resulting table and is a fast operation. That's not what you are supposed to be looking at ... it's the DBTools Select All Data subVI that is the important one. If you open it and look at its diagram, you'll see that it uses a completely different set of ADO methods and properties to retrieve all the data.

  • Get the first item value of previous record in a multi record block

    Hai,
    I have a multi record block with four items.I should get the first item value of the previous record so that I can increment its value in the current record.
    Thanks.........

    If you want a distinct value in each row or to be able to retrieve the records in the same order they were written then you should use a sequence.
    If you want to retrieve the records in the same order they were created in the block then you will need a diffferent solution to the one you outline here since a user could enter a new record between two others.
    I posted this a while back in response to someone who was using a sort_key item and resetting it for each row when a new record was inserted:
    If you make the sort_key bigger then you have much more room to insert new rows in between existing rows without having to reset all the sort_keys.
    Eg. you have rows with sort_keys of 129282000000000000 and 129283000000000000 (you can have more zeros if you want) and you want to insert a row in between. if you're using oracle forms then the user would have to click on the first of these rows and then do 'insert'. in your insert process you would store the sort keys of the current record and the one below, create a blank record in between and set the sort_key of that record to the average of the other two. you will be able to insert many new rows in between the original 2 before running out of space in the sort_key field.
    the method above is not sufficient, there are some other cases to consider:
    1) when the user is on the last record of the block then you will just create a new record with sort_key set to a greater number than the row before. you can have the sort_key defined as number(38) and to safely allow you to enter 1000 rows each new row would normally be 10E33 greater than the previous one.
    2) when the user is entering the first record then just set the sort_key to 10E33.
    3) on the off-chance that you do insert a great number of records and cannot insert another in between then you would need to alert the user, process the records so that the sort_keys are evenly spaced and requery the block. this processing could be scheduled nightly to make this eventuality even less likely.
    4) make sure the user cannot run the default 'clear_record' procedure. this would break my method as well as yours!
    James.

  • Retrieving 10 records per page

    hi,
    i would like to have the source code for retrieving 10 records per page in jsp. I have a huge resultset and i would like to display 10 records per page.
    your help is highly appreciated.
    regards
    andrew

    hi,
    i would like to have the source code for retrieving 10
    records per page in jsp. I have a huge resultset and
    i would like to display 10 records per page.
    your help is highly appreciated.
    regards
    andrewHey Andrew, this code will help you out. Essentially the pseudocode to do what you want is below. Let's say your jsp is called dbresults.jsp
    Get total number of results from query result set
    If page is called with no index number of current record to display
    Display the records from 0 until a max of ten counting how many we display and keeping track of the current record number.
    end if
    else
    Display the records up to a max of ten from the index number we received in the query
    end else
    tempvar_a is the current number of records displayed minus 10 records and minus the amount of records displayed on this page.
    If tempvar > 0
    Display a previous button with the a href as dbresults.jsp?index=tempvar value
    end if
    else if current record index < total record count
    then there are more records to display so make a next button with an href of dbresults.jsp?index=value of current record number plus one
    end else
    One caveat is that getting the index number in the beginning of the JSP as:
    request.getParameter("VIEWEDROWS");
    will return a string that we have to convert to an int since you will be adding and comparing to this number so do:
    String TEMPVIEWEDROWS = request.getParameter("VIEWEDROWS");
    int VIEWEDROWS = 0;
    if (TEMPVIEWEDROWS != null) {
    VIEWEDROWS = Integer.parseInt(TEMPVIEWEDROWS);

  • How to fetch previous record from internal table?

    Hi,
    My final internal table (it_final) has all the data month wise year wise.(opening and closing qty)
    but if
    Material   Batch    Month   Year        opening_qty         closing_qty
    FC5431   abc        08        2008        100                       50
    FC5431   ABC       09        2009         0                          100
    Suppose I want to take PREVIOUS record(closing_qty = 50  in my 09/2009  openin_qty = 50)  how will Ido this?
    Any solution????????? BTW i m using S033 for opening an closing qt monthwise.
    Plz reply soon if anyone knows.
    Thanks and Regards,
    Archana

    Hi,
    Test the following Sample code hope will solve out your problem,
    TYPES:  BEGIN OF ty_test,
            m(3),
            open_qty TYPE i,
            close_qty TYPE i,
            END OF ty_test.
    DATA: it_test TYPE STANDARD TABLE OF ty_test WITH HEADER LINE,
          wa_test LIKE LINE OF it_test,
          ctabix LIKE sy-tabix,
          ptabix LIKE sy-tabix.
    it_test-m = 'AAA'. it_test-open_qty = 100. it_test-close_qty = 50. append it_test.
    it_test-m = 'AAA'. it_test-open_qty =  0. it_test-close_qty = 100. append it_test.
    LOOP AT it_test.
      ctabix = sy-tabix.
      IF sy-tabix > 1.
        ptabix = sy-tabix - 1.
        READ TABLE it_test into wa_test INDEX ptabix.
        IF sy-subrc = 0.
          it_test-open_qty = wa_test-close_qty.
        ENDIF.
        MODIFY it_test INDEX ctabix.
      ENDIF.
    ENDLOOP.
    LOOP AT it_test.
      WRITE: it_test-m, it_test-open_qty, it_test-close_qty, /.
    ENDLOOP.
    Regards,
    Faisal

  • Retrieve All records and display in Report using CAML query in Report Builder if Parameter value is blank

    Hello Experts,
    i have created a report where i have one parameter field where user will pass parameter(e.g. EmpId). As per parameter record will fetched to report if no parameter is passed then it will display all records. I have done it by taking SqlServer Database as datasource.
    by using Following method
    Now i would like to do it by taking Sharepoint List as Datasource. For that what would be the CAML Query.
    Here is my existing CAML query.
    <RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <ListName>Employees</ListName>
      <ViewFields>
        <FieldRef Name="Title" />
        <FieldRef Name="FirstName" />
        <FieldRef Name="LastName" />
        <FieldRef Name="FullName" />
        <FieldRef Name="UserName" />
        <FieldRef Name="Company" />
      </ViewFields>
      <Query>
        <Where>  
    <Eq> 
        <FieldRef Name="Title" />
      <Value Type="Text">    
       <Parameter Name="EmployeeId"/>    
    </Value>
    </Eq>                  
        </Where>
      </Query>
    </RSSharePointList>
    The above code is working if i am passing an employeeId to Parameter. If nothing is passed, it is Not retrieving any record.
    Please suggest
    Thank you
    saroj
    saroj

    Your problem follows the well-established pattern of using an "All" parameter filter in SSRS. There are a few approaches depending on the size of your data. The easiest one is to return all data from CAML and then filter it within SSRS, the following thread
    provides some examples,
    http://stackoverflow.com/questions/18203317/show-all-records-some-records-based-on-parameter-value.
    Other options include passing all of the possible values within the CAML query when "All" is selected, using multiple Report Files to distinguish between both CAML queries, or to use multiple datasets with some logic to show/hide the correct one.
    Dimitri Ayrapetov (MCSE: SharePoint)

  • Previous record values displaying in the Group Footer row in the report.

    Hi Friends,
    I have 3 tables
    TableA:(PERNR BEGDA ENDDA are key fields)
    PERNR BEGDA    ENDDA      WERKS
    10001 1/1/2010 12/31/9999 1001
    TableB:(PERNR BEGDA ENDDA SUBTY are key fields)
    PERNR BEGDA    ENDDA       SUBTY  TYPES
    10001 1/1/2010 12/31/9999   01          COMS1
    10001 1/1/2010 12/31/9999   02         COMS2
    TableC:(PERNR BEGDA  ENDDA are key fields)
    PERNR BEGDA  ENDDA        AMNT
    10001 2/2/1997 4/3/2010      1000
    10001 4/4/2010 12/31/9999  2000
    I have joined these table by the key 'PERNR'( like A->B and A->C)
    Groped by the same key 'PERNR'
    My result rows in the report:
    PERNR BEGDA    ENDDA      WERKS  SUBTY  TYPES  BEGDA    ENDDA      AMNT
    10001 1/1/2010 12/31/9999 1001       01         COMS1  2/2/1997 4/3/2010    1000
    10001 1/1/2010 12/31/9999 1001       02         COMS2  2/2/1997 4/3/2010    1000
    10001 1/1/2010 12/31/9999 1001       01         COMS1  4/4/2010 12/31/9999 2000
    10001 1/1/2010 12/31/9999 1001       02         COMS2  4/4/2010 12/31/9999 2000
    But in the report format is like this in the Group Footer row:
    PERNR: 10001                     WERKS:1001
    SUBTY: 02                          AMNT :2000 (Current date)
                                                AMNT :1000 (Previous record)
    I created the format with "Previous" function
    but in the report it is giving the '2000' instead of '1000' in the AMT field
    Please help me, can i use the for loop in the report? or any sugessions?
    Thanks in advance.
    Regards,
    Venkata

    A group footer will dis[lay contents of the last record. You need to sort records to ensure that the last record contains link to your dynamic image.
    Ian

  • Retrieve the records based on date where date is not stored

    Hi,
    I have one table in Oracle.
    I want to retrieve the records which are added or modified after a particular date & time.(but the table does not contain any column for date & time )
    For example: Product table(pid number,pname varchar2)
    i am entering 10 records on date 21/07/2005
    i am entering 20 records on date 22/07/2005
    i am entering 15 records on date 23/07/2005
    i am entering 30 records on date 24/07/2005
    If i want to retrieve the records added after 22/7/2005
    (ie.) last 45 records
    But the table does not contain any date field.
    How will you know date & time of each record updated in the table.
    If any one knows, help me.
    bye.

    for 9iR2: check out online document of Oracle9i Application Developer's Guide - Fundamentals and search flash back query
    http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96590/adg08sql.htm#10851
    for 10G, flash back feature is enhenced to whole database level, you can still use flash back query though.

  • I'm attempting to sync several albums from itunes to iphoto.  When select to sync all albums it copies over the previous recorded album.  I tried to sync the Albums individually and the same thing happens.  Any ideas on how to sync my albums?

    I'm attempting to sync several albums from itunes to iphoto.  When select to sync all albums it copies over the previous recorded album.  I tried to sync the Albums individually and the same thing happens.  Any ideas on how to sync my albums?

    Hi NWL1,
    Thanks for the question. If I understand correctly, the iPhone won't update and is stuck. I would recommend that you read this article, it may be able to help you resolve or isolate the issue.
    If you can't update or restore your iPhone, iPad, or iPod touch - Apple Support
    Thanks for using Apple Support Communities.
    Have a great day,
    Mario

  • Using Garageband and I cannot hear previously recorded tracks on headphones.  Prefs are set to output on EMU0404 my audio device - this did work but now is not working.

    I am using Garageband and I cannot hear the previously recorded tracks on my headphones.  I am using an audio input/output device, EMU0404 - this was previously working fine but stopped.  All cables check out OK and so does the unit - I have updated to the latest version of Garageband but this did not help.  Any suggestion?

    Hi Christoph,
    I cannot see anything wrong with the EMU0404.  This is what puzzels me ... Garageband looks OK - headphones are OK - EMU looks OK.
    Thanks anyway
    Paul

  • Database hangs after retrieving some records....

    hi,
    I create a two level B+-tree index, for the first level i'm using key as logical database name, for the second level B+-tree i'm using some other field in my data. I am retrieving the records based on logical database name. I am using C++ to implement my index.
    In the following code i'm retrieving records from database. Program is behaving differently for different logical database names. For example in my database i have around 4 lakhs records with logical database name 'A' and around 1 lakh of records with logical database name 'B'. The following code displays all B records but programs hangs after retrieving some A records.
    I'm using PAGE_SIZE=8192, numBuffers=2048, and runnig in Fedora Core3.
    DbEnv myEnv(0);
         myEnv.set_cachesize(0, PAGE_SIZE * numBuffers, 0);
         myEnv.set_data_dir("/home/raviov/new/database");
              try {
                   myEnv.open("./", DB_CREATE | DB_INIT_MPOOL, 0);
              catch (DbException &e) {
                   cerr << "Exception occurred: " << e.what() << endl;
                   exit(1);
              db=new Db(&myEnv,0);
              db->set_pagesize(PAGE_SIZE);     
              db->set_bt_compare(compare_int);
         dbname=itoa(p);
         try
         db->open(NULL,
                   "treedb.db",
                   dbname,
                   DB_BTREE,
                   0,
                   0);
         catch(DbException &e)
              cerr << "Failed to open DB object" << endl;
              exit(1);
         db->cursor(NULL,&cursorp,0);
         key=new Dbt();
         data=new Dbt();
         while(ret=(cursorp->get(key,data,DB_NEXT))==0)
              j=*((int*)key->get_data());
              q=(*((struct tuple*)data->get_data())).startPos;
              r=(*((struct tuple*)data->get_data())).endPos;
              s=(*((struct tuple*)data->get_data())).level;
              cout<<"position : "<<j<<"\t";
              cout<<"start : "<<q<<"\t";
              cout<<"end : "<<r<<"\t";
              cout<<"level : "<<s<<"\n";
         if(ret==DB_NOTFOUND)
              cout<<"no records";
              exit(1);
         if(cursorp!=NULL)
              cursorp->close();
         try
              db->close(0);
         catch(DbException &e)
              cerr << "Failed to close DB object" << endl;
              exit(1);
         myEnv.close(0);

    HI Andrei,
    thank you for giving reply, I'm not using any secondary indecies, subdatabases and not using any threads.
    the following code displays index...
    #include <stdio.h>
    #include <db_cxx.h>
    #include <iostream.h>
    #include <db.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    int PAGE_SIZE=8192;
    int numBuffers=2048;
    char *itoa(const int x)
          char buf[100];
          snprintf(buf, sizeof(buf), "%d", x);
           return strdup(buf);
    int compare_int(Db dbp, const Dbt a, const Dbt *b)
      int ai;
      int bi;
      memcpy(&ai,a->get_data(),sizeof(int));
      memcpy(&bi,b->get_data(),sizeof(int));
      return(ai-bi);
    struct tuple
           int startPos;
           int endPos;
           int level;
    main()
         FILE *fp;
         int i,j,k,l,m,n,total=0;
         char dbname[500],filename[500],str [500];
         tuple t;
         Db *db;
         Dbt key,data;
         DbEnv myEnv(0);
         myEnv.set_cachesize(0, PAGE_SIZE * numBuffers, 0);
         try {
                myEnv.open("/home/raviov/Desktop/example", DB_CREATE | DB_INIT_MPOOL, 0);
           catch (DbException &e) {
                  cerr << "Exception occurred: " << e.what() << endl;
                  exit(1);
         for(n=0;n<=84;n++)
              db = new Db(&myEnv, 0);     // Instantiate the Db object
                    db->set_bt_compare(compare_int);
               db->set_pagesize(PAGE_SIZE);
              strcpy(filename,"/home/raviov/Desktop/GTCReport/code/sequence/splitter/tree/");
              strcat(filename,itoa(n));
              fp=fopen(filename,"r");
              if(fp==NULL)
                   cout<<"error in opening the file";
                   exit(0);
              while(fgets (str , 500 , fp)!=NULL)
                   sscanf(str,"%d(%d,%d,%d,%d)",&i,&j,&k,&l,&m);
                   key=new Dbt(&i,sizeof(int));
                   if(total==0)
                        strcpy(dbname,itoa(j));
                   t.startPos=k;
                   t.endPos=l;
                   t.level=m;
                   data=new Dbt(&t,sizeof(t));     
                   if(total==0)
                        try
                             db->open(NULL,
                             "tree.db",
                                       dbname,
                              DB_BTREE,
                                DB_CREATE,
                                0);
                        catch(DbException &e)
                               cerr << "Failed to create DB object" << endl;
                             exit(1);
                        total=99;
                   int ret=db->put(NULL,key,data,DB_NOOVERWRITE);
                   if(ret==DB_KEYEXIST)
                        cout<<"key already exist\n";
                        exit(1);
                   delete key;
                   delete data;
              total=0;
              fclose(fp);
              try
                   db->close(0);
              catch(DbException &e)
                     cerr << "Failed to close DB object" << endl;
                   exit(1);
         myEnv.close(0);
    }The following code retrieves the records from database that we had built above...
    #include <stdio.h>
    #include <db_cxx.h>
    #include <iostream.h>
    #include <db.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h>
    int PAGE_SIZE=8192;
    int numBuffers=2048;
    char *itoa(const int x)
          char buf[100];
          snprintf(buf, sizeof(buf), "%d", x);
           return strdup(buf);
    int compare_int(Db dbp, const Dbt a, const Dbt *b)
      int ai;
      int bi;
      memcpy(&ai,a->get_data(),sizeof(int));
      memcpy(&bi,b->get_data(),sizeof(int));
      return(ai-bi);
    struct tuple
           int startPos;
           int endPos;
           int level;
    main()
         FILE *fp;
         int i,j,k,l,m,n,total=0;
         char *dbname;
         char filename[200],str [100];
         tuple t;
         Db *db;
         Dbt key,data;
         Dbc *cursorp=NULL;
         int ret,x=4;
         char *ravi;
         int p=84763;
         int y=2134872;
         int r,s,q,count=0;
         DbEnv myEnv(0);
         myEnv.set_cachesize(0, PAGE_SIZE * numBuffers, 0);
         myEnv.set_data_dir("/home/raviov/new/database");
              try {
                      myEnv.open("./", DB_CREATE | DB_INIT_MPOOL, 0);
               catch (DbException &e) {
                      cerr << "Exception occurred: " << e.what() << endl;
                      exit(1);
              db=new Db(&myEnv,0);
              db->set_pagesize(PAGE_SIZE);     
              db->set_bt_compare(compare_int);
         dbname=itoa(p);
         try
              db->open(NULL,
                    "tree.db",
                     dbname,
                     DB_BTREE,
                     0,
                     0);
         catch(DbException &e)
                cerr << "Failed to open DB object" << endl;
              exit(1);
         db->cursor(NULL,&cursorp,0);
         key=new Dbt();
         data=new Dbt();
         while(ret=(cursorp->get(key,data,DB_NEXT))==0)
              j=*((int*)key->get_data());
              q=(*((struct tuple*)data->get_data())).startPos;
              r=(*((struct tuple*)data->get_data())).endPos;
              s=(*((struct tuple*)data->get_data())).level;
              cout<<"position   : "<<j<<"\t";
              cout<<"start : "<<q<<"\t";
              cout<<"end   : "<<r<<"\t";
              cout<<"level   : "<<s<<"\n";
              delete key;
              delete data;
         if(ret==DB_NOTFOUND)
              cout<<"no records";
              exit(1);
         if(cursorp!=NULL)
              cursorp->close();
         try
              db->close(0);
         catch(DbException &e)
                cerr << "Failed to close DB object" << endl;
              exit(1);
         myEnv.close(0);     
    }

  • UDF: how to get a value in the previous record when lopping over records?

    Hello
    I have this challenge:
    Source message:
    <row>
      <ID>111</ID>
      <Score>200</Score>
      <Date>2010-01-01</Date>
    </row>
    <row>
      <ID>111</ID>
      <Score>230</Score>
      <Date>2010-01-02</Date>
    </row>
    <row>
      <ID>112</ID>
      <Score>230</Score>
      <Date>2010-01-03</Date>
    </row>
    etc...
    Now the case is, that IF the value of ID of the current record (row) is equal to the value of the ID of the previous record AND the Score value of the current record is bigger than the Score value of the previous record THEN a record in the target message must be created with these values:
    Target Message:
    <row>
      <ID_target> value of source ID </ID_target>
      <Score_yesterday> Score value of previous record (day) </Score_yesterday>
      <Score_current_date> Score value of current record </Score_current_date>
      <Date_current> Date of current record  </Date_current>
    </row>
    I am thinking of using GlobalContainer to store the previous values but am note sure how to maintain these previous values. In addition, I am thinking about using a UDF on the target row record, which will just create the row, if conditions are met (result.addValue("");) and then just make a simple mapping of the ID_target, Score_current_date and Date_current fields and make an other UDF for the Score_yesterday field where I get the Score for the previous record using the GlobalContainer value, that I stored in the other UDF.
    BUT:
    Should I use "All values of context" or "All values of Queues" in the UDF used on the row record and how do I make sure, that the Score_yesterday global container value is maintained correctly? I am planning of setting it in the UDF used on the Target row record but will it then be in sync with the consuming UDF of the Score_yesterday field?
    Java code to go into the UDF would be very much appreciated
    Mikael

    int tmp1;
    int tmp2;
    int len = ID.length;
    for(int i =0;i< len;i++)
         if( i!= len-1)
             tmp1 = Integer.parseInt(Score<i>);
             tmp2 = Integer.parseInt(Score[i+1]);
                   if(tmp2 >tmp1)
                     if (TARGET[0].equals("ROW"))
                              result.addValue("");
                          else if (TARGET[0].equals("ID_TARGET"))
                              result.addValue(ID[0]);
                         else if (TARGET[0].equals("SCORE_YDAY"))
                              result.addValue(Score<i>);
                         else if (TARGET[0].equals("SCORE_CDAY"))
                             result.addValue(Score[i+1]);
                         else
                             result.addValue(DT[i+1]);
    I got the following results for the set of data that you provided.
    Target-XML
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_TestingTGT xmlns:ns0="http://monsanto.com/CIC">
       <Row>
          <ID_TARGET>571515198310502207</ID_TARGET>
          <SCORE_YDAY>1000</SCORE_YDAY>
          <SCORE_CDAY>1010</SCORE_CDAY>
          <CURRENT_DATE>2010-03-02 00:00</CURRENT_DATE>
       </Row>
       <Row>
          <ID_TARGET>571515198310502207</ID_TARGET>
          <SCORE_YDAY>1000</SCORE_YDAY>
          <SCORE_CDAY>1050</SCORE_CDAY>
          <CURRENT_DATE>2010-03-04 00:00</CURRENT_DATE>
       </Row>
       <Row>
          <ID_TARGET>571515198310502207</ID_TARGET>
          <SCORE_YDAY>1050</SCORE_YDAY>
          <SCORE_CDAY>1080</SCORE_CDAY>
          <CURRENT_DATE>2010-03-05 00:00</CURRENT_DATE>
       </Row>
       <Row>
          <ID_TARGET>571515198310502108</ID_TARGET>
          <SCORE_YDAY>2000</SCORE_YDAY>
          <SCORE_CDAY>2040</SCORE_CDAY>
          <CURRENT_DATE>2010-03-03 05:00</CURRENT_DATE>
       </Row>
       <Row>
          <ID_TARGET>571515198310502108</ID_TARGET>
          <SCORE_YDAY>2000</SCORE_YDAY>
          <SCORE_CDAY>2040</SCORE_CDAY>
          <CURRENT_DATE>2010-03-05 05:00</CURRENT_DATE>
       </Row>
       <Row>
          <ID_TARGET>571515198310302203</ID_TARGET>
          <SCORE_YDAY>3000</SCORE_YDAY>
          <SCORE_CDAY>3020</SCORE_CDAY>
          <CURRENT_DATE>2010-03-05 00:00</CURRENT_DATE>
       </Row>
    </ns0:MT_TestingTGT>

  • Question about going to next or previous record

    Hi there,
    I have a data block which is not based on table. It is a multi record block that gets populated with default values depending on some value on the previous tab. This item called "description" has also a LOV attached to it. The user should have the option of keeping the default values or clicking on LOV to change the value for each record. Each LOV is different and depends on default value.
    Cursor is in last record. I click on LOV the correct lov pops up. click on previous record by just clicking on the record and not using (previous record button from toolbar) and click on LOV, incorrect LOV is shown. It is showing the LOV from the last record.
    But if I click on previous record button, correct LOV gets populated.
    Which trigger should I use to solve this?
    Thanks

    Hi,
    I would use the when-new-record-instance trigger to kick off your logic.
    Where is it called from at present - post-query?
    The previous & next record keys do the same as key-up & key-down but using the mouse forms will not fire this logic for any records passed over. We had a similar problem with validation and had to disable mouse navigation for that form so we could just trap key movement.
    Regards
    Kevin

  • HOW TO COPY THE PREVIOUS RECORD TO THE CURRENT RECORD

    Hi all,
    i am using form 6i.
    i have one multi record block. the user has to enter all the values and store it to the table.
    My requirement is - if user is in some blank record, if user clicks the button then all the previous record values should be coppied to the record where the user has placed the cursor.
    please help me..
    Thanks..

    user13329002 wrote:
    Except these columns all other columns should be copied when i press the button.So? Use duplicate_record and set the columns you don't want to copy to null or a value you want?
    duplicate_record;
    :my_block.creation_date := sysdate;
    :my_block.modiefied_date := null;cheers

  • How can I get the previous record's field value in a VO

    Hi I would like to know how can I get the previous record's field value in a VO
    For example : I have a VO porequisitionlinesvoimpl, and it contains 5 records (porequisitionlinesvoimpl.getRowCount() = 5). How can I search all records in the VO and get the field (attribute3) for all records?
    Many thanks anyone can help
    Lawrence

    Hi ,
    U can loop through the VO to get the value of attribute3,
    need to extend the controller ,use below code
    OAViewObject vo = (OAViewObject)oawebbean.getApplicationModule (VO1);
    OARow row = null;
    int fetchedRowCount = vo.getFetchedRowCount();
    RowSetIterator Iter = vo.createRowSetIterator("Iter");
    if (fetchedRowCount > 0)
    Iter .setRangeStart(0);
    Iter .setRangeSize(fetchedRowCount);
    for (int i = 0; i < fetchedRowCount; i++)
    row = (OARow)Iter .getRowAtRangeIndex(i);
    String value = (String)row.getAttribute("Atrribute3");
    Thanks
    Pratap

Maybe you are looking for