Record Group - Sorting.

Hi,
I am using D2K 1.6.1 on HP-Ux with Oracle 7.3.
Is there a easy way to sort the record group, other than re-populating the group by query?
I populate the record group once depending upon the i/p criteria. From there I display those columns on multi record block. Now the user needs an option to sort by any of the displayed column. I can do this by re-querying, but that there will be performance issues involved. I can sort the column in the old fashion way, but just wanted to know if there is a easy way out.
Thanks in advance.
Sanjay.

Create a formula like this
tonumber({DISCOUNT_RECORD.RECORD_NUMBER})
Now insert a group on this formula that automatically sorts in ascending order
Regards,
Raghavendra

Similar Messages

  • Sum of a sum when using Top N in the Group Sort Expert

    Hi All,
    I have a small problem I can't quite seem to work out.
    I have a report where each line is for a particular Product, and is a summation of the Sales for that Product over several Locations. When you click on the line, it shows the breakdown of Sales over each Location.
    I use the Group Sort Expert to display the Top N results, where the 'N" is set in a formula to a parameter passed in to the report, so the user can select the top 5,10,50 etc. Products across all Locations.
    At the bottom of the report, I want to have a sum of a column of Sales $. I need that sum to only be a sum of the Top N records selected.
    Since each line is a summation of the all the products for the Locations, what I need is a sum of that sum for the Top N, but Crystal will not let you add the sum of a sum, so I'm not sure how to accomplish this.
    If I just do a sum of the underlying values I get a total for all the Products, regardless of the Top N.
    Hope that makes some sense !
    Many Thanks
    Paul

    Hi Sastry,
    I tried your suggestion, thanks, but I don't think it's the answer. For a start Crystal will not let me do that, it pops up a message box when I try to run the report "A running total cannot refer to a print time formula. Details: Record Number". I also added the record number field next to the lines in the report to see what the result would be, and I don't think it would work anyway.
    Here is an example using Units sold:
    Product Name--LocationUnits Sold--Record Number
    Product A -<All Stores>----8
    Store A--1--
    1
    Store B--3--
    2
    Store C--4--
    3
    Product B--<All Stores>--3      
    Store A--2--
    4
    Store B--1--
    5
    Product C--<All Stores>--
    1
    Store A--1--
    6
    Note that only the bold lines are shown in the report,. If you click on the bold line, then the breakdown of the stores is shown. For the above example, I am showing the Top 2 units across all stores (so Product C is not shown at all), but there are actually 5 records, so if I used a formula where RecordNumber <=N, where in this case N=2, I would get a total units sold of 1 + 3 (records 1 and 2) which is incorrect.
    I will have more of a think on this and see if I can find a solution, in the mean time, any other suggestions ? Is there some wya of checking if the line is visible maybe ?
    Thanks for your time !
    Paul

  • Group Sort Expert Top N

    In Group Sort Expert I have a group called @Sku and I want to select the top 500 based on Sum of @SortByData which works except the totals are for the whole group and not just the top 500.
    Also I would like to select Ascending/Descending based on a parameter field IN the Group Sort Expert since I'm using a based on field (not in Group Expert Change Group Options).

    Hi sharonamtowler,
    My requiremnet is TOP N Materials based on the Current Availiable Stock in each Plant.  In CR from my db, I get four records in Details section for each Material (on 4 weeks, let say 48,49,50,51 ) of a Plant.
    I have grouped on Plant & material. 
    But to get Top N Materials I have to do Summation(Current Availiable Stk) which mean in My Material Group Section I get the Sum of Current availibale Stock of 4 weeks. But I need Top N based on the last weeks Current Availible Stock.
    How to do this?
    I left Plant in Group Sort Expert with No Sort and on Material I have given TOP N.
    I need to know whether only Summation Values should be used in Group sort expert ?
    please some help me solvethe issue.
    Edited by: KRISHNA CHAITANYA B on Dec 29, 2009 6:12 AM

  • Group Sort Filtering

    Hi
    I have a report which has a group sort on number of days sickness leave for employees over a period of a year .
    Is there a way of setting a condition on the group (sub) total to exclude total sickness less than 8 days and the individual lines that make up the sub total?
    Or could you advise of an alternate way to do this.
    So to recap I need to exclude employees whose sickness total for a year is less than 8 days.And the report lists individual entries of sickness for a year by employee.
    I am using Discoverer Desktop version 4.
    Thanks
    Edited by: user650649 on 23-Jul-2010 02:28

    Hi,
    In general, you can do this by using an analytic sum function in a calculation. So you would calculate the total number of days sickness partitioned by the employee and the year. You can then include this calculation in a condition to exclude all the records where this total is less than a given value.
    Regards,
    Rod

  • Changing group sort programmaticaly

    Is there a way to change or create a "group sort" formula from vb.net 2005? I am using Crystal reports XI R2.
    I need to be able to sort by ItemID, Qty, Amount or Volume, create the sort formula and be able to change the sort direction also.
    I tried to use:
                Dim crSortField As SortField
                Dim fieldDef As DatabaseFieldDefinition
                For Each crSortField In cr.DataDefinition.SortFields
                    fieldDef = cr.Database.Tables(0).Fields(crSortField.Field.Name.ToString)
                    crSortField = cr.DataDefinition.SortFields(1)
                    crSortField.Field = fieldDef
                    crSortField.SortDirection = SortDirection.DescendingOrder
                Next
    I get an error that says: The sort is not defined in the data definition.
    Any help would be appreciated.

    Here is a sample I had kicking around.
    Keep in mind that you must have at least one sort already set up to be able to change it. Otherwise you'll need to use the RAS SDK to add sorts at runtime.
              private void Form1_Load(object sender, System.EventArgs e)
                   ConfigureCrystal();
              private void ConfigureCrystal()
                   // Instantiate and load the Sort Report.rpt
                   crReportDocument = new ReportDocument();
                   crReportDocument.Load(Application.StartupPath + "\\..\\..\\Sort Report.rpt");
                   // Change the sorting for the group to sort based on the summary
                   // of @Order Amount x Tax.
                   SortFields crSortFields = crReportDocument.DataDefinition.SortFields;
                   foreach(SortField crSortField in crSortFields)
                        if (crSortField.Field.Name == "Count ({Orders.Order ID}, {Customer.Customer ID})")
                             // Get the new field to sort on
                             FieldDefinition crFieldDefinition = crReportDocument.DataDefinition.SummaryFields[1];
                             crSortField.Field = crFieldDefinition;
                             crSortField.SortDirection = SortDirection.DescendingOrder;
                             break;     // break out of the foreach loop
                   // Change the sorting for the record type as well
                   foreach(SortField crSortField in crSortFields)
                        if(crSortField.Field.Name == "Order ID")
                             FieldDefinition crFieldDefinition = crReportDocument.Database.Tables[1].Fields[1]; // the Order Amount in in the 2nd table and 2nd field
                             crSortField.Field = crFieldDefinition;
                             crSortField.SortDirection = SortDirection.DescendingOrder;
                             break; // break out of this foreach loop
                   // Set the ReportSource of the CrystalReportViewer control
                   crystalReportViewer1.ReportSource = crReportDocument;
              private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
                   // clean up
                   crReportDocument.Close();
                   crReportDocument.Dispose();
                   crReportDocument = null;

  • How do I change the number in a Top N Group Sort

    I have a report that I have grouped on a particular field (Cust.Name specifically). I then used the group sort expert and selected the Top N selection in the combo box under the Cust.Name tab. I put in a default number of 20. What I want to do is to set this number for the Top N group sort via .NET. Does anyone know the correct method for doing this in either VB.NET or C#.NET. I am using VS 2005 Pro and the embedded Crystal Reports engine for VS.NET. Thank you.
    Ed Cohen

    Hello, Edgar;
    In the bundled version of Crystal Reports 10.2 in Visual Studio .NET 2005 you will need to use the following code:
    Private Sub Set_TopN()
            Dim TopNSortField As TopBottomNSortField
            'Get the Sort field by index
            'Cast it as a TopBottomNSortField
            If TypeOf crReportDocument.DataDefinition.SortFields.Item(0) Is TopBottomNSortField Then
                TopNSortField = crReportDocument.DataDefinition.SortFields.Item(0)
                TopNSortField.NumberOfTopOrBottomNGroups = 10
            Else
                TopNSortField = Nothing
            End If
        End Sub
    In a full version of Crystal Reports there is an option to create a parameter as a number such as {?TopN} and then pass the value to it at runtime.
    In the Crystal Reports designer you need to create the parameter and then go to Report|Group Sort Expert.
    Choose TopN based on your field.
    Where N is... You will need a number there. I used 1. But then I clicked on the Formula editor [X+2] and added the parameter field {?TopN}.
    Passing the parameter at runtime ran the number I requested.
    Elaine
    Edited by: Elaine Dove on Mar 3, 2009 12:12 PM

  • HOW TO create a temp table or a record group at run time

    i have a a tabular form and i dont want to allow the user entering duplicate
    records while he is in insert mode and the inserted records are new and not exsisting in the database.
    so i want to know how to create a temp table or a record group at run time to hold the inserted valuse and compare if they are exsiting in previous rows or no.
    please help!

    As was stated above, there are better ways to do it. But if you still wish to create a temporary block to hold the inserted records, then you can do this:
    Create a non-database block with items that have the same data types as the database table. When the user creates a new record, insert the record in the non-database block. Then, before the commit, compare the records in the non-database block with those in the database block, one at a time, item by item. If the record is not a duplicate, copy the record to the database block. Commit the records, and delete the records in the non-database block.

  • Dynamically  populate  a  record  group  on  the  fly uisng LOV

    Hi,
    I want to create dynamically populate a record group on the fly uisng LOV.
    1. This is how the RG_BANKNAME Record Group object look like
    Object : Record Group
    Name : RG_BANKNAME
    Record Group Query : SELECT NAME, SHORT_NAME FROM C_BANKS
    2. I create the Push Button and when user click it will popup the LOV.
    DECLARE
         rg_id RecordGroup;
         errcode NUMBER;
         status BOOLEAN;
    BEGIN
         rg_id := Find_Group('RG_BANKNAME');
         IF Id_Null(rg_id) THEN
              Message('No such group: ',ACKNOWLEDGE);
              RAISE Form_Trigger_Failure;
         ELSE
              errcode :=POPULATE_GROUP(rg_id);     
              SET_LOV_PROPERTY('LV_NAME', TITLE, 'My Own LOV');
              SET_LOV_PROPERTY('LV_NAME', GROUP_NAME, rg_id);
              SET_LOV_COLUMN_PROPERTY('LV_NAME', 1 ,Title, 'NAME');
              SET_LOV_COLUMN_PROPERTY('LV_NAME', 1 ,Width, 150);     
              SET_LOV_COLUMN_PROPERTY('LV_NAME', 2 ,Title, 'SHORT NAME');
              SET_LOV_COLUMN_PROPERTY('LV_NAME', 2 ,Width, 100);     
              status := Show_LOV('LV_NAME',10,20);
              IF NOT status THEN
                   Message('You have not selected a value.');
                   Bell;
              END IF;
         END IF;
    END;
    My question is do I need to create the LOV Object name call 'LV_NAME'? since I don't have this
    create on my design times, because I thought it can be done dynamically on the fly.
    The problem is compliant that the Lov Id is not valid.
    Thanks
    David
    Edited by: user445990 on May 24, 2011 9:19 PM

    Hello,
    You request is not clear. Do you need to display the LOV or not ? In other words, what is the goal of your record group ?
    Francois

  • Strange Problem in dynamically list population with record group

    Hello Room,
    I am dynamically populating a single list with 2 record groups. I am having a strange problem. All the code are written in 2 seperate buttons. The code of every button is given below.
    Button 1 code:-
    DECLARE
    rg_reports RECORDGROUP;
    rg_name VARCHAR2(40) := 'REPORTS';
    vTemp NUMBER;
    BEGIN
    -- Pls make sure Group doesn't already exist
    rg_reports := FIND_GROUP(rg_name);
    -- If it doesn't exist then create it and add ur query to it
    IF Id_Null (rg_reports) THEN
    rg_reports:=CREATE_GROUP_FROM_QUERY(rg_name , 'SELECT companyname,to_char(co) from companymaster order by companyname');
    end if;
    --Populate the Record Group
    vTemp:=POPULATE_GROUP(rg_reports);
    POPULATE_LIST('REPORTS.EXAMPLELIST', rg_name);
    Delete_Group( rg_reports );
    END;
    Button 2 Code:-
    DECLARE
    rg_reports RECORDGROUP;
    rg_name VARCHAR2(40) := 'REPORTS';
    vTemp NUMBER;
    BEGIN
    -- Pls make sure Group doesn't already exist
    rg_reports := FIND_GROUP(rg_name);
    -- If it doesn't exist then create it and add ur query to it
    IF Id_Null (rg_reports) THEN
    rg_reports:=CREATE_GROUP_FROM_QUERY(rg_name , 'SELECT accountname,to_char(co) from accountmaster order by accountname');
    end if;
    --Populate the Record Group
    vTemp:=POPULATE_GROUP(rg_reports);
    POPULATE_LIST('REPORTS.EXAMPLELIST', rg_name);
    Delete_Group( rg_reports );
    END;
    The code is same here only the sql is different in these 2 buttons. Now the problem point.
    when i press button 1, I get the list populated ok. when i try to click on the list item and keep the button pressed the list gets scrolled properly.
    when i press button 2 after that i get account names well populated in the same list item as well, but this time, when i keep the button pressed the list does not scroll below as in button 1. It does not even allow to select different item from the list of button 2 code.
    I tried to clear cache, cookies, exit browser everything and try to run the button 2 first, but still the problem in button 2 code.
    Following are my system details.
    windows 7 professional edition.
    Oracle database 11g on windows 7
    Oracle forms 10g patchset 10.1.2.0.2 on windows 7
    Browser Netscape Navigator with oracle jinitiator 1.3.1.22
    But this form is run by a client side html file where oracle forms 10g is not installed on windows xp. html file is just referring server url to run the module. The file is run on Netscape navigator browser with oracle jinitiator 1.3.1.22
    My question is that is this a bug ? if button 1 gets the list item scrolled, why is the problem with button 2 even though i press it first. Here I am deleting the record group also. after the code is over. Initially I thought this may be the character length problem so I took the maximum character length for that list item as given by the 2 columns in database.
    Why is the list scrolling not happening in button 2 but in button 1 with same codes on both ?
    Anybody please help me.

    The problem is the second query. I would guess that the TO_CHAR(co) is not unique for each account, but is the same for the accounts. And as the second item in the select-list is the listitems values, all your listitem-entries have the same value. therefore, of you select any entry, the list will always go the the first entry again.
    Adjust your query.

  • Dynamic creation of record group

    Hi
    Can anyone suggest me with an example about how to create a dynamic record group and attach it to a lov ?
    Regards

    Hi,
    Thanks for your reply
    DECLARE
    rg_name VARCHAR2(40) := 'COMPANY_RANGE';
    rg_id RecordGroup;
    errcode NUMBER;
    lov_id LOV;
    BEGIN
    :System.Message_Level := 0;
    rg_id := Find_Group( rg_name );
    IF Id_Null(rg_id) THEN
    rg_id := Create_Group_From_Query( rg_name||'_TMP', 'select COMPANIES_ID from SYSMODULE.COMPANIES where 1=2');
    Set_LOV_Property(lov_id,GROUP_NAME,rg_name||'_TMP');
    rg_id := Create_Group_From_Query( rg_name, 'select COMPANIES_ID from SYSMODULE.COMPANIES');
    IF Id_Null(rg_id) THEN
    Message(' Create group failed');
    Message(' ',no_acknowledge);
    Raise Form_trigger_failure;
    End if;
    END IF;
    errcode := Populate_Group( rg_id );
    lov_id := Find_LOV('LOV7');
    Set_LOV_Property(lov_id,GROUP_NAME,rg_name);
    END;
    The above code, I have placed in when new form instance .. still the same error
    when new block instance --- same error
    in push button --- same error
    FRM-30048: Unable to find record group .
    LOV LOV7
    Form: DYNAMIC_LOV_CREATION
    FRM-30085: Unable to adjust form for output.
    Where i am going wrong ..
    Regards

  • Creation of Record Group and LOV at run time

    Hello All,
    I have been stuck by this...I have two text items on which LOVs have been placed.Selection of one depends on selection of other.I can dynamically create a record group but how to create a LOV dynamically to populate it with the dynamic record group been created.
    For more visualization consider that filtering of data takes place in one lOV based on the other LOV been provided.
    Revert ASAP...
    Thanks and Regards,
    Kapil Uppal

    I don't think you can create a LOV dynamically, but you can repopulate a pre-existing one, which should allow you to achieve the same goal.

  • Dynamically creating a Record Group based on Previously entered Record Grou

    Forms [32 Bit] Version 10.1.2.3.0 (Production)
    Hi,
    I know how to dynamically create a record group based on a query and putting the code in When new form instance.
    My query is. I have a form which has multiple Record Groups and the user wants to dynamically create subsequent groups based on previous groups.
    For example
    I have a record group with selects a Location,
    when the user selects the Location from a list of values
    the 2nd record group called 'Cost Centres' will have to filter out only those with the locations selected above.
    How can I populate the 2nd record group at run-time when I do not know what site the user will select?
    If I simply populate in when new form instance as in location and just select everything, the list of values populates.
    CC field is a LIST ITEM and the list style is a POP LIST, it is not required.
    I have put the code in the Location field in the when-list-changed trigger.
    I am getting this error:
    frm-41337: cannot populate the list from the record group
    here is the code:
    DECLARE
    v_recsql Varchar2(1000); -- The SQL for creating the Record Group.
    v_recgrp RecordGroup; -- Record Group
    v_status Number; -- Return Value of Populate_Group function.
    c_where VARCHAR2(1000);
    BEGIN
         IF :location = '1' THEN
              c_where := ' substr(cost_centre,1,2) in (''01'',''02'')';
         ELSIF :location  = '2' THEN
              c_where := ' substr(cost_centre,1,2) in (''02'',''03'')';
         ELSIF :location   = '3' THEN
              c_where := ' substr(cost_centre,1,2) in (''01'',''11'',''07'')';
                   ELSE
              c_where :=  ' 1=1'; --EVERYTHING
         END IF;
    v_recsql := 'SELECT cost_centre, description  FROM   cost_centres  where '||c_where;
    -- Create the Record Group
    v_recgrp := CREATE_GROUP_FROM_QUERY('v_recgrp', v_recsql);
    IF NOT ID_NULL(v_recgrp)
    THEN -- No Error, record group has been successfully created.
    -- Populate Record Group
    v_status := POPULATE_GROUP('v_recgrp');
    IF v_status = 0
    THEN -- No Error. Record Group has been Populated.
    POPULATE_LIST('block.CC', 'v_recgrp');
    END IF; -- IF v_status = 0
    -- Delete the Record Group as it is no longer needed.
    DELETE_GROUP('v_recgrp');
    END IF; -- IF NOT ID_NULL(v_recgrp)
    END;thanks for your assistance.

    Hi,
    Once record status gets change for block you can not populate/repopulate the list item. Keep those list items as non-database item with different names and create different items as database orignal items. Than assign the values in WHEN-LIST-CHANGE trigger to the actual database items.
    -Ammad

  • What are record groups for?

    hi,
    Could anybody tell me what is the main purpose of creating record groups whith statements like: create_group_from_query, populate_group, ...
    Every time we want to access any records we can use blocks which are based on tables or views which are in Oracle Data Base. So what is the reason of creating record groups?
    please explain my that issue:)
    Grzegorz

    hi grzegorz,
    Record Group is one which is used with LOVs and List Items.
    for the use of LOV & List items u must have to define record group through whis the List items or LOV is belogs to that group.
    A record group built from a query can store records from database tables much like a database view, with the added advantage that the record group is local to Form Builder, rather than existing in the database.
    To know more about record group, form builder's help is good way,
    Regards
    Chandan

  • How to get all the Record Groups?

    in the form i had created a record group. let us say they are:
      RG_APPR_TYPE_CDE_LIST
      RG_DRV_APPR_TYPE_CDE_LIST
      RG_PROJ_MODE_CDE_LIST
      RG_DRV_PROJ_MODE_CDE_LIST
      RG_PROJ_STATUS_CDE_LIST
      RG_DRV_PROJ_STATUS_CDE_LIST
      RG_ORG_SUB_TYPE_CDE_LIST
      RG_DRV_ORG_SUB_TYPE_CDE_LIST
      RG_REGION_NUM_LIST
      RG_DRV_REGION_NUM_LISTwhen the form hits on the clear button it invoke the CLEAR_FORM. i want to get all the record groups dynmically so i won't have to explicitly call the
      Delete_Group('RG_APPR_TYPE_CDE_LIST');
      Delete_Group('RG_DRV_APPR_TYPE_CDE_LIST');
      Delete_Group('RG_PROJ_MODE_CDE_LIST');
      ...one by one. is there any other workaround? i appreciate any help on this. thanks.

    is there any other workaroundNo.

  • How to populate a poplist through a record group?

    Dear People,
    I use forms along with 10g.I have create a record group RG9 with query SELECT DNAME FROM DEPT;.now how to populate it to a list item?.i tried it using a the following code in When_new_form_instance trigger.The code is as follows,
    declare
    a number;
    begin
         a:=populate_group('RG9');
                   add_list_element('block3.list6',1,a,a);
    end;It doesnt throw me any error.but unable to populate data into the list. pls do help me to make corrections in the above code.
    With Regards
    VIDS

    SELECT DNAME,TO_CHAR(DEPTNO) FROM DEPT;This is the format of the query required to populate a list item,
    where the first column value is the one that appears in the list of values
    and the second column value is the one that will get saved in the database or that will be the value of the list item.
    Just try using follwoing in WHEN-VALIDATE-ITEM trigger for list6
    message (:block3.list6)
    The message will be deptno and not the dname
    now values has been populated in the list.but can u explain me whats wrong with my previous query?
    SELECT DNAME FROM DEPT;why dint it help me to pop values in the list?.This query has just one column not as required.
    Hope its clear.

Maybe you are looking for

  • Ipod can not be updated. Disk could not be read or written to..

    One fine day, all contents on the Nano disappeared. Capacity 1.8 G, available 172 MB. Cannot update. Reloaded all software. Running 1.1. Haven't a clue what to do next. Had to dig out my CD player. Disk problem? If so, how did it update the OS? Any s

  • Missing Timecard Report output in Excel

    Hi all, Can you help me in extracting the missing timecard report output in excel format. Is it possible to achieve thru' configuration like setting up some profile option? I have tried using vieweroptions: Application for text to 11i Excel but it is

  • Create DVD?

    I've downloaded video from my digital camera, and used QuickTime Pro 7 to edit videos and use the edited clips to create one movie. Now I want to burn a DVD, but can't locate any instructions. I see how to prep for upload to internet (like you tube,

  • Date format conversion from MySQL

    Hi my dear friends. I have some problem with the date format. I am using MySQL version 3, LabSQL and Labview7.1 In the MySQL, the date format reads as 2006-12-18 14-51-25 while, when querying in Labview, it reads 18-Dec-06 14-51-25. So when using thi

  • From this morning, my app store is not loading on my Iphone5?I am new to iphone. What do i do?

    I am on the vodafone network in Australia and my app store on my iphone5 is not loading. The day before, i had downloaded some apps and was very surprised to see that the app store no longer loaded today. This is my first iphone and i dont have any e