DML operations on multiple views

Hi all.
I can't understand updateing the data on views which created by multiple table joining. Which columns I can update and why I'm getting
ORA-01779: cannot modify a column which maps to a non key-preserved table error??
Can anybody show me explanation with examples??
Thanks...

Modifying a Join View
A modifiable join view is a view that contains more than one table in the top
level FROM clause of the SELECT statement, and that does not contain any of
the following:
- DISTINCT operator
- aggregate functions: AVG, COUNT, GLB, MAX, MIN, STDDEV, SUM, or VARIANCE
- set operations: UNION, UNION ALL, INTERSECT, MINUS
- GROUP BY or HAVING clauses
- START WITH or CONNECT BY clauses
- ROWNUM pseudocolumn
With some restrictions, you can modify views that involve joins. If a view is
a join on other nested views, then the other nested views must be mergeable
into the top level view.
The examples in following sections use the EMP and DEPT tables. These examples
work only if you explicitly define the primary and foreign keys in these
tables, or define unique indexes. Following are the appropriately constrained
table definitions for EMP and DEPT:
  CREATE TABLE dept
    deptno NUMBER(4) PRIMARY KEY,
    dname VARCHAR2(14),
    loc VARCHAR2(13)
  CREATE TABLE emp
    empno NUMBER(4) PRIMARY KEY,
    ename VARCHAR2(10),
    job varchar2(9),
    mgr NUMBER(4),
    hiredate DATE,
    sal NUMBER(7,2),
    comm NUMBER(7,2),
    deptno NUMBER(2),
    FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO)
You could also omit the primary and foreign key constraints listed above, and
create a UNIQUE INDEX on DEPT (DEPTNO) to make the following examples work.
  CREATE OR REPLACE VIEW emp_dept AS
    SELECT empno, ename, sal, e.deptno, dname, loc
    FROM EMP e, DEPT d
    WHERE e.deptno = d.deptno;
Key-Preserved Tables
The concept of a key-preserved table is fundamental to understanding the
restrictions on modifying join views. A table is key preserved if every key of
the table can also be a key of the result of the join. So, a key-preserved
table has its keys preserved through a join.
Note: It is not necessary that the key or keys of a table be selected for it
to be key preserved. It is sufficient that if the key or keys were selected,
then they would also be key(s) of the result of the join.
Attention: The key-preserving property of a table does not depend on the
actual data in the table. It is, rather, a property of its schema and not of
the data in the table. For example, if in the EMP table there was at most one
employee in each department, then DEPT.DEPTNO would be unique in the result of
a join of EMP and DEPT, but DEPT would still not be a key-preserved table.
If you SELECT all rows from EMP_DEPT view, the results are:
  SELECT * FROM EMP_DEPT;
  EMPNO ENAME  SAL DEPTNO  DNAME      LOC
   7369 SMITH   800     20 RESEARCH   DALLAS
   7499 ALLEN  1600     30 SALES      CHICAGO
   7521 WARD   1250     30 SALES      CHICAGO
   7566 JONES  2975     20 RESEARCH   DALLAS
   7654 MARTIN 1250     30 SALES      CHICAGO
   7698 BLAKE  2850     30 SALES      CHICAGO
   7782 CLARK  2695     10 ACCOUNTING NEW YORK
   7788 SCOTT  3000     20 RESEARCH   DALLAS
   7839 KING   5500     10 ACCOUNTING NEW YORK
   7844 TURNER 1500     30 SALES      CHICAGO
   7876 ADAMS  1100     20 RESEARCH   DALLAS
   7900 JAMES   950     30 SALES      CHICAGO
   7902 FORD   3000     20 RESEARCH   DALLAS
   7934 MILLER 1430     10 ACCOUNTING NEW YORK
  14 rows selected.
In this view, EMP is a key-preserved table, because EMPNO is a key of the EMP
table, and also a key of the result of the join. DEPT is not a key-preserved
table, because although DEPTNO is a key of the DEPT table, it is not a key of
the join.
DML Statements and Join Views
=============================
!!!!!! IMPORTANT !!!!!! IMPORTANT !!!!!! IMPORTANT !!!!!! IMPORTANT !!!!!!
Any UPDATE, INSERT, or DELETE statement performed on a join view can modify
only *** one *** underlying base table.
!!!!!! IMPORTANT !!!!!! IMPORTANT !!!!!! IMPORTANT !!!!!! IMPORTANT !!!!!!
UPDATE Statements:
The following example shows an UPDATE statement that successfully modifies the
EMP_DEPT view:
  UPDATE emp_dept
  SET sal = sal * 1.10
  WHERE deptno = 10;
The following UPDATE statement would be disallowed on the EMP_DEPT view:
  UPDATE emp_dept
  SET loc = 'BOSTON'
  WHERE ename = 'SMITH';
This statement fails with an ORA-01779 error (cannot modify a column which
maps to a non key-preserved table), because it attempts to modify the
underlying DEPT table, and the DEPT table is not key preserved in the EMP_DEPT
view.
In general, all modifiable columns of a join view must map to columns of a
key-preserved table. If the view is defined using the WITH CHECK OPTION
clause, then all join columns and all columns of repeated tables are not
modifiable.
So, for example, if the EMP_DEPT view were defined using WITH CHECK OPTION,
the following UPDATE statement would fail:
  UPDATE emp_dept
  SET deptno = 10
  WHERE ename = 'SMITH';
The statement fails because it is trying to update a join column.
DELETE Statements:
You can delete from a join view provided there is one and only one
key-preserved table in the join.
The following DELETE statement works on the EMP_DEPT view:
  DELETE FROM emp_dept
  WHERE ename = 'SMITH';
This DELETE statement on the EMP_DEPT view is legal because it can be
translated to a DELETE operation on the base EMP table, and because the EMP
table is the only key-preserved table in the join.
In the following view, a DELETE operation cannot be performed on the view
because both E1 and E2 are key-preserved tables:
  CREATE VIEW emp_emp AS
    SELECT e1.ename, e2.empno, deptno
    FROM emp e1, emp e2
    WHERE e1.empno = e2.empno;
If a view is defined using the WITH CHECK OPTION clause and the keypreserved
table is repeated, then rows cannot be deleted from such a view:
  CREATE VIEW emp_mgr AS
    SELECT e1.ename, e2.ename mname
    FROM emp e1, emp e2
    WHERE e1.mgr = e2.empno
    WITH CHECK OPTION;
No deletion can be performed on this view because the view involves a
self-join of the table that is key preserved.
INSERT Statements:
The following INSERT statement on the EMP_DEPT view succeeds:
  INSERT INTO emp_dept (ename, empno, deptno)
  VALUES ('KURODA', 9010, 40);
This statement works because only one key-preserved base table is being
modified (EMP), and 40 is a valid DEPTNO in the DEPT table (thus satisfying
the FOREIGN KEY integrity constraint on the EMP table).
An INSERT statement like the following would fail for the same reason that
such an UPDATE on the base EMP table would fail: the FOREIGN KEY integrity
constraint on the EMP table is violated.
  INSERT INTO emp_dept (ename, empno, deptno)
  VALUES ('KURODA', 9010, 77);
The following INSERT statement would fail with an ORA-1776 error (cannot
modify more than one base table through a view).
  INSERT INTO emp_dept (empno, ename, loc)
  VALUES (9010, 'KURODA', 'BOSTON');
An INSERT cannot, implicitly or explicitly, refer to columns of a
non-key-preserved table. If the join view is defined using the WITH CHECK
OPTION clause, then you cannot perform an INSERT to it.
Using the UPDATABLE_ COLUMNS Views
The following views can assist you when modifying join views:
View Name               Description
USER_UPDATABLE_COLUMNS  Shows all columns in all tables and views in the
                        users schema that are modifiable.
DBA_UPDATABLE_COLUMNS   Shows all columns in all tables and views in the
                        DBA schema that are modifiable.
ALL_UPDATABLE_COLUMNS   Shows all columns in all tables and views that are
                        modifiable.

Similar Messages

  • Why we cannot perform DML operations against complex views directly.

    hi
    can any tell me why we cannot perform DML operations against complex views directly.

    Hi,
    It is not easy to perform DML operations on complex views which involve more than one table as said by vissu. The reason being you may not know which columns to be updated/inserted/deleted on the base tables of the views. If it is a simple view containing a single table it is as simple as performing actions on the table.
    For further details visit this
    http://www.orafaq.com/wiki/View
    cheers
    VT

  • DML operations on Materialized view

    Hi,
    I want to know can we perform DML operations like insert/update on a materialized view?
    Thanks
    Deepak

    Thanks Michaels. I'm able to update/insert into materialized view.
    But I'm having another problem.
    My materialized view is selecting rows on group by condition, but to create a MV as updatable, it should be simple.
    SQL> create materialized view mv_utr_Link
    2 build immediate
    3 refresh force on demand
    4 for update
    5 enable query rewrite
    6 as
    7 select link_id,booking_date
    8 from t_utr
    9 where link_id=246229
    10 group by link_id,booking_date
    11 /
    from t_utr
    ERROR at line 8:
    ORA-12013: updatable materialized views must be simple enough to do fast
    refresh
    If I remove the group by clause, its allowing me to create MV, but that won't solve my problem.
    any workaround on that?
    Thanks
    Deepak

  • Retention guarantee causing multiple DML operations to fail ?

    WARNING: Enabling retention guarantee can cause multiple DML operations to fail. Use with caution.
    ^^
    From the Ora Docs (10.2) Section - Introduction to Automatic Undo Management (Undo Retention) states the above.
    This would mean that other DML operations if requiring space in undo, would therefore fail with a ORA-30036 error. Is this correct understanding ?
    If so then one way to avoid this ORA error is to have autoextend defined. ??

    From the Ora Docs (10.2) Section - Introduction to Automatic Undo Management (Undo Retention) states the above. Is it from
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/undo.htm#sthref1482
    >
    This would mean that other DML operations if requiring space in undo, would therefore fail with a ORA-30036 error. Is this correct understanding ? Not all DML operations requiring undo space would fail; only those transactions for which there is no space left in undo tablespace would fail. And yes this is one of the possible error messages that one can get.
    If so then one way to avoid this ORA error is to have autoextend defined. ??Yes but that is just pushing the brick wall two feet away. Besides, with auto extension turned on and inappropriate undo_retention parameter settings, you will have issues with disk space (if any).

  • Oracle 8i array DML operations with LOB objects

    Hi all,
    I have a question about Oracle 8i array DML operations with LOB objects, both CLOB and BLOB. With the following statement in mind:
    INSERT INTO TABLEX (COL1, COL2) VALUES (:1, :2)
    where COL1 is a NUMBER and COL2 is a BLOB, I want to use OCIs array DML functionality to insert multiple records with a single statement execution. I have allocated an array of LOB locators, initialized them with OCIDescriptorAlloc(), and bound them to COL2 where mode is set to OCI_DATA_AT_EXEC and dty (IN) is set to SQLT_BLOB. It is after this where I am getting confused.
    To send the LOB data, I have tried using the user-defined callback method, registering the callback function via OCIBindDynamic(). I initialize icbfps arguments as I would if I were dealing with RAW/LONG RAW data. When execution passes from the callback function, I encounter a memory exception within an Oracle dll. Where dvoid **indpp equals 0 and the object is of type RAW/LONG RAW, the function works fine. Is this not a valid methodology for CLOB/BLOB objects?
    Next, I tried performing piecewise INSERTs using OCIStmtGetPieceInfo() and OCIStmtSetPieceInfo(). When using this method, I use OCILobWrite() along with a user-defined callback designed for LOBs to send LOB data to the database. Here everything works fine until I exit the user-defined LOB write callback function where an OCI_INVALID_HANDLE error is encountered. I understand that both OCILobWrite() and OCIStmtExecute() return OCI_NEED_DATA. And it does seem to me that the two statements work separately rather than in conjunction with each other. So I rather doubt this is the proper methodology.
    As you can see, the correct method has evaded me. I have looked through the OCI LOB samples, but have not found any code that helps answer my question. Oracles OCI documentation has not been of much help either. So if anyone could offer some insight I would greatly appreciate it.
    Chris Simms
    [email protected]
    null

    Before 9i, you will have to first insert empty locators using EMPTY_CLOB() inlined in the SQL and using RETURNING clause to return the locator. Then use OCILobWrite to write to the locators in a streamed fashion.
    From 9i, you can actually bind a long buffer to each lob position without first inserting an empty locator, retrieving it and then writing to it.
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by CSimms:
    Hi all,
    I have a question about Oracle 8i array DML operations with LOB objects, both CLOB and BLOB. With the following statement in mind:
    INSERT INTO TABLEX (COL1, COL2) VALUES (:1, :2)
    where COL1 is a NUMBER and COL2 is a BLOB, I want to use OCIs array DML functionality to insert multiple records with a single statement execution. I have allocated an array of LOB locators, initialized them with OCIDescriptorAlloc(), and bound them to COL2 where mode is set to OCI_DATA_AT_EXEC and dty (IN) is set to SQLT_BLOB. It is after this where I am getting confused.
    To send the LOB data, I have tried using the user-defined callback method, registering the callback function via OCIBindDynamic(). I initialize icbfps arguments as I would if I were dealing with RAW/LONG RAW data. When execution passes from the callback function, I encounter a memory exception within an Oracle dll. Where dvoid **indpp equals 0 and the object is of type RAW/LONG RAW, the function works fine. Is this not a valid methodology for CLOB/BLOB objects?
    Next, I tried performing piecewise INSERTs using OCIStmtGetPieceInfo() and OCIStmtSetPieceInfo(). When using this method, I use OCILobWrite() along with a user-defined callback designed for LOBs to send LOB data to the database. Here everything works fine until I exit the user-defined LOB write callback function where an OCI_INVALID_HANDLE error is encountered. I understand that both OCILobWrite() and OCIStmtExecute() return OCI_NEED_DATA. And it does seem to me that the two statements work separately rather than in conjunction with each other. So I rather doubt this is the proper methodology.
    As you can see, the correct method has evaded me. I have looked through the OCI LOB samples, but have not found any code that helps answer my question. Oracles OCI documentation has not been of much help either. So if anyone could offer some insight I would greatly appreciate it.
    Chris Simms
    [email protected]
    <HR></BLOCKQUOTE>
    null

  • How to know which DML operation is taking place on a table within a procedu

    Hii all,
    My DB Version
    SQL> select *
      2  from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE    10.2.0.4.0      Production
    TNS for Solaris: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - ProductionHow to find what DML Operation is taking place on a particular table within a procedure??
    For suppose I've the below procedure
    create table r_dummy
    name varchar2(4000),
    emp_id number
    Create or replace procedure r_dummy_proc
    p_name          in     varchar2,
    p_emp_id     in     number
    is
    Begin
              Update r_dummy
              set name = p_name
              where emp_id = p_emp_id;
              if sql%rowcount > 1 then
                   dbms_output.put_line('Successfully updated employee name');
              end if;
    End;Here from the code I can identify that an update operation is taking place on table 'R_DUMMY'
    But how to find that without actually viewing the code?? I've hundreds of procedures in my DB and would like to find what DML is taking place on which table and in which procedure.
    Please help with some suggestions.

    And here is the solution
    with t as
      select distinct name,type,text,line
      from user_source s
      where regexp_like(s.text,'cp_ca_dtls','i')
    x as
      select name,line,text
      from
      select name,case when (regexp_instr(text,'(update)|(insert)|(delete)',1,1,1,'i') >0) and regexp_instr(ld,'CP_CA_DTLS',1,1,1,'i') >0
             then line
             else null
             end as line,text
      from
      Select   name,text,line,lead(text) over(partition by name order by line) ld
      from user_source
      where name in
          select distinct name
          from user_source
          where upper(text) like '%CP_CA_DTLS%'
      order by 1 nulls last
      )where line is not null
    select name,line,text
    from t t1
    where regexp_instr(text,'(update)|(insert)|(delete)',1,1,1,'i') >0
    and exists
         select 1
         from t t2
         where t1.name = t2.name
            and t1.type = t2.type
            and t1.line = t2.line
    union
    select name,line,text
    from x

  • Sir,how to find the last DML operations

    Hi,
    Please tell me how to find the last DML Operations at least minimum 30 queries.
    Thanks in advance,

    Shared Pool is a memory location in SGA that contains SQL Statement that are submitted to Oracle for execution. This area is common to the entire database. Its not specific to user.
    So what ever Unique SQL statement that is submitted to the SQL Engine will be available here. Shared Pool has a size limit. That is defined by the parameters SHARED_POOL_SIZE and SHARED_POOL_RESERVED_SIZE. So when the Shared pool becomes full the data needs to be removed from it. That is done in FIFO basis.
    Oracle provides a visibility to this area through dictionary view V$SQLAREA. So this view will not only contain the SQL executed by you but also by every one. Even the one executed by oracle itself.
    So in my opinion what you are asking is not possible to get. You must have some logging mechanism in your application to get this information.

  • How to Track DDL and DML Operations happening in Backend into Log Files....

    Hi I have one requirement for Tracking the DDL And DML Operation happening in Backend once the user Inserts or Updates any Table.How to Implement the same can anyone proviode the code for the same.
    Ex: I have multiple tables in my database if any user fires the DDL or DML it should make entry in the Log file as
    Name of the Table Operation Timestamp
    X Insert DD-MM-YYYY HH24:MM:SS
    Y Update DD-MM-YYYY HH24:MM:SS
    Z Delete DD-MM-YYYY HH24:MM:SS
    L Select DD-MM-YYYY HH24:MM:SS
    Is it Possible to Develop it through Procedure,Function or Package,please give me Idea,,,,,

    Please do not post same question in multiple forum. How to Track DDL and DML Operations happening in Backend into Log Files....
    What's wrong with the answers posted in the above forum ? Do you go through the "AUDIT" option as suggested in the above post by various members ?

  • Two DML operations in one FORALL?

    Hi all,
    In 11g is it possible to make two dml operations in one Forall loop?
    For example:
    SQL> create table xx_test (col1 number, col2 number, col3 number);
    Table created
    SQL> create table xx_test1 (col1 number, col2 number, col3 number);
    Table created
    SQL> insert into xx_test values(1,2,3);
    1 row inserted
    SQL>  insert into xx_test values(1,2,3);
    1 row inserted
    SQL>  insert into xx_test values(4,5,6);
    1 row inserted
    SQL>  insert into xx_test1 values(6,7,8);
    1 row inserted
    SQL> declare
      2  cursor c is select col1, col2, col3 from xx_test;
      3  type t is table of c%rowtype;
      4  v t;
      5  begin
      6   open c;
      7  loop
      8  fetch c bulk collect into v limit 1000;
      9   forall i in 1..v.count
    10   update xx_test1
    11  set col1 = v(i).col2;
    12 
    13  insert into xx_test1(col1,col2,col3) values(v(i).col1,v(i).col2,v(i).col3);
    14 
    15  exit when c%notfound;
    16  end loop;
    17 
    18  end;
    ORA-06550: line 14, column 50:
    PLS-00201: identifier 'I' must be declared
    ORA-06550: line 14, column 50:
    PLS-00201: identifier 'I' must be declared
    ORA-06550: line 14, column 48:
    PL/SQL: ORA-00904: : invalid identifier
    ORA-06550: line 14, column 4:
    PL/SQL: SQL Statement ignoredany ideas? I know that this can be achieved by processing row by row but in my case the cursor retrieves a lot of rows...
    Thanks in advance,
    Alexander.

    Stew, a bulk bind from an OCI client looks as follows:
    OCIStmtPrepare()
    OCIBindByName()/OCIBindByPos() (binding a host array)
    while some-condition loop
      fill host array
      OCIStmtExecute()  (specify the number of elements in array via the iters param)
    end loopThe statement is executed once for each array element - according to the OCI guide. So in the case of sending a 100 elements, the statement will be executed (iterated) by Oracle, a 100 times. It however is not exactly clear on how the server-side deals with this execution.
    The issue you raised with cursor execution counts, seems to be whether the statement is single statement, or single statement with nested statements.
    I have written an OCI client doing the exact same tests as were done in PL/SQL using FORALL in this thread.
    If the SQL statement executed is SQL, the cursor that is created is executed only "once" (not exactly true as multiple rows are inserted using a single row DML).
    If the statement is PL/SQL, the cursor that is created, is executed "once". So pretty much the same behaviour. However, as this statement contains "nested" SQLs (the actual DML statements), these also need to be parsed and executed as cursors. In which case you see these as being executed a 100 times (once per element in for the bind array).
    The issue is whether or not the FORALL DML statement is executed once (as it would appear from the executions column), or not?
    It would seem that there is some funky happening (some kind of call optimisation perhaps?) when Oracle deals with an array bind - as the cursor seems to be executed once. But that in fact is not the case as that cursor only inserts a single row. And multiple rows are inserted.
    E.g. simplistic example to see how many times the FORALL DML statement is executed:
    SQL> create sequence emp_id_seq
      2          start with 1
      3          increment by 1
      4          nocycle
      5          nomaxvalue;
    Sequence created.
    SQL> --// add a PL/SQL user function wrapper for the sequence
    SQL> create or replace function GetNextEmpID return number is
      2          id      number;
      3  begin
      4          select emp_id_seq.NextVal into id from dual;  --// explicit SQL statement
      5          return( id );
      6  end;
      7  /
    Function created.
    SQL>
    SQL> declare
      2          cursor c is
      3          select empno, ename, job from emp;
      4 
      5          type TBuffer is table of c%RowType;
      6          buffer  TBuffer;
      7  begin
      8          open c;
      9          loop
    10                  fetch c bulk collect into buffer limit 100;
    11 
    12                  forall i in 1..buffer.Count
    13                          insert into tab1 values( GetNextEmpID(), buffer(i).ename );
    14                  exit when c%NotFound;
    15          end loop;
    16          close c;
    17  end;
    18  /
    PL/SQL procedure successfully completed.
    SQL>
    SQL> select
      2          executions,
      3          sql_text
      4  from       v$sql
      5  where      sql_text like 'INSERT INTO TAB1%'
      6  or sql_text like 'SELECT EMP_ID_SEQ%';
    EXECUTIONS SQL_TEXT
            14 SELECT EMP_ID_SEQ.NEXTVAL FROM DUAL
             1 INSERT INTO TAB1 VALUES( GETNEXTEMPID(), :B1So the insert seems to have been executed once. However, the wrapper was called 14 times and its SQL statement was called 14 times. Once per bind array value.
    So there do seem to be some kind of optimisation on the Oracle side - however, it does not mean that the FORALL statement is not using bulk/array binding. It is. And that is what the FORALL statement is designed to do.

  • Can I select multi items in slicer by touch operation in Power View sheet ?

    Can I select multi items in slicer by touch operation in Power View sheet ?
    I want to making presentation Power View charts by touch operation.
    Mouse and Keyboard operation can select multi items in slicer by CTRL+click.
    How can I do by touch-screen ?
    Regards,
    Yoshihiro Kawabata

    In HTML5 version, you can click on the multi select button in the chart/slicer and this will allow you to select/deselect multiple items by simply clicking/touching it without CTRL+click. You can see this in action here
    http://blogs.msdn.com/b/solutions/archive/2014/03/10/global-cities-in-power-bi.aspx
    http://blogs.msdn.com/solutions

  • How can I have multiple views for my question

    When I posed a question on a forum, it indicates that I have one (1) view. How can I have multiple views on the same question?

    I believe the number you are looking at is the number of times a particular thread has been looked at (viewed) by different users. When someone else opens your question, the view count should increase.
    Justin

  • Passing one parameter to multiple views

    Is this possible?  I would like to pass one parameter, a date field, to multiple views.  I cannot use it in the record selection, because my views do a mathematical computation which returns a single value, but I only want to select the data for a single day. 
    The problem is that there are several views and I do not want to have to enter the date parameter a dozen times.

    Try to use add command and write the query like this
    select * from view where datefield={?date}
    also create another add command for the other view
    select * from view2 where datefield2={?date}
    for all the queries create the same parameter with the name {?date}
    Regards,
    Raghavendra

  • Can Numbers Display Multiple Views of the Same Table

    Hi,
    Excel and Appleworks both have a pull down tab on the vertical bar allowing multiple views into the same spreadsheet (table). Can Numbers do this?
    I have a set of calculations at the top of a spreadsheet that are based on years and years worth of data under the calculations (same column). I add data for each new event (the rows) and watch the calculations at the top of the data. Easy to do in Excel or Appleworks, but, I can't figure out how to do this in Numbers.
    Example:
    Spot1 Spot2
    Total 15 36
    Avg 5 12
    Jan 09 5 10
    Feb 09 6 20
    Mar 09 4 6
    Apr 09
    So... does Numbers allow the view "split" or multiple views that Excel and Appleworks allow?
    Thanks!
    Tom

    Question asked and responded several times:
    feature unavailable.
    For multiple views of a table there is an easy workaround as we may build a table whose every cells grab their contents from the 'master' one.
    _Go to "Provide Numbers Feedback" in the "Numbers" menu_, describe what you wish.
    Then, cross your fingers, and wait _at least_ for iWork'10
    Yvan KOENIG (VALLAURIS, France) mardi 1 septembre 2009 21:56:42

  • Date Field Displaying and DML Operations

    Hi all,
    I have an issue with displaying and updating date columns that I'm hoping someone can assist me with.
    I'm using APEX 3.0.1.
    I have a Form page with a number of fields sourced from one database table that are being populated by an Automatic Row Fetch On Load - After Header.
    The Item P6_MONTHFOR is stored as a Date datatype in the table and displayed on the form using the Date Picker (use Item Format Mask). I have a Format Mask set as 'MON-RR'. I want to ensure that the last day of the month is saved back to the database table so have been trying various calculation techniques to try and achieve this but am experiencing a variety of SQL errors!
    I have tried using LAST_DAY(:P6_MONTHFOR) in the Post Calculation Computation, or as a separate Computation After Submit.
    I have also tried having P6_MONTHFOR as a hidden column and using display Items and then trying Item calculations to then update the value of P6_MONTHFOR column prior to DML operations but to no avail.
    The only DML operations allowed on these rows are DELETE and UPDATE and I'm using an Automatic Row Processing (DML) On Submit - After Computations and Validations process to control these operations.
    Any help or suggestions greatly appreciated :-)
    Kind Regards,
    Gary.

    the function LAST_DAY is a date function, expecting a date as input. Since it is all web, the values of items are as string/varchar2. In order to use date-function, you have to first make it a date with to_date() with the format-mask (DD-MON-RR).
    In my opinion Dates are still tricky, it would be great if ApEx would have a DV() function, next to the V() and NV() functions, It is in ApExLib (of Patrick Wolf)
    Simon

  • I have been working on a book and have 418 photos already in my book.  All of a sudden I cannot access the book format to see the multiple view, spread view, or single view.  I can no longer see my book although I still see the collection with 418 photos

    I have been working on a book and have 418 photos already in my book.  All of a sudden I cannot access the book module and clicking on the multiple view, spread view, or single view does not take me back to the book I have been working on.  I can no longer see my book although I still see the collection with 418 photos under collections.  What I do see is a blank template for a new book and I can't find the unfinished book I started with 418 photos.  It is like the new empty template is somehow covering it up.  How do I get back to the book I have been working on?

    Is it possible you mistakenly clicked on a [Clear Layout] button?
    But a great hint is- Always click on the [Create a Saved Book] button, early in your new book design.
    Then you have a permanent link to the book in the Collections panel. (In addition to the standard collection of your selected images)
    Note: a Book Collection shows an icon that looks like a book.
    Every time you come back to edit the book, open the Book Module by clicking on the white arrow that appears on the end of your Book Collection title. (The title as saved)
    Re-opening a book without using the "Saved Book" option can have unpredictable results.
    A "Book" Collection is like a "Smart Collection" because anything you do to the book design, change pages, change images, etc,  is automatically updated in the Saved Book collection.

Maybe you are looking for