Approach - createrow()/InsertRow() confusion..??

Requirement scenario –
Create or update employee record (based on empEO/VO)
Within the emp details page there is a region attached to custom db table which asks for adding dependants. It’s a simple table, with “add new row” button. This is attached to depEO /depVO
While updating emp record and adding a new dependant, creation of new row works correctly, but while creating new emp record, it gives me error – execution of VO failed due to parameters not bound properly.
- currently I am catching button action in PFR. should I also call addnewrow method from processsrequest ?
- while in update mode – I execute the depVO to display the already existing dependants.do I need to execute the VO in create emp mode too ?I tried it , but it gives me error.
- when adding a row to dependant table in create emp mode , if there are more than one dependants, then do I save them one by one to database, or can I do batch commit…
- also, while creating a new employee record, should i save the emp record first and then add dependants to it, or can I add dependants to new emp record and then save the emp + dependant at one save button click ?
Im confused, as the error doesn’t help me correct my logic.
I am on version 11.5.10. Reading the jdev guide, I am confused as they have explained several ways to do it.
For example – VO that does not query data DB,
Or transactional VO
Or VO that performs db quries
It’s also mentioned that call the insertRow/createRow method from processRequest of the CO.
Can someone tell how i should apporach the requirement ?
Thanks a ton in advance.

Hi OAF-Dev,
I think dependents can be added to an Employee, I think when you creates new record at that time you are not getting the foreign key value(this is my doubt).
Please share other details like how you are relating dependent with employee.
Regards,
Reetesh Sharma

Similar Messages

  • CreateRow,insertRow, removeCurrentRow and findByKey odities in VIewObject

    I have a view object, which has rowsetlistener and i use createRow, insertRow, commit and findByKey and there are problems. The Key of the viewobject consists of to attributes. And Here is what I do:
    ViewObject vo = panelBinding.getApplicationModule().findViewObject("AnyView");
    vo.addListener(new RowSetListener(){ //Adding listener that will be notified on isert and delete events
    public void rowInserted(InsertEvent e){
    System.out.println("Inserted row with key = "+e.getRow().getKey());
    public void rowDeleted(DeleteEvent e){
    System.out.println("Deleted row with key = "+e.getRow().getKey());
    public void navigated(NavigationEvent e){}
    public void rowUpdated(UpdateEvent e){}
    public void rangeScrolled(ScrollEvent e){}
    public void rangeRefreshed(RangeRefreshEvent e){}
    Key k = new Key(new Number[]{new Number(1),new Number(1)}); //A Full Key That will identify inserted row
    System.out.println("Found Row Count at the beginning is "+vo.findByKey(k,-1).length); //At The Beginning there are no rows with such key
    Row r = vo.createRow();
    r.setAttribute("Attr1","1"); //Set the fisrt Attr of the Key
    r.setAttribute("Attr2","1"); //Set The Second Attr of the Key
    r.setAttribute("AnyOtherAttr","AnyData");
    System.out.println("Found Row Count after set of attributes is "+vo.findByKey(k,-1).length); //No rows as sais javadoc
    vo.insertRow(r); //The Listener has been notified about the row insertion as expected
    System.out.println("Found Row Count after insertion of the row is "+vo.findByKey(k,-1).length); //One Row as should be
    vo.getApplicationModule().getTransaction().commit();
    // The Following 3 Problems will disappear if I use:
    // vo.executeQuery();
    // But if I have a lot of rows in a vo this is not a good idea.
    Row[] rows = vo.findByKey(k,-1); //THE PROBLEM #1: findByKey AFTER COMMIT/POST notifies the listener about the row insertion AGAIN ???
    System.out.println("Found Row Count after commit/post is "+vo.findByKey(k,-1).length); //THE PROBLEM #2: TWO ROWS ???
    rows = vo.findByKey(k,-1);
    rows[0].remove(); //THE PROBLEM #3: The Listener has been nitified twice about the removal of the row ???
    System.out.println("Found Row Count after remove is "+vo.findByKey(k,-1).length); //And 0 rows as expected
    vo.getApplicationModule().getTransaction().commit();
    Any suggestions or thoughts will be appreciated.
    Thanks

    David:
    This is a bug. I filed a bug and will fix it ASAP.
    Thank you for reporting it.
    A workaround would be to call executeQuery(). I know it's not ideal, but that's the easiest workaround I can think of.
    Thanks again.
    Sung

  • [Solved] ADF BC - PL/SQL block 6 times faster than CreateRow/InsertRow

    THE ENVIRONMENT:
    - JDeveloper 10.1.2.0.0
    - Oracle 9.2.0.8.0
    THE PROBLEM:
    I found one of my pages in an ADF BC Web Application to be quite slow. After some profiling, I found a significant bottleneck in a loop which inserts approximately 270 rows in a table (only inserts into the table using insertRow). Would there be an improvement if we rewrite the transaction in PL/SQL code? To find out, I came up with the following simple test case:
    1) Table
    create table TES_FSOLICFONDO
    ID_SOLICITUD NUMBER not null,
    A_PAIS VARCHAR2(2),
    C_IDEMPRESA NUMBER,
    A_CODMONEDA VARCHAR2(3),
    C_LOCAL NUMBER,
    D_FECSOLICIT DATE,
    C_IDBILLMONE NUMBER not null,
    M_MONTO NUMBER,
    A_CREADOPOR VARCHAR2(30),
    D_CREACION DATE,
    A_MODIFPOR VARCHAR2(30),
    D_MODIF DATE);
    alter table TES_FSOLICFONDO
    add primary key (ID_SOLICITUD);
    create index IND_TES_FSOLICFONDO_01 on TES_FSOLICFONDO (C_IDBILLMONE, C_LOCAL, D_FECSOLICIT);
    create index IND_TES_FSOLICFONDO_02 on TES_FSOLICFONDO (C_IDEMPRESA, A_CODMONEDA, C_LOCAL, D_FECSOLICIT,C_IDBILLMONE);
    2) Sequence
    create sequence SEQ_TES_FSOLICFONDO
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 1
    increment by 1
    cache 2;
    3) ADF BC
    - Create a Business Components Project with a BC package
    - Create new Entity Object based on the previous table, with standard wizard settings (this will be named TesFsolicfondo)
    - Create new View Object linked to previous Entity Object, with standard wizard settings (this will be named TesFsolicfondoVO).
    - Create an Application Module named AMTESAsignaSuperAvance, and include the previous View Object in the Data Model
    4) The test case
    - Create a test() method in the AMTESAsignaSuperAvanceImpl class as follows:
    public void test() throws Exception
    TesFsolicfondoVOImpl solVO = getTesFsolicfondoVO1();
    TesFsolicfondoVORowImpl r = null;
    for (int i = 0; i < 270; i++)
    r = (TesFsolicfondoVORowImpl) solVO.createRow();
    Sequence seq = new Sequence("SEQ_TES_FSOLICFONDO",this);
    r.setIdSolicitud(new Number(seq.getData().toString()));
    r.setAPais("PE");
    r.setCIdempresa(new Number(637292));
    r.setACodmoneda("USD");
    r.setCLocal(new Number(388));
    r.setDFecsolicit(new Date("2006-04-07"));
    r.setCIdbillmone(new Number(116));
    r.setMMonto(new Number(0));
    r.setACreadopor("10000003480");
    r.setDCreacion(new Date("2006-04-03"));
    solVO.insertRow(r);
    getTransaction().commit();
    - Create a test.jsp page including the following code within a scriptlet:
    AMTESAsignaSuperAvanceImpl am = null;
    try
    am = (AMTESAsignaSuperAvanceImpl) Configuration.createRootApplicationModule("cl.falabella.fpi.tes.bc.AMTESAsignaSuperAvance","AMTESAsignaSuperAvanceLocal");
    am.test();
    catch (Exception e)
    am.getTransaction().rollback();
    finally
    Configuration.releaseRootApplicationModule(am,true);
    - Create an equivalent PL/SQL block as follows:
    BEGIN
    FOR I IN 1..270
    LOOP
    INSERT INTO TES_FSOLICFONDO (ID_SOLICITUD, A_PAIS, C_IDEMPRESA, A_CODMONEDA, C_LOCAL,
    D_FECSOLICIT, C_IDBILLMONE, M_MONTO, A_CREADOPOR, D_CREACION)
    VALUES (SEQ_TES_FSOLICFONDO.NEXTVAL, 'PE', 637292, 'USD', 388, TO_DATE('07-04-2006', 'DD-MM-YYYY'), 116, 0,
    '10000003480', TO_DATE('03-04-2006', 'DD-MM-YYYY'));
    END LOOP;
    COMMIT;
    END;
    THE RESULTS:
    The PL/SQL block was executed on a standard SQL* Plus window, and the test() method within the AM was called from the test.jsp page.
    The PL/SQL block takes 1125 milliseconds in my setup, the test() method within the AM takes 6017 milliseconds, so PL/SQL is about 6 times faster in this test.
    THE QUESTION:
    Is this supposed to be this way? I want to avoid creating a PL/SQL package, I would rather use the ADF BC framework throughout the application. Would someone kindly point out any configuration issues I may have missed that will improve the BC performance?

    Hello Jan,
    Thanks for the tip, good to be born again as a name instead of a number.
    I omitted the code used for timing, but here goes:
    test.jsp:
    java.util.Date d1 = new java.util.Date();
    AMTESAsignaSuperAvanceImpl am = null;
    try
    am = (AMTESAsignaSuperAvanceImpl) Configuration.createRootApplicationModule("cl.falabella.fpi.tes.bc.AMTESAsignaSuperAvance","AMTESAsignaSuperAvanceLocal");
    am.test();
    catch (Exception e)
    am.getTransaction().rollback();
    finally
    Configuration.releaseRootApplicationModule(am,true);
    java.util.Date d2 = new java.util.Date();
    System.out.println("Time (ms) = " + Double.toString(d2.getTime()-d1.getTime()));
    PL/SQL:
    I use a tool called "PL/SQL Developer". It has a "Command Window" with a user interface which is extremely similar to SQL* Plus. After running the PL/SQL code, it reported "PL/SQL procedure successfully completed in 1.125 seconds".
    From the tool documentation:
    The Command Window
    The Command Window allows you to execute SQL scripts in a way that is very much similar to Oracle's SQL*Plus. To create a Command Window press the New button on the toolbar or select the New item in the File menu. A Command Window is created and you can type SQL and SQL*Plus commands like you are used to, without leaving PL/SQL Developer’s IDE.
    Regards
    Rodrigo

  • ADF BC, how implements business rules?

    Hi.
    I am new in oracles technology. Please help me understand how implements business rules.
    For example: I have two tables operation(id,code) and operation_item(id, operation_id, code). I create entities objects for it: OperationEntity, OperationItemEntity and association: OperationItemToOperation. Then create entity-based view object OperationById which have bind parameter id for find operation by id. I also create entity-based view object OperationItem and view link OperationItemToOperationLink.
    My ApplicationModule contains OperationById and OperationItem via OperationItemToOperationLink
    I want implements "clone" method at OperationById view for current row. This method create copy selected row from operation table and copy all rows from operation_item table where operation_item.operation_id = operation.id.
    I add method createCurrentRowClone to OperationById:
    public void createCurrentRowClone() {
    OperationByIdRowImpl currentRow =
    (OperationByIdRowImpl ) getCurrentRow();
    OperationByIdRowImpl newRow = (OperationByIdRowImpl ) createRow();
    insertRow(newRow);
    newRow.setAttributes(currentRow);
    //TODO create copy for all rows from OperationItem
    //??? how get OperationItem instance
    and I add method clone to OperationItem:
    public void createClone {
    // for all row from OperationItem create clone
    but I don't understand how get OperationItem instance in OperationById scope. I have method getOperationItems() in OperationByIdRowImpl class which return RowIterator, and it give me instances of OperationItemRowImpl class, but not OperationItem with rows where operation_item.operation_id = operation.id
    Thanks in advance

    For realizations "clone" method which make copy for current row from OPERATION table and all rows from OPERATION_ITEM table where
    operation_item.operation_id = operation.id I moved realisation business logic from View Object to Entity.
    For it enough:
    1) entities objects: OperationEntity, OperationItemEntity;
    2) association for this entities: OperationItemToOperation;
    3) entity-based view object: OperationById which have bind parameter "id" for find operation by ID;
    4) application module: ApplicationModule;
    I add method createCurrentRowClone to OperationByIdImpl class. It just call createClone method for current row:
    public void createCurrentRowClone() {   
    OperationByIdRowImpl currentRow = (OperationById) getCurrentRow();
    currentRow.createClone();
    method createClone in OperationByIdRowImpl class call createClone method from entity layer:
    public void createClone() {
    getOperationEntity().createClone();
    method createClone in OperationEntityImpl class make new row and call createClone for all row from OperationItemEntity:
    public void createClone() {
    OperationEntityImpl newRow = (OperationEntityImpl) getDefinitionObject().createInstance2(
    getDBTransaction(),null);
    newAtm.setCode(getCode());
    //create copy for all rows atm_operation
    RowIterator itemIterator = getOperationItemEntities();
    while ( itemIterator .hasNext() ) {
    OperationItemEntity itemRow = (OperationItemEntity ) itemIterator.next();
    itemRow.createClone(newRow);
    and finally method createClone(OperationEntityImpl operation) in OperationItemEntityImpl class make new row in OPERATION_ITEM table
    public void createClone(OperationEntityImpl operation) {
    OperationItemEntityImpl newItem = (OperationItemEntityImpl) getDefinitionObject().createInstance2(
    getDBTransaction(), operation);
    newItem.setCode(getCode());
    If you have another solution, please post it here.

  • InsertRowAtIndex

    Hello,
    I have a business requirement to add rows in a UIX table that is databound to a BC4J Viewobject. When we press the addRow button in the table, we write the code to do the business logic.
    We tried the following 2 approaches
    1. insertRow method on the viewobject: This inserts the record before the current row and promptly send the recordadded and navigated events to the table. The table now refreshes after adding the new record. But, the new record is not the last record, but last but one :-(
    2. insertRowAtRangeIndex: Here we get the intended behavior. the record is added at the last of the record set. But the table is not sent the events for record addition and navigation. That means, even though the viewobject contains the new record, we do not see the record in the UIX table unless we do an explicit clicking on navigation links( next 20) on the table.
    any suggestions ?
    Thanks and Regards,
    Ramna

    Ramna:
    Hello,
    I have a business requirement to add rows in a UIX
    table that is databound to a BC4J Viewobject. When we
    press the addRow button in the table, we write the
    code to do the business logic.
    We tried the following 2 approaches
    1. insertRow method on the viewobject: This inserts
    the record before the current row and promptly send
    the recordadded and navigated events to the table.
    The table now refreshes after adding the new record.
    But, the new record is not the last record, but last
    but one :-(
    2. insertRowAtRangeIndex: Here we get the intended
    behavior. the record is added at the last of the
    record set. But the table is not sent the events for
    record addition and navigation. That means, even
    though the viewobject contains the new record, we do
    not see the record in the UIX table unless we do an
    explicit clicking on navigation links( next 20) on
    the table.
    insertRowAtRangeIndex does fire rowInserted event. It does not change currency ==> You wouldn't get navigated event. Are you saying that the UIX table only refreshes on navigated() event and not on rowInserted() event? That doesn't sound right (I'm not familiar with UIX table, so I would have to defer that question to someone who's familiar with UIX stuff).
    BTW, are you using UIX-JSP or UIX-XML?
    Thanks.
    Sung

  • Want to insert multiple rows in table using EO

    Hi,
    I have one requirement where I need to insert multiple rows at once in table lets say Previous Employers.
    What I am trying to do is I have created few textinputboxes and getting there values and putting in HashMap.
    And manually inserting the rows to EO. I am not getting any error but the data is not populating in Table.
    here is the code snap ...please suggest!!
    public void updateKoelHrPreEmpVO(HashMap map)
    OADBTransaction txn = getOADBTransaction();
    //HashMap map = new HashMap();
    KoelHrPreEmpVOImpl empVO = getKoelHrPreEmpVO1();
    KoelHrPreEmpVORowImpl fetchedRow = null;
    int fetchedRowCount = empVO.getFetchedRowCount();
    RowSetIterator deleteIter = empVO.createRowSetIterator("deleteIter");
    if (fetchedRowCount > 0)
    if(txn.isLoggingEnabled(2))
    txn.writeDiagnostics(this,"Removing rows from KoelHrPreEmpVO :: Current count :: " + fetchedRowCount ,2);
    //System.out.println("Removing rows from KoelHrPreEmpVO :: Current count :: " +fetchedRowCount);
    deleteIter.setRangeStart(0);
    deleteIter.setRangeSize(fetchedRowCount-1);
    for (int i = 0; i < fetchedRowCount; i++)
    //System.out.println("Removing Row :: "+i);
    if(txn.isLoggingEnabled(2))
    txn.writeDiagnostics(this,"Removing row :: " + i ,2);
    fetchedRow = (KoelHrPreEmpVORowImpl)deleteIter.getRowAtRangeIndex(i);
    fetchedRow.remove();
    getTransaction().commit();
    deleteIter.closeRowSetIterator();
    if(empVO.getRowCount() == 0) {
    Row row = null;
    KoelHrPreEmpVORowImpl insertRow = null;
    empVO.first();
    if(txn.isLoggingEnabled(2))
    txn.writeDiagnostics(this,"Inserting rows to KoelHrPreEmpVO :: " ,2);
    try
    for(int i=1; i<=4; i++) {
    insertRow = (KoelHrPreEmpVORowImpl)empVO.createRow();
    insertRow.setEmployeeNumber(map.get("EmployeeNumber").toString());
    insertRow.setPersonId(new Number(map.get("PersonId").toString()));
    insertRow.setEmployer(map.get("Employer"+i+"").toString());
    insertRow.setStartDate(Date.toDate(map.get("StartDate"+i+"").toString()));
    insertRow.setEndDate(Date.toDate(map.get("EndDate"+i+"").toString()));
    insertRow.setEmployer(map.get("Designation"+i+"").toString());
    empVO.insertRow(insertRow);
    insertRow.setNewRowState(Row.STATUS_INITIALIZED);
    getTransaction().commit();
    catch(SQLException ex)
    ex.printStackTrace();
    Regards,
    Mukesh

    1. Pls check if the create() methos in EOImpl is in place, setting the primary key.
    2. Even though we insert values in this fashion , it only gets inserted if user performs any action, like manipulates some column. Pls check if there is any mechansm to make the row dirty ( as if done by user).
    Srikanth

  • Formula Account

    Hello everyone,
    I am working with BPC 7.0 NW.
    I need to use the attribute formula in the dimension accounts.
    What I get is this:
    ACCOUNTA = ACCOUNT1 + ACCOUNT2
    ACCOUNTB = ACCOUNT3+ ACCOUNT4
    ACCOUNTC = ACCOUNTA - ACCOUNTB
    ACCOUNTA AND ACCOUNTB are correct.
    ACCOUNTC usually is 0 or the value of accounts.
    I tried to use the attribute solveorder but the result does not change.
    If I use ACCOUNTC = (ACCOUNT1 + ACCOUNT2) - (ACCOUNT3+ ACCOUNT4)   get the correct result but I have formulas that exceed 255 characters.
    Any ideas?
    Thank you very much
    Simone

    Simone,
    You cannot have a dimension member formula that references a member that is calculated itself by a member formula. So, your formula for ACCOUNTC will not work as you have it set up.
    You have a few options:
    1. Write out the entire formula. This works for short formulas. There is a way to get around the limitation on length by using an MDX library as Nilanjan points out. I don't believe you can have a function that takes arguments in the NW version (possible this has been fixed), but you can hard-code the accounts to be added up.
    One additional step that you must do is to define the syslib file in the second tab of your dimension member sheet. You will have a line that reads something like *SYSLIB(mdxfilename.lgf). Frankly I forget if it is *SYSLIB or *INCLUDE, so you may need to try them both. You can then put "functionname()" into your dimension member formula and it will run the calculation in the function. Maybe someone else can weigh in with the exact syntax. For some reason I seem to remember that Dries is the expert on this, so maybe this will get his attention
    2. Pre-calculate the lower-level values. You could use either script logic or account transformation business rules to pre-calculate accounts ACCOUNTA and ACCOUNTB. These pre-calculations could either be run in batch (preferably) or in your DEFAULT.LGF file, which would recalculate whenever data was updated.
    3. Use a hierarchy. If all of the accounts needed in the formula for ACCOUNTC are additive, then you could use a hierarchy to sum them up (PARENTH1 or a secondary hierarchy). Hierarchy nodes can be used in dimension member formulas, so if you did this your current ACCOUNTC formula would become valid.
    If possible, I recommend going with the second or third approaches, as the MDX logic library approach can be confusing to administrators unless you plan to use it extensively or you are confident that you can document it clearly and in a way that is easily found and referenced in the future. It is easy to forget where these functions are maintained.
    Ethan

  • Confuse on PR & PO data migration approach new to MM module

    Hi All,
    I'm pretty confuse with the PO data migration approach when it comes to PO is GR or partial GR or GR&IR. I'm hoping that someone can enlighten me. i understand that we typically don't migrate PO when it is GR & IR, FI team usually will bring over to the new system as an vendor open item in AP. How about the PR or PO which have gone through or half release strategy? What is the follow up process?  I have created a criteria table below. How Could someone point me in the right direction? Thanks in advance.
    PR
    Criteria
    Data migration required
    Notes
    Open and Released
    Y
    Open and not Released
    Y
    Flag for Deletion
    N
    Flag for Block
    Y
    PO
    Criteria
    Data migration required
    Notes
    Open and Released
    Y
    Open and not Released
    Y
    GR but no IR
    GR & IR
    N
    AP will bring over as open item
    Flag for Deletion
    N
    Flag for Block
    Y
    Partial
    Y
    For partial GR to recreate PO only with missing GR quantity
    Regards,
    John

    Hi John,
    The approach that i have followed recently is that we have considered PO as the base document and converted other documents based on the PO condition. This means you first need to see if the PO is to be converted or not. Then you can proceed to convert the related documents like PR, Agreement, Info record, Source list, etc.
    Also open qty for PO should be considered for Material and Service line items both.
    Once a GR/SES is created, it gets updated in the PO history table EKBE with its related transaction/event type.i.e. EKBE-VGABE = 1 for GR and 9 for SES. Quantity and value also gets updated in case of material and services. You can compare this consumed quantities with PO quantity.
    Please see below from SCN and let me know if you need more info on PR or PO conversion.
    Purchase Requisition Conversion Strategy
    Thanks,
    Akash

  • How to approach this scenario (Many to Many). A bit confused

    Hi all,
    I have a scenario where I am confused and am looking for some guidance. Let me explain the scenario I have.
    I have an Item Table (Which will be used to create Item Dimension) :
    ItemID
    ItemName
    Item1
    ItemName1
    Item2
    ItemName2
    Item3
    ItemName3
    Item4
    ItemName4
    I have a Promo Table (Which will be used to create Promo Dimension) :
    PromoID
    PromoName
    1
    Promo1
    2
    Promo2
    3
    Promo3
    4
    Promo4
    I have a Promo Lines table (This is lines for promotion but here is the confusion):
    PromoID
    LineNum
    ItemID
    Activity
    1
    1
    Item1
    Activity2
    1
    2
    Item2
    Activity1
    1
    3
    Item3
    Activity3
    2
    1
    Item2
    Activity2
    3
    1
    Item3
    Activity1
    3
    2
    Item1
    Activity3
    4
    1
    Item2
    Activity2
    4
    2
    Item1
    Activity1
    I have a Transaction table "Sales Order Trans Table". This will be used to create "SalesOrderLine" Measure group (Fact) :
    SalesOrderNumber
    SalesAmount
    ItemId
    SO1
    100
    Item1
    SO1
    234
    Item2
    SO2
    345
    Item3
    SO2
    456
    Item1
    SO2
    567
    Item2
    SO3
    234
    Item2
    SO3
    345
    Item1
    SO3
    343
    Item3
    SO4
    234
    Item2
    SO4
    765
    Item1
    SO5
    567
    Item3
    SO5
    345
    Item2
    SO5
    234
    Item1
    Now in my cube I need these :
    Item Dimension :
    ItemID --> ItemID column of Item Table
    ItemName --> ItemName column of Item Table
    SalesOrderLines Measure Group
    Sales Amount --> Sum on SalesAmount column of Sales Order Trans table
    Sales Lines Count --> Count of rows of Sales Order Trans Table
    Promo Dimension:
    PromoID -->  PromoID of Promo Table
    PromoName --> PromoName of Promo table
    Activity --> Activity of Promo Lines Table
    Solution I have thought
    The Item dimension is straight forward and relation with Measure group is a regular on ItemId --> ItemId. So no issues here
    The Promo dimension  can be made easily from Promo table with promo Id as Key column. The relationship with fact is confusing me.
    For the Promo Dimension, Since it is many to many relationship between Promo and Item , I initially thought of using the PromoLines Table as a Fact less fact Measure group and using that as intermediary measure group in a Many-to-Many Dimensional usage between
    the Promo dimension and SalesOrderLines Measure group.
    The problem is the Activity attribute that is required on Promo dimension. if I use the PromotionLines in the dimension, I will get the activity, but what will I keep as key attribute(As One attribute is related to one or many lines).
    I am very confused with this. Any thoughts on how to resolve this or any suggestion will be very helpful.
    Thanks,
    Girija Shankar
    Please mark responses as answered if it helped you.. This helps others... - Girija Shankar Beuria

    You are on the right track. Create the SalesOrderLine measure group. Create the Item dimension. This will be your intermediate dimension. Create a measure group off PromotionLines with a hidden count measure. This is your intermediate measure group. Create
    a dimension off the Activity column (that's the key) and relate that dimension with a regular relationship to the PromotionLines measure group. This will be the first many-to-many dimension in SalesOrderLine. Create a Promo dimension with a regular relationship
    to the PromotionLines measure group and a many-to-many relationship to SalesOrderLine. This is the second many-to-many. Both m2m dimensions resolve through the same intermediate measure group.
    http://artisconsulting.com/Blogs/GregGalloway

  • Confused approach to emails

    Yesterday I received the below email.  Why has Apple introduced so much confusion into the email process.  The reason I signed up for a ***@mac.com about 8 years ago is because this is the email I wanted.  I do not now want **@me.com nor **@icloud.com.  It comes across as totally confused and offers no coherence to the end user.  In addition it confuses people you are sending emails to as someitmes they receive messages from **@me.com and other times it comes from **@mac.com. 
    The introduction of iCloud and mobile seems to make life quite complicated now!  So my quetstion is, can you delete the **@me.com and **.icloud.com email addresses? 
    All new iCloud Mail accounts now come with an @icloud.com email address. As an existing user, we'd like to offer you this new address as well. We have reserved [email protected] for you, and you can now use this address with your iOS devices and computers by following these simple instructions.
    If you prefer, you can continue to use your current email address just as you always have.
    No matter which address you use, you'll continue to receive all your mail, whether it's sent to your @me.com, @mac.com, or @icloud.com address.

    You can't delete these addresses. Just use @mac.com and ignore the others. The tech note linked to in the email you received:
    http://support.apple.com/kb/HT5441
    tells you how to set up @icloud.com as a default 'from' address and of course the same instructions can be applied to @mac.com.

  • Confused how to set-up a PC & laptop with Cisco WRVS4400N VPN for home use

    Just bought a new PC and laptop and was recommended by (CDW) to use a Cisco WRVS4400N to set up the VPN.
    For home use, only the PC and laptop, both running Windows 7.  I use Comcast as my ISP.
    The mountains of docs confuses me to no end, can anyone simplify this for me.  I look at all the details and do not know where to start.
    In short,
    (1) configure router to recognize my PC and Comcast, and I guess the laptop.
    (2) configure laptop to go wireless and communicate with PC.
    Any assistance would be much appreciated.
    Thanks,
    Terry

    For a very small office and a minimum of admin and tech know how, one approach i'd suggest is to not worry about user id collisions at all. any time anyone wants to use a mac you just set them up as a user, using consistent names/passwords.
    Have a "Work" volume on each mac that has "ignore ownership on this volume" ticked. that way UID collisions aren't important.
    You can make a Desktop folder on the Work volume and make a SYMBOLIC LINK from every user's home that replaces their desktop with the desktop folder on the Work volume.
    Make it known that the user's home is for personal stuff ONLY, and the Work volume (inc the desktop) is where work in progress lives.
    At a later date with some confidence in your network and your admin skills you could impose consistent UIDs using an OD master

  • Customization approach as per best practice for SharePoint Online

    Hi All,
    I am working for a customer for customization on SharePoint Online. I need to create following customization.
    For each department one site collection is required to be created. There will be 15 site collections.
    Each site collection will have couple of team sites.
    Each team will have couple of document libraries and customer list.
    Custom lists and document libraries will have custom views.
    MaterPage and Layout will be customized to apply the UI Branding.
    Customer wants that configuration management should be as per the Microsoft best practice. I am wondering what the approach I should use is.
    Should I create visual studio solution, but since there are 15 different site collections are required to be created I believe sandboxed solution will not be feasible sine sandboxed solution are scoped with site collection.
    I also believe if I do create visual studio solution that development efforts will be extensive.
    I am not sure whether it is feasible, use the SharePoint Designer to apply this customization but I am confused in this case. If it is possible then how I will promote the customization to production.
    I am also confused in case SharePoint online how I will keep production and development environment separate? What is the best practice around it?
    Regards 
    Unrest Spirit
    Regards Restless Spirit

    Hi,
    You can create Custom Master page using SharePoint Designer. And for first four points from creating Sitecollection to creating views you can create a hierarchy of objects in site using csv file and then create Powershell script to create sitecollection,
    team site, list/libraries and view by reading csv files.
    http://blogs.technet.com/b/fromthefield/archive/2013/08/22/create-a-site-structure-using-powershell.aspx
    http://blog.falchionconsulting.com/index.php/2009/12/creating-a-sharepoint-2010-site-structure-using-powershell/
    Details about SharePoint Online Powershell management shellcan be found on below links:
    http://technet.microsoft.com/en-us/library/fp161362%28v=office.15%29.aspx
    https://support.office.com/en-GB/article/Introduction-to-the-SharePoint-Online-Management-Shell-c16941c3-19b4-4710-8056-34c034493429
    Best Regards,
    Brij K

  • How can I see changes in table with insertrow();postchanges()without commit

    Hi friends;
    I use jdeveloper 10.1.3.1 with jheadstart 10.1.3.1.
    I create two view object.In the first page I create table with one view object.
    In the second page I create table (with tableselectmany) with other view.
    I select many rows in second page and in the managed bean,
    I insert selectted rows atributes to first pages tables attributes.
    I use this code.
    public String commandbuttonaction(){
    CoreTable table = this.getTable1();
    Set rowSet = table.getSelectionState().getKeySet();
    Iterator rowSetIter = rowSet.iterator();
    BindingContainer bindings = getBindings();
    DCIteratorBinding pr_dcib = (DCIteratorBinding)
    bindings.get("DeptIterator");
    int i=206;
    while (rowSetIter.hasNext()){
    Key key = (Key) rowSetIter.next();
    pr_dcib.setCurrentRowWithKey(key.toStringFormat(true));
    RowImpl prRow = (RowImpl) pr_dcib.getCurrentRow();
    String AM="model.AppModule";
    String CF="AppModuleLocal";
    ApplicationModule empSvc = Configuration.createRootApplicationModule(AM, CF);
    ViewObject emps = empSvc.findViewObject("EmpsView1");
    Row newEmp = emps.createRow();
    newEmp.setAttribute("Manager",new Number(1));
    newEmp.setAttribute("Department",new Number(1));
    newEmp.setAttribute("Depno",new Number(3));
    emps.insertRow(newEmp);
    try {
    newEmp.validate();
    catch (Exception ex) {
    System.out.println("validate catch");
    try {
    empSvc.getTransaction().postChanges();
    catch (Exception ex) {
    System.out.println("post catch");
    Configuration.releaseRootApplicationModule(empSvc,true);
    i=i+1;
    In this code I only postchanges() in first view and dont want to commit.
    But I cant see changes row in the page .If I press save I see transaction completed succesfully message.
    But in database not insertted any rows.
    If I write commit() after postchanges() code I see rows in the table .But I dont want to commit.Only post
    my changes and if necessary I press save button in page.
    How can I see changes in the page without commit???Thanks for all....

    You should NEVER use statements like this in managed beans:
    ApplicationModule empSvc = Configuration.createRootApplicationModule(AM, CF);
    This will create a separate application module instance, not shared by the the web pages. That's why you do not see the changes.
    Instead, you can use the following code:
    ApplicationModule am = (ApplicationModule)JsfUtils.getExpressionValue("#{data.MyAppModuleDataControl.dataProvider}");
    where MyAppModuleDataControl shoud be replaced with the name of your am data control.
    Steven Davelaar,
    JHeadstart Team.

  • Creating a new Column for my list Versus adding it from existing site columns, when to use each approach

    I have created a new issue tracking list inside SharePoint 2013 team site. And it comes with predefined columns, some of them are useful while the other are not . Can anyone help me in figuring out the following:-
    The list come with a field named “Assigned To”, while in my case I want a column named “Approver”. So what is preferred , to re-name the “Assumed to ”column to “Approver”, or create new field name “Approver”.?.
    If I rename an existing column, could this be overridden in any future updates for my SharePoint server?
    Now we want to add a column named “Office location”.so I need to create a new field for this. But seems there are two ways to do so either to add a new Site Column at the site level and then assign it to the list as follow :- 
    , or to directly adding a column to the list, even if it is not available in the site columns , as follow:-
    So what are the differences between the two approaches ? .if I am not wrong defining a site column will allow me to re-use it in another list , but defining the column at the list level, will allow me to add a column even if it is already defined as site
    column.
    So can anyone advice on my three questions please? Thanks

    1) 'Assigned to' has a different meaning then 'Approver' , it will be better if you create a new field for 'Approver'. Assigned to is a Site Column which has managed property for search, so it will be confusing type of data it will return from search in
    future. 
    2) Any rename of fields should not / and will not get modified in SharePoint updates. So, you can rename is without any issue since the internal name will remain the same. But its always better to create your own custom column for business use.
    3) Creating a site column or not depends upon your need, If you create a Site Column - in whole site collection you will be able to add this field in any list - It will be crawled, SharePoint will automatically provide managed property for site column and
    you will be able to get this value via search. These things will not be present in list column, you will need to do specific settings in case its required.
    If these things are needed then you can go for Site Column, usually its good to create a Site Column and use it.
    For Site Columns you can check following links 
    Introduction to Columns
    From site column to managed property - What's up with that?
    Create a site column
    get2pallav
    Please click "Propose As Answer" if this post solves your problem or "Vote As Helpful" if this post has been useful to you.
    thanks a lot for your reply it is really helpful. so as i understand that using site columns will be better in most cases, and there is not any specific reason for not using it? is this right ?
    Second question, do u mean that if i have a list column named "Serial number", then this column will not be searched ? For example if i have serial number such as "12345" and i try searching this text "12345" i will not get
    the item in my search ?
    Thanks

  • Network, security, ftp... How to approach writing file to network from LV?

    Sorry, but I don't know if this is more a LabVIEW question or a networking or ftp quesiton - how do I approach this need?
    We have a machine programmed in LabVIEW and we need it to write a text file of process run data to a folder on our network. I thought we were going to be able to see the folder as mapped to a drive on the PC that is running LV. That is, I thought we'd be able to have LV create a file called Q:\Data\ThursdayAM.txt and write into it.
    But the IT folks are telling me we can't do this because of security issues, something about what account the LV computer is running under. They have set something up so that Internet Explorer (not Windows Explorer) can navigate to the folder (with dialog boxes that ask for username and password), and they think they may be able to set up something using ftp. So, while a person standing there at the PC would be able to gain access to the folder, it wouldn't feel like accessing a disk drive feels.
    How can LabVIEW programmatically write a file under such circumstances? LV can't interact with Internet Explorer like a user, and type passwords into a dialog, can it? I see things in the help system about ftp but am not experienced with it and don't know whether to start down that path; for one thing I haven't found anything about authenticating to a network under program control with ftp.
    If there is a LabVIEW-centric approach to things like this, please point me in the right direction! Or, if this is really more a question about networking and security, please give me some tips about what to ask the IT group, as I'm not very up on networking.
    Thanks!!

    Thanks, all.
    As far as things like browser controls on the Front Panel, I think that would be solving the wrong problem. I don't want users of the machine to be able to browse folders or in any other way feel like they are using Internet Explorer. From my user's point of view, the machine will say "Your data are now available at Q:\Data\ThursdayTest.txt", and they will leave, and return to their own desktop machine, and will go grab the file and use it with whatever tools they would use to grab and read any text file on the fileserver. I think I want to programmatically get the file written to the correct folder, and am trying to understand how to do that, but the way I do it will never be visible to users. So, maybe there is something to do here, but not exactly browser controls.
    I will find out if I have the toolkits mentioned - thanks for pointing me at that.
    What they have me do with Internet Explorer to gain access to network folders is as follows: I'm already logged into the PC as a Windows user with a general purpose Guest account, and no password, and from the point of view of our network without any security credentials. I start Internet Explorer, and type an IP address 123.123.123.123 into the address bar. I get a dialog asking me for my username and password, and I enter the username and password that I would use for my desktop w/ network access or any of the other PCs on which I am already configured as a user. Now Internet Explorer shows folders for the different network locations that the network thinks I personally have rights to, and I can read, write, copy, paste, open and so forth. When I quit Internet Explorer this PC goes back to looking to me like a PC without any network features.
    The purpose of network access for this system has also been a bit confusing, but there are two main points. The big and, perhaps, only necessary thing is that my LV program can write files to a network folder, however it is that this works. It's one of the goals of this entire project to start giving users the ability to get their data without burning CDs or other sneakernet methods. As a secondary point, while I am programming and otherwise maintaining this system, I am backing up my VIs to the network, and passing things like manual docs from web sites in to the system computer for reference (its subnet does not allow internet access so I'm using my desktop machine to grab manuals and put them in the network folder), and miscellaneous other things like that. I'll probably copy this conversation into a text file when I think I have something to try, as another example. But these things are secondary conveniences - the only thing that is strictly necessary is the ability of my LV program to push data files into a network folder.

Maybe you are looking for