Is there a way to specify MVC model in a Wizard?

I am fairly new to JDeveloper so forgive me if I ask a stupid question....
In a past web project I used IBM Websphere and Visual Age developing environments. For an upcoming project I am going to be using JDeveloper but with the same basic MVC architecture with the Servlets being the Controllers and JSP as the View. In Websphere there was a wizard that we could use to create a Java Bean based on our SQL statement. Within this wizard we could also select what 'model' we wanted to use and if we chose 'Servlet model' it would not only create the Java Bean but it would also crate the corresponding Servlet, XML file and JSP. All we had to do after that was bring up the JSP in the test environment and everything was hooked together already. If it was a simple select statement then the JSP displayed the results in a table. The JSP could then be facncied up or whatever. What I want to know is if there is something similar to that in JDeveloper. I know there are wizards to create Servlets and JSPs but is there any way to specifiy a 'model' and have everything to connected up without manually going into the code and doing it? I know this is kinda cheating and being lazy but I just wanted to ask if this type of feature existed before going ahead and doing unneccessary work. So if anyone can follow what I am saying and has an answer or perhaps can direct me to some documentation, that would be much appreciated. Thanks in advance for your help!
Janis

Janis,
JDeveloper ships with a handy, built-in J2EE application framework called Business Components for Java that provides a full-functionality J2EE MVC model layer for you.
You can get a nice overview of the framework's functionality from this whitepaper:
Simplify J2EE Applications with the Oracle BC4J Framework
For a quick overview of how the BC4J framework components implement the familiar collections of value objects design pattern for you, see:
Implement Collections of Value Objects for MVC Apps with BC4J
To answer your question about the wizards, you can (in no time flat)
[list]
[*]Create a new connection in the System Navigator
[*]Create a new package of BC4J framework components ("New Business Components Package...")
[*]On the last panel of the BC4J package wizard, you can select existing tables to reverse-engineer into framework data-access and business logic components (view objects and entity objects, respectively)
[*]Then, you can use one of our other wizards to produce, for example, a BC4J+Struts application, a BC4J+JSP application, or a BC4J+JClient/Swing (rich client) application
[list]
Hope this helps.

Similar Messages

  • Is there a way to specify where an app starts on your screen

    Is there a way to specify where the JFrame will appear on your screen at runtime by default? For me it always starts on the upper left hand corner, and I want it more in the middle.

    Sorry, that should actually read:
        frame.setSize(800, 600);       
        // center the frame       
        Dimension size = frame.getSize();       
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();       
        frame.setLocation((screen.width - size.width) / 2, (screen.height - size.height) / 2);       
        frame.setVisible(true);cheers,
    Greg

  • When using the built in web server, is there a way to specify a different

    When using the built in web server, is there a way to specify a different error handler when you try to access a NON .CFM file? Right now I get the standard:
    java.io.FileNotFoundException: filename.ext
    Is there any setting to override this and direct the message to your own .cfm template? The missing template handler in the CF Admin work only for .cfm files.
    Thx

    The in-built web server for ColdFusion 8 is JRun. I am on ColdFusion 10, however, and so cannot offer hands-on advice. (CF10 replaced JRun with Tomcat.)
    My guess is that you have to modify the file {CF_ROOT}/WEB-INF/web.xml. Don't forget to create a back-up first!
    You may then proceed as follows.
    1) In the ColdFusion root (CF_ROOT), create the file myCustomFileNotFound.cfm. Give it some content, like
    My custom File Not Found page. Current time: <cfoutput>#now()#</cfoutput>
    2) Open the file {CF_ROOT}/WEB-INF/web.xml in a text editor. Add the following error-handling specification just before the end tag </web-app>:
    <error-page>
    <error-code>404</error-code>
    <location>/myCustomFileNotFound.cfm</location>
    </error-page>
    Save the file web.xml.
    3) Restart ColdFusion. Test by browsing to a URL requesting filename.ext

  • Is there a way to specify a value not allowed in text field?

    I see there is max/min chars and values but is there a way to specify not to allow specific words or a specific value like 2000 in an integer field? Maybe I'm blind but I searched through all of this document http://labs.adobe.com/technologies/spry/articles/textfield_overview/ as well as this forum and wasn't able to find anything. Thanks in advance for any help.

    This forum is for authoring Dreamweaver Extensions. Are you using Spry in a DW Extension?
    If not, try the Spry forum:
    http://forums.adobe.com/community/adobe_labs/spry_framework_ajax_prelease
    Randy

  • Is there a way to specify text-to-speech to dictate a specific line or..

    Hi guys,
    Is there a way to specify text-to-speech to dictate a specific line or page in a pdf file?
    In fact, it would be cool if text-to-speech highlighted each word that is being spoken through out the document during dictation and you could rewind, pause or fastforward the speech in real-time. Is this feature available? if not, can anyone recommend any other programs that can do this?
    thanx in advance

    Is there a way to specify text-to-speech to dictate a specific line or page in a pdf file?
    Yes!
    With fully modern Cocoa applications (like Safari, Preview, TextEdit, and Mail) you can select the line or page and then from the application menu > Services > Speech > Start Speaking Text
    You can also select and then Control-Click on the selection and then pick Speech > Start Speaking Text from the contextual menu. (Works with Safari, TextEdit, and Mail, but not Preview for PDF.)
    In fact, it would be cool if text-to-speech
    highlighted each word that is being spoken through
    out the document during dictation and you could
    rewind, pause or fastforward the speech in real-time.
    That would be cool. Are you looking for an interface enhancement, or would a talking book reader with these features be acceptable?
    Is this feature available?
    No, but you can get somewhat close to this ideal by using VoiceOver and checking Show Caption Panel.
    if not, can anyone recommend any other programs that can do this?
    I have had fair success with the Text Help Read & Write Aloud products.
    http://www.texthelp.com/rwm.asp?q1=products&q2=rwm
    eMac 1.42   Mac OS X (10.4.6)   I paid the going Windows price for a screen reader and got a free computer!

  • Is there a way to specify sorting in Notes and Reminders in IOS 7?

    Is there a way to specify a sorting order in Notes and Reminders in IOS 7?  Although Notes and Reminders now sink with Outlook (via an Exchange server,) they seem to appear in a random order.

    If you're on an iPhone and you pull down on the unsorted reminder list, it exposes a Search box and an alarm clock.  If you select the alarm clock, it puts the reminders in ascending chonological order grouped by date -- e.g., "Today", "Thursday, September 26", etc. with the caption "Scheduled" at the top.

  • HTML Import : Is there a way to specify the ordering at time of multi page import?

    It appears the ordering may be alphabetical.
    Is there a way, maybe by placing a metadata file somewhere, to specify the import order to avoid having to set the order from Folio Producer?
    Thanks,
    John

    I believe you want to use the sidecar.xml feature to accomplish this.
    And there's a great online tool for generating the file, too:
    http://projects.nordsueddesign.de/sidecarxml/

  • HT201471 Is there another way to see what model iPad I have without prying it out of the case?

    it seem to get an answer to my question, I must know the model of my iPad.  My iPad is encased in a protective unit that Sampson couldn't break and one  that I can't figure out how to remove. - and the Apple (so called) "support" site only gives pretty pictures for me to compare to my iPad.  And I'm supposed to conduct this comparison of pictures on the screen to the back of my iPad (that needs to be turned upside down!!!). And just how am I supposed to see the screen with the iPad turned over?!?  WAY TO GO, APPLE!  Surely there is a better way to find the model Information!   If one looks in Settings, one finds Everything about the iPad -Except the model!  Aargh!  Does Anyone know of a better way to discover the iPad model?

       FROM Chrley's Mom (because I dont know how to "post back" as one responder requested  OK!  I found it!  Now, why didn't the Apple "support" site say that?!?  Why wasn't it on the Apple "support" site Instead of those idiot pictures.  Does Apple think we have lost the ability to read and need "picto-nary" instructions?!?   Aargh!
       NOW, you folk have been very helpful, so maybe you can help me with the original reason I went to Apple "support". ( I hope I'm not in the wrong "pew" for these there questions).
       i updated my iPad and three things happened;  a blank gray panel now covers 1/3 of my iPad screen in the landscape view; I lost all my site Bookmarks and everything on my Reading List!  So,
    1). How do I get rid of that empty gray panel?  It covers over whatever is showing in the landscape view but disappears in the portrait view.  And it only appears when I'm using Safari to view the Internet. 
    2). is there a way I can retrieve my site Bookmarks?
    3). and my Reading List?  (No, the iPad isn't synced to a Mac - because I don't use a Mac) 

  • Is there any way to specify the default version of LabVIEW?

    I have a sinking feeling that the answer to this question is "no."  With more than one version installed, is there any way to set the default LabVIEW version for opening a VI? I have both 7.1 and 8 installed, and usually only use 8 to open an example or look at something posted here.  When I do that, it resets all the OS hooks so that the default action for opening a VI is to open it in version 8.  I've even gone so far as to create actions to open files in 7.1 and 8, but it always resets my default action.
    I found this KB article for when version 7 came out, but it's suggestions don't seem to work with 7 and 8.
    Ugh. I hate it when software thinks it knows what I want better than I do.

    eaolson wrote:
    I have a sinking
    feeling that the answer to this question is "no."  With more than
    one version installed, is there any way to set the default LabVIEW
    version for opening a VI? I have both 7.1 and 8 installed, and usually
    only use 8 to open an example or look at something posted here. 
    When I do that, it resets all the OS hooks so that the default action
    for opening a VI is to open it in version 8.  I've even gone so
    far as to create actions to open files in 7.1 and 8, but it always
    resets my default action.
    I found this KB article for when version 7 came out, but it's suggestions don't seem to work with 7 and 8.
    Ugh. I hate it when software thinks it knows what I want better than I do.
    Add
    in the LabVIEW.ini file of those versions you do not want to rewrite
    the registry on startup to point to themselves for VI files, the
    following:
    RegisterExtensions=False
    Of course the VersionChooser utility mentioned earlier is even more convinient.
    Rolf Kalbermatter
    Message Edited by rolfk on 06-28-2006 08:21 AM
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Is there a way to specify which fields are displayed in the "new contact" window in the adress book, or at least highlight the ones that are important to me?

    It would be nice if I could put together the fields in the "new contact" window in the adress book, or at least highlight the ones I need with bold letters or a different color. Is there a way? Thank you.

    No method I am aware of.
    This add-on adds many features, but I don't know if what you seek is included.
    https://freeshell.de//~kaosmos/morecols-en.html
    How to install
    http://chrisramsden.vfast.co.uk/3_How_to_install_Add-ons_in_Thunderbird.html

  • Is there a way to specify columns to be excluded from the NLSSORT function

    Hi, in order to enable case-insensitive searches in oracle without making significant app changes, we've added a login trigger that enables linguistic sorting by setting the session params:
    alter session set nls_comp=LINGUISTIC;
    alter session set nls_sort=BINARY_CI;
    While this gives us exactly the desired behavior for all our actual linguistic data, 90% of our primary key fields are typed as varchar2 fields that contain GUIDs. This is a problem because the primary key index is a binary index but when we query for a row by its primary key, we're getting table scans because the query is being translated to using the NLSSORT function because of our session setup.
    Here's a specific example of what we're seeing:
    SQL> create table t1 (c1 varchar2(255) not null, c2 varchar2(255) null, primary key (c1));
    Table created.
    SQL> set autotrace traceonly explain;
    SQL> select * from t1 where c1='t';
    Execution Plan
    Plan hash value: 3617692013
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 1 | 258 | 2 (0)| 00:00:01 |
    |* 1 | TABLE ACCESS FULL| T1 | 1 | 258 | 2 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    1 - filter(NLSSORT("C1",'nls_sort=''BINARY_CI''')=HEXTORAW('7400') )
    Note
    - dynamic sampling used for this statement
    I understand why this is occurring and I know that if I add an NLSSORT based index to the primary key columns on each of our tables (in addition to the existing unique index used by the PK constraint) that second index will cause my query to perform an index range scan. However, for various reasons this is something of a daunting task in our app and we'd like to avoid the double indexes for performance reasons as well. So what I'd prefer to do is find a way to tell the session to NOT apply the NLSSORT function when it sees these columns in incoming SQL, but I haven't read anything that leads me to believe that such blacklisting is a feature of the NLS libraries. If anyone knows whether this is possible or not or if you have an alternate approach, I'd really appreciate your feedback.
    Thanks!
    Message was edited by:
    user616116

    Unfortunately, there is no way to avoid this problem globally. We are aware of this deficiency and we will look for a solution for some future release. In the meantime, you will need, unfortunately, to code the workaround you mentioned.
    -- Sergiusz

  • Is there any way to specify a URL in the servlet-mapping that doesn't need to be in the directory structure?

              I migrated from WebLogic 5.1 to 7.0.2 Something I used to have set-up in 5.1 no
              longer
              works.
              I am using the weblogic.servlet.FileServlet and have the URL "/cxedocs/" mapped
              to this
              servlet. So whenever the URL http://localhost:7001/cxedocs/en_US/index.html
              is used it would use the docHome associated with the /cxedocs/ URL and then append
              the "en_US/index.html" on to it. So let's say d:\temp\en_US\index.html
              But now for WL 7.0.2 it appears that the URL also needs to be in the directory
              structure.
              So it now takes the docHome "d:\temp" adds the URL "/cxedocs/" and then appends
              the
              rest - so d:\temp\cxedocs\en_US\index.html.
              I can't require that the "cxedocs" directory be there. Is there anyway to map
              a certain URL
              without requiring it in the directory structure. I looked at virtual directory
              mapping too but
              it still seemed to require this.
              Any help would be appreciated!
              Thanks!
              -Lori
              

              I opened up a case with support on this. After some research they came back with
              that
              NO there is no way to do this. In 6.0 it was changed to follow the spec which
              restricts this.
              The URL must be part of the directory path.
              -Lori
              "Lori Ronning" <[email protected]> wrote:
              >
              >I migrated from WebLogic 5.1 to 7.0.2 Something I used to have set-up
              >in 5.1 no
              >longer
              >works.
              >
              >I am using the weblogic.servlet.FileServlet and have the URL "/cxedocs/"
              >mapped
              >to this
              >servlet. So whenever the URL http://localhost:7001/cxedocs/en_US/index.html
              >is used it would use the docHome associated with the /cxedocs/ URL and
              >then append
              >the "en_US/index.html" on to it. So let's say d:\temp\en_US\index.html
              >
              >But now for WL 7.0.2 it appears that the URL also needs to be in the
              >directory
              >structure.
              >So it now takes the docHome "d:\temp" adds the URL "/cxedocs/" and then
              >appends
              >the
              >rest - so d:\temp\cxedocs\en_US\index.html.
              >
              >I can't require that the "cxedocs" directory be there. Is there anyway
              >to map
              >a certain URL
              >without requiring it in the directory structure. I looked at virtual
              >directory
              >mapping too but
              >it still seemed to require this.
              >Any help would be appreciated!
              >Thanks!
              >-Lori
              

  • I have created an editable PDF via Adobe Indesign. When I open the PDF in Adobe Acrobat Pro DC, is there a way to specify a font style? Or is there a way in InDesign to make sure when someone type in that text field it is a certain font?

    I need to make sure the text that is entered is a certain font to keep it continuous with the rest of the document. Thank you!

    To go into form editing mode, select "Prepare Form" in the right hand pane. You'll then get a toolbar along the top that contains the various form-related tools. The first thing to do is add a temporary button. You'll use this to determine the name of the font for use with the script as well as place the script that will change the font properties of the text fields. So create a button anywhere, double-click it to bring up the field properties dialog, and on the Actions tab add a JavaScript action to the Mouse Up event that is:
    // Mouse Up script for temporary button
    app.alert(event.target.textFont);
    On the Appearance tab, select the font that you want to use for the text fields. Once you've done that, close form editing mode and click the button. It will display a popup that will list the font name. This may be different than the name that appeared in the dropdown on the appearance tab, so write it down. For example, when I chose "Minion Pro" from the dropdown, the popup showed "MinionPro-Regular".
    The next step is to replace that Mouse Up script with the following:
    // Mouse Up script for temporary button
    // Change the font and font size for all text field in this document
    for (var i = 0; i < numFields; i++) {
        var f = getField(getNthFieldName(i));
        if (f.type === "text") {
            f.textFont = "MinionPro-Regular";
            f.textSize = 9;
    Replace "MinionPro-Regular" with the font name that you wrote down before and set the font size to whatever you want. Use 0 to specify a font size of "Auto".
    This script will change the font of all text fields to whatever you specify. When you've confirmed that the text fields are set up as you want, you can go ahead and delete or hide the button. If you think you'll be doing a lot of forms work, you can create custom tools in Acrobat to speed up this process, but this should get you started. InDesign won't let you specify a lot of field properties and actions, so you have to work this way, and using automation scripts is an accessible way to significantly speed up the process and avoid mistakes.

  • Is there a way to specify compiler options in mxml file?

    I would like to implement the module optimization techniques
    that require "-link-report=parentLinkReport.xml" when compiling the
    main module, and "-load-externs=parentLinkReport.xml" when
    compiling the submodules. and can't find a convenient way to do so
    without manually compiling the mxml files from the command line.
    I am hoping there is a way of specifiying compiler directives
    in the mxml file directly, does anyone know if/how this can be
    done?
    Paul

    I asked a same question in flexbuilder forum but no answer so
    far.
    http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=60&catid=582&threadid =1295210&highlight_key=y&keyword1=load%2Dexterns

  • Is there a way to specify a number of vlookup results?

    I'm trying to make a kind of loose pivot-table-like date record lookup. Probably best if I show something analogous to what I'm wanting:
    Table1
    Date
    BookRead
    1/1/13
    Les Miserables
    1/2/13
    The Hunchback of Notre Dame
    1/3/13
    Les Miserables
    1/4/13
    The Phantom of the Opera
    1/5/13
    Don Quixote
    1/6/13
    The Hunchback of Notre Dame
    1/7/13
    War and Peace
    1/8/13
    Les Miserables
    1/9/13
    Les Miserables
    1/10/13
    The Phantom of the Opera
    1/11/13
    Les Miserables
    1/12/13
    Don Quixote
    1/14/13
    The Hunchback of Notre Dame
    1/15/13
    Les Miserables
    In a separate table, I want to be able to pull the data this way, from most recent (Date1) to least (Date4):
    Table2
    BookRead
    Date1
    Date2
    Date3
    Date4
    Don Quixote
    1/12/13
    1/5/13
    Les Miserables
    1/15/13
    1/11/13
    1/9/13
    1/8/13
    The Hunchback of Notre Dame
    1/14/13
    1/6/13
    1/2/13
    The Phantom of the Opera
    1/10/13
    1/4/13
    War and Peace
    1/7/13
    The results in each row need to be the most recent four instances for that book(e.g., "Les Miserables" should only return the last four instances and disregard any more) and only the results for that book.
    I've been trying to rack my brain on how to dynamically limit the range of rows for a VLOOKUP: that is, in each row of Table2:
    - Date1: VLOOKUP for last instance as usual (which will return the bottom-most result)
    - Date2: VLOOKUP for last instance prior to the row found in Date1
    - Date3: VLOOKUP for last instance prior to the row found in Date2
    - Date4: VLOOKUP for last instance prior to the row found in Date3
    I've already tried category tables; it doesn't come close to what I want. Heck, VLOOKUP may not even be the way to go.
    I'm concerned this will create an ENORMOUS amount of calculations, as the lookup table (Table2) I need to add this feature to currently has over 2700 rows, and the source table (Table1) it will compute from has over 1400. (That's right, I will be testing a TON of items in the first table that will have no instance at all in the second--that is, I want to test for way more "books" than are even used in the record. I know this seems backwards, but humor me.)
    Is this doable, or am I delusional?

    Hello
    Here's something you may try. Not sure at all, though, whether this works acceptably fast for thousands of entries.
    Table 2 will retieve unique book titles from Table 1 by using row indices in Table 1 :: E. If you're using independent table with unique book titles to retrieve data from Table 1, Table 1 :: E is not necessary and you can simply replace the formulae in Table 2 :: A with the unique book titles.
    Table 1 works as follows.
    1) In column C, count the occurence of each book title in column B after the current date in column A.
    2) In column D, build string TITLE[k], where TITLE = title in column A, k = number of occurence in column C.
    3) In column E, retrive the row indices where k = 1 in column C (i.e., row indices of most recently read books).
    Table 2 works as follows.
    1) In column A, retrieve the (unique) book titles in rows whose indices are listed in Table 1 :: E.
    2) In column B, retiieve date in Table 1 :: A for TITLE[1] in Table 1 :: D, where TITLE = title in column A.
    3) In column C, retiieve date in Table 1 :: A for TITLE[2] in Table 1 :: D, where TITLE = title in column A.
    4) In column D, retiieve date in Table 1 :: A for TITLE[3] in Table 1 :: D, where TITLE = title in column A.
    5) In column E, retiieve date in Table 1 :: A for TITLE[4] in Table 1 :: D, where TITLE = title in column A.
    # Table 1
    A1  Date
    A2  2013-01-01
    A3  2013-02-01
    A4  2013-03-01
    A5  2013-04-01
    A6  2013-05-01
    A7  2013-06-01
    A8  2013-07-01
    A9  2013-08-01
    A10 2013-09-01
    A11 2013-10-01
    A12 2013-11-01
    A13 2013-12-01
    A14 2013-12-02
    A15 2013-12-03
    B1  BookRead
    B2  Les Miserables
    B3  The Hunchback of Notre Dame
    B4  Les Miserables
    B5  The Phantom of the Opera
    B6  Don Quixote
    B7  The Hunchback of Notre Dame
    B8  War and Peace
    B9  Les Miserables
    B10 Les Miserables
    B11 The Phantom of the Opera
    B12 Les Miserables
    B13 Don Quixote
    B14 The Hunchback of Notre Dame
    B15 Les Miserables
    C1  k
    C2  =COUNTIF(OFFSET($B$1,ROW($B2)-1,0,ROWS($B)-ROW($B2)+1,1),$B2)
    C3  =COUNTIF(OFFSET($B$1,ROW($B3)-1,0,ROWS($B)-ROW($B3)+1,1),$B3)
    C4  =COUNTIF(OFFSET($B$1,ROW($B4)-1,0,ROWS($B)-ROW($B4)+1,1),$B4)
    C5  =COUNTIF(OFFSET($B$1,ROW($B5)-1,0,ROWS($B)-ROW($B5)+1,1),$B5)
    C6  =COUNTIF(OFFSET($B$1,ROW($B6)-1,0,ROWS($B)-ROW($B6)+1,1),$B6)
    C7  =COUNTIF(OFFSET($B$1,ROW($B7)-1,0,ROWS($B)-ROW($B7)+1,1),$B7)
    C8  =COUNTIF(OFFSET($B$1,ROW($B8)-1,0,ROWS($B)-ROW($B8)+1,1),$B8)
    C9  =COUNTIF(OFFSET($B$1,ROW($B9)-1,0,ROWS($B)-ROW($B9)+1,1),$B9)
    C10 =COUNTIF(OFFSET($B$1,ROW($B10)-1,0,ROWS($B)-ROW($B10)+1,1),$B10)
    C11 =COUNTIF(OFFSET($B$1,ROW($B11)-1,0,ROWS($B)-ROW($B11)+1,1),$B11)
    C12 =COUNTIF(OFFSET($B$1,ROW($B12)-1,0,ROWS($B)-ROW($B12)+1,1),$B12)
    C13 =COUNTIF(OFFSET($B$1,ROW($B13)-1,0,ROWS($B)-ROW($B13)+1,1),$B13)
    C14 =COUNTIF(OFFSET($B$1,ROW($B14)-1,0,ROWS($B)-ROW($B14)+1,1),$B14)
    C15 =COUNTIF(OFFSET($B$1,ROW($B15)-1,0,ROWS($B)-ROW($B15)+1,1),$B15)
    D1  book[k]
    D2  =B2&"["&C2&"]"
    D3  =B3&"["&C3&"]"
    D4  =B4&"["&C4&"]"
    D5  =B5&"["&C5&"]"
    D6  =B6&"["&C6&"]"
    D7  =B7&"["&C7&"]"
    D8  =B8&"["&C8&"]"
    D9  =B9&"["&C9&"]"
    D10 =B10&"["&C10&"]"
    D11 =B11&"["&C11&"]"
    D12 =B12&"["&C12&"]"
    D13 =B13&"["&C13&"]"
    D14 =B14&"["&C14&"]"
    D15 =B15&"["&C15&"]"
    E1  i[k=1]
    E2  =MATCH(1,$C,0)
    E3  =IFERROR(E2+MATCH(1,OFFSET($C$1,E2,0,ROWS($C)-E2,1),0),"")
    E4  =IFERROR(E3+MATCH(1,OFFSET($C$1,E3,0,ROWS($C)-E3,1),0),"")
    E5  =IFERROR(E4+MATCH(1,OFFSET($C$1,E4,0,ROWS($C)-E4,1),0),"")
    E6  =IFERROR(E5+MATCH(1,OFFSET($C$1,E5,0,ROWS($C)-E5,1),0),"")
    E7  =IFERROR(E6+MATCH(1,OFFSET($C$1,E6,0,ROWS($C)-E6,1),0),"")
    E8  =IFERROR(E7+MATCH(1,OFFSET($C$1,E7,0,ROWS($C)-E7,1),0),"")
    E9  =IFERROR(E8+MATCH(1,OFFSET($C$1,E8,0,ROWS($C)-E8,1),0),"")
    E10 =IFERROR(E9+MATCH(1,OFFSET($C$1,E9,0,ROWS($C)-E9,1),0),"")
    E11 =IFERROR(E10+MATCH(1,OFFSET($C$1,E10,0,ROWS($C)-E10,1),0),"")
    E12 =IFERROR(E11+MATCH(1,OFFSET($C$1,E11,0,ROWS($C)-E11,1),0),"")
    E13 =IFERROR(E12+MATCH(1,OFFSET($C$1,E12,0,ROWS($C)-E12,1),0),"")
    E14 =IFERROR(E13+MATCH(1,OFFSET($C$1,E13,0,ROWS($C)-E13,1),0),"")
    E15 =IFERROR(E14+MATCH(1,OFFSET($C$1,E14,0,ROWS($C)-E14,1),0),"")
    # Table 2
    A1  book
    A2  =IFERROR(INDEX(Table 1::$B,Table 1::E2,1),"")
    A3  =IFERROR(INDEX(Table 1::$B,Table 1::E3,1),"")
    A4  =IFERROR(INDEX(Table 1::$B,Table 1::E4,1),"")
    A5  =IFERROR(INDEX(Table 1::$B,Table 1::E5,1),"")
    A6  =IFERROR(INDEX(Table 1::$B,Table 1::E6,1),"")
    A7  =IFERROR(INDEX(Table 1::$B,Table 1::E7,1),"")
    A8  =IFERROR(INDEX(Table 1::$B,Table 1::E8,1),"")
    A9  =IFERROR(INDEX(Table 1::$B,Table 1::E9,1),"")
    B1  date[i[k=1]]
    B2  =IFERROR(INDEX(Table 1::$A,MATCH($A2&"[1]",Table 1::$D,0),0),"")
    B3  =IFERROR(INDEX(Table 1::$A,MATCH($A3&"[1]",Table 1::$D,0),0),"")
    B4  =IFERROR(INDEX(Table 1::$A,MATCH($A4&"[1]",Table 1::$D,0),0),"")
    B5  =IFERROR(INDEX(Table 1::$A,MATCH($A5&"[1]",Table 1::$D,0) ,0) ,"")
    B6  =IFERROR(INDEX(Table 1::$A,MATCH($A6&"[1]",Table 1::$D,0) ,0) ,"")
    B7  =IFERROR(INDEX(Table 1::$A,MATCH($A7&"[1]",Table 1::$D,0) ,0) ,"")
    B8  =IFERROR(INDEX(Table 1::$A,MATCH($A8&"[1]",Table 1::$D,0) ,0) ,"")
    B9  =IFERROR(INDEX(Table 1::$A,MATCH($A9&"[1]",Table 1::$D,0) ,0) ,"")
    C1  date[i[k=2]]
    C2  =IFERROR(INDEX(Table 1::$A,MATCH($A2&"[2]",Table 1::$D,0),0),"")
    C3  =IFERROR(INDEX(Table 1::$A,MATCH($A3&"[2]",Table 1::$D,0),0),"")
    C4  =IFERROR(INDEX(Table 1::$A,MATCH($A4&"[2]",Table 1::$D,0),0),"")
    C5  =IFERROR(INDEX(Table 1::$A,MATCH($A5&"[2]",Table 1::$D,0),0),"")
    C6  =IFERROR(INDEX(Table 1::$A,MATCH($A6&"[2]",Table 1::$D,0) ,0) ,"")
    C7  =IFERROR(INDEX(Table 1::$A,MATCH($A7&"[2]",Table 1::$D,0) ,0) ,"")
    C8  =IFERROR(INDEX(Table 1::$A,MATCH($A8&"[2]",Table 1::$D,0) ,0) ,"")
    C9  =IFERROR(INDEX(Table 1::$A,MATCH($A9&"[2]",Table 1::$D,0) ,0) ,"")
    D1  date[i[k=3]]
    D2  =IFERROR(INDEX(Table 1::$A,MATCH($A2&"[3]",Table 1::$D,0),0),"")
    D3  =IFERROR(INDEX(Table 1::$A,MATCH($A3&"[3]",Table 1::$D,0),0),"")
    D4  =IFERROR(INDEX(Table 1::$A,MATCH($A4&"[3]",Table 1::$D,0),0),"")
    D5  =IFERROR(INDEX(Table 1::$A,MATCH($A5&"[3]",Table 1::$D,0) ,0) ,"")
    D6  =IFERROR(INDEX(Table 1::$A,MATCH($A6&"[3]",Table 1::$D,0) ,0) ,"")
    D7  =IFERROR(INDEX(Table 1::$A,MATCH($A7&"[3]",Table 1::$D,0) ,0) ,"")
    D8  =IFERROR(INDEX(Table 1::$A,MATCH($A8&"[3]",Table 1::$D,0) ,0) ,"")
    D9  =IFERROR(INDEX(Table 1::$A,MATCH($A9&"[3]",Table 1::$D,0) ,0) ,"")
    E1  date[i[k=4]]
    E2  =IFERROR(INDEX(Table 1::$A,MATCH($A2&"[4]",Table 1::$D,0),0),"")
    E3  =IFERROR(INDEX(Table 1::$A,MATCH($A3&"[4]",Table 1::$D,0) ,0) ,"")
    E4  =IFERROR(INDEX(Table 1::$A,MATCH($A4&"[4]",Table 1::$D,0),0),"")
    E5  =IFERROR(INDEX(Table 1::$A,MATCH($A5&"[4]",Table 1::$D,0) ,0) ,"")
    E6  =IFERROR(INDEX(Table 1::$A,MATCH($A6&"[4]",Table 1::$D,0) ,0) ,"")
    E7  =IFERROR(INDEX(Table 1::$A,MATCH($A7&"[4]",Table 1::$D,0) ,0) ,"")
    E8  =IFERROR(INDEX(Table 1::$A,MATCH($A8&"[4]",Table 1::$D,0) ,0) ,"")
    E9  =IFERROR(INDEX(Table 1::$A,MATCH($A9&"[4]",Table 1::$D,0) ,0) ,"")
    Hope this may help,
    H

Maybe you are looking for