Efficient Polling Technique Suitable fo rTouch Panels

APPLICATION / SYSTEM
Single TPC 2215 polling 154 power monitors and 154 temperature sensors
-Modbus TCP/IP poll rate no faster than 5 minutes, typically every 15 or 30 minutes
-Poll (12) 32 Bit Registers per power monitor
-Poll (1) 32 Bit register per Temperature sensor
-Store data as CSV file using Write To File VI
-Have Diadem (and could also use TDMS plug in) am open to using a database technique if I had an example to follow, not sure it is really that neceassary here
Would Like:
-Ability to Set Poll Interval
-Ability to set Alarm Levels for Current and Temperature and detection of Power Spike
-Active Alarm displayed along bottom of HMI
-Alarm History
-View Stored Data in table and chart format
-Ability to set starage requirements, ie FIFO or read and Hold
First I understand the general answer to programming an TPC HMI is no or not much different than a desktop.   I cam across the Simple Machine Control Reference Application,   http://www.ni.com/example/31250/en/#toc3.
I have looked through a few of the white papers related to HMI developement, many of which seem to be based on 2009 programming techniques / Libs
I understand the image below is a good technique to follow for a HMI application
I have been unable to find other reference applications other than the Simple Machine Control Refereence
This referance application uses:
•Current Value Table (CVT) Reference Library, AVAILABLE VIA JKL PACKAGE MANAGER
•CVT Client Communication (CCC) Reference Library, AVAILABLE VIA JKL PACKAGE MANAGER
•Asynchronous Message Communication (AMC) Reference Library, AVAILABLE VIA JKL PACKAGE MANAGER
•cRIO IO Engine (CIE) Reference Library, NOT REQUIRED FOR MY APP
•HMI Navigation Engine (HNE) Reference Library, AVAILABLE AS A SEPERATE DOWNLOAD
•Reference Example for Localization Configuration Editor for LabVIEW, DO NOT BELIEVE I WILL NEED THIS
•Simple TCP Messaging Reference Library, AVAILABLE VIA JKL PACKAGE MANAGER
A Couple questions:
1.  Is this still a relivant application scheme under 2014?
2.  What has replaced the HNE Lib?
3.  The ref example uses a single VI per HMI page, not a bad technique but NI support group has mentioned the use of Tab Pages, I can work with either, just would like to see if anyone with recent experience can shed some light on the topic.
4. Does anyone have a recent example using the before mentioned libraies OR another technique that can be shared?
GOAL - Just trying to limit my chances of heading down the wrong path,  I cringe when I see some of my earlier code .
Thanks in Advance
Tim C.
1:30 Seconds ARRRGHHH!!!! I want my popcorn NOW! Isn't there anything faster than a microwave!

After reading the whitepaper you mentioned (Simple Machine Control Reference Application) can verify that this example can be implemented on LabVIEW 2014, obviously the toolkits and respective drivers have to be compatible con LabVIEW 2014, but the core of the example can still be implemented. The HMI Navigation Engine (HNE) Reference Library hasn't been updated in a while, so you can still use the same link provided in the above mentioned whitepaper.
Regarding the use of a single VI per HMI page vs. the use of tabs, would not be able to provide a good recommendation here since it's not something I'm that familiar with, although I can say that if you already found a forum with expert users recommending the use of tabs, then it's fair to say that would be the way to go.

Similar Messages

  • Database Adapter Advanced Polling Technique

    I would like to create a polling database adapter on an SOA application. The data is statistical and changes frequently. I have developed the SQL in sqldeveloper to get the data (hard part done, or so I thought). I would like the adapter to poll the database with this query and fetch the results. I plan to use a sequential table to keep track of the fields at a separate database. Now, I understand I could turn the SQL script into a view and have the database adapter poll the view. However, my requirements are that the process be as unobtrusive to the database as possible. In other words: they do not want me to put that view on the database. So, my question is: has anyone created a database adapter polling mechanism that can execute a pure SQL select statement such as the one i have created. Of course, the SQL script is rather complex and it cannot be implemented using the TopLink commands on the database adapter wizard in jDeveloper. Does anyone know of a way i can do this? and if so, how? Thanks in advance.

    Could you provide more insight on how you wired the adapter and BPEL process inside the composite? What does the BPEL look like? You could add a BPEL component that persists some stuff just for test purposes. That could give you more feedback from the console.
    hth,
    Peter Paul

  • Estimation Technique for ABAP programmimng

    Hi,
    I would like to know if there are any formal software estimation techniques that may be used for ABAP development.The commonly used estimation techniques such as Function Point/LOC etc do not seem to fit in.We currently use WBS methodology but here again it is left to the discretion of the developer to estimate for the lower level tasks .
    Any suggestions on a technique that would best suite the vast style of programming varying from reports to module pools/ sapscripts/bdc/user exits etc etc...
    Regards
    Rani

    Thanks Serdar for the link . I will take a look at it.
    In the recent past I have faced several instances where I have had to give estimates to the clients for ABAP development. Though we use WBS (Work Breakdown structure), but that also is gut feel based and based on the experience of the developer involved.I discussed this with several friends in the SAP world but no one had a real answer.
    I tried using FPA which is a more unversally acceptable estimation technique.
    The main problem I run into when trying to do some kind of estimation for ABAP development using FPA technique is:
    1. There is no logical data model available in SAP
    2. As a developer building custom programs, there is already so much code/functions available , the varying levels of reuse makes it difficult to estimate
    3. Several program such as for BDC the code gets automatically generated and then we adapt this code further based on the requirements, so again estimation becomes difficult.
    I would request some one from SAP to respond on how they do estimation & what technique do they use :
    1) for new modules & functionalities that they build
    2) for enhancement/bug fixes that they do to existing applications
    Rather I would like to use the SDN forum as a means to formulate an estimation technique suitable for ABAP devlopment.
    Hoping to receive some wonderful suggestion from all the brilliant people out there.
    Cheers
    Rani

  • Spry Tabbed Panels and Sliding Door CSS

    Has anyone been able to customize Spry Tabbed Panels using
    the Sliding Door CSS technique?
    Spry Tabbed Panels...
    http://labs.adobe.com/technologies/spry/samples/tabbedpanels/tabbed_panel_sample.htm
    Sliding Door CSS technique...
    http://alistapart.com/articles/slidingdoors/
    It would really be sweet to also have the animation of the
    PVII Tab Panel Magic...
    http://www.projectseven.com/products/tools/tabpanel/demo/

    Hi,
    Really nice :) I tried it and works perfectly.
    Thank you,
    Diana

  • DB Adapter Synchronous Polling

    Hi All
    I have seen many posts about DB Adapter Polling techniques, but all of them are related to a DBAdapter used to start a BPEL instance (a dbadapter connect to the first receive activity).
    I need to perform a database polling in the middle of the process. So, the process must call a DBAdapter to perform a polling, wait for the result and then go on.
    However, I have two issues:
    1) Is a polling DBAdapter synchronous or asynchronous (when used in the process middle)?
    2) It seems that is not possible to use parameters on polling WHERE clause... is it? There are some values I must pass to DBAdapter, to be used on where clause.
    Thanks.

    We had this and other issues when trying to use the polling adapter. What we wound up doing is writing our own async process that periodically runs the required queries (query followed by a wait inside of a while) This gave us more flexibility than the polling adapter in that it allowed us to use parameters inside of the WHERE clause for our query and the ability to taper off polling frequencies (once the process has waited for 5 minutes, it changes its frequency to every 10 minutes, etc.)
    We have since decided to switch to a pick instead of a wait, which allows us to prod an in-flight instance to immediately run its query.
    If you're really married to the idea of using the polling adapter, you may want to look at correlation sets, at least that's where I was told to look when I asked around about it.

  • Distributed polling

    Hi ,
    While configuring DB adapter there is an option of distributed polling. In an active-active setup, distributed polling
    techniques can be used for inbound Database Adapters to ensure that the same data is not retrieved more than
    once. Anyone knows how does it work internally is there any other configuration we need to do to achieve it?
    Any help in this regard is highly appreciated.
    With Regards,
    Harsh

    You can Emulate AQ functionality for any Non-Oracle Database where sometimes the *Clustered DB-Adapter[Poller]* polls the same record more than once.
    Say, you need to poll 'status' column of table 'A' for a status 'POLL_IT'
    1. Create a Table 'DUMMY_AQ' matching required column signatures from table 'A'
    2. Create a Trigger on table 'A' for copying the row content on Insert or Update for status 'POLL_IT' in to 'DUMMY_AQ' table;
    3. Poll DUMMY_AQ with Row Level Read lock & Delete On Read , that way it will is ensured that so that only One Instance of your Clustered DB Adapter can have visibility to any newly inserted row having status 'POLL_IT' .

  • Adding a panel to an open GUI with a background image

    Dear java programmers,
    I want to add a JPanel with some components on an open(visible) GUI whenever a button is clicked. That JPanel carries a button, a progress bar, a label, and a textarea inside a scrollpane. Whenever the button of the panel is clicked a program starts working, and the progress and output of that program is reflected on the progress bar and textfield respectively. I 'put the code to generate and add the panel in a so called "Progress" class, which is different from the GUI class that contains the code to create and display the main gui.
    My gui also has a background image to make is look fancy, which is added by the following way:
    GUI mygui = new GUI();
    mygui.getContentPane().add(new ImagePanel(new ImageIcon("/home/thomas/Documents/external_placement/Report/presentation4_transp.png").getImage()));
    My problem is that the background image is hiding the panel (whenever added) and only when the cursor passes above the button inside the panel it becomes visible (just the button). However when I click the button and the program starts I can see everything inside the panel.
    Is there an efficient way of making the panel visible at once?
    thanks in advance,
    Tom

    Ok now that I'm certain about how to use code tags I'll try to make myself clear.
    First of all I made it work by removing the ImagePanel , adding the JPanel and re-adding ImagePanel, all from within the Progress.class. But I'm not sure if this is the right way.
    Below I'll make an attempt to provide some SSCCE--code. First of all the classes I'm using are 2, the GUI.class which contains all the components of the gui, and the Progress.class which has the additional panel and adds it to the gui whenever the "submit" button is clicked.
    The code from GUI.class which is relevant to this question is:
    public class GUI extends javax.swing.JFrame{
    //the following are declared as "protected" because they are also used elsewhere
                protected static GUI mygui = new GUI();
                protected static ImagePanel backgroundImagePanel = new ImagePanel(new ImageIcon("/home/thomas/Documents/external_placement/Report/presentation4_transp.png").getImage());
                /* The constructor */
                public GUI() {
            initComponents(); //this method initializes all the components, puts the in a JTabbedPane and packs them the JFrame
            setLayout(new BorderLayout());
        /* the eventlistener of the "submit" button */
        private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {
            ProgressBarTest pbt = new ProgressBarTest(mygui);
            pbt.StartProgress();
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    mygui.getContentPane().add(backgroundImagePanel);
                    mygui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    mygui.pack();
                    mygui.setVisible(true);
    } And then I have my Progress.class:
    public class Progress implements ActionListener, Runnable {
    //the following are declared as "private" because they are also used elsewhere inside the class
        private static javax.swing.JProgressBar progressBar = new JProgressBar(0, 100);
        private static javax.swing.JTextArea progressTextArea = new javax.swing.JTextArea(5,20);
        private static ProgressBarTest _this;
        {color:#0000ff}private static GUI mygui;{color}
        /* the constructor */
        public Progress(GUI gui){
            _this = this;
            {color:#0000ff}mygui = gui;{color}
        private static void createAndShowPanel(){
            javax.swing.JScrollPane progressScrollPane = new JScrollPane(progressTextArea);
            javax.swing.JLabel progressLabel = new JLabel("Progress");
            javax.swing.JButton progressButton = new JButton("Do something");
            progressButton.addActionListener(_this);
            javax.swing.JPanel progressPanel = new JPanel();
            javax.swing.GroupLayout progressPanelLayout = new javax.swing.GroupLayout(progressPanel);
            progressPanel.setLayout(progressPanelLayout);
            progressPanelLayout.setAutoCreateGaps(true);
            progressPanelLayout.setAutoCreateContainerGaps(true);
            progressPanelLayout.setHorizontalGroup(
                    progressPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(progressPanelLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(progressPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(progressScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 872, Short.MAX_VALUE)
                    .addComponent(progressBar, javax.swing.GroupLayout.DEFAULT_SIZE, 872, Short.MAX_VALUE)
                    .addComponent(progressLabel)
                    .addComponent(progressButton, javax.swing.GroupLayout.Alignment.TRAILING))
                    .addContainerGap())
            progressPanelLayout.setVerticalGroup(
                    progressPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, progressPanelLayout.createSequentialGroup()
                    .addContainerGap(25, Short.MAX_VALUE)
                    .addComponent(progressButton)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(progressLabel)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(19, 19, 19)
                    .addComponent(progressScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap())
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout({color:#0000ff}mygui.getContentPane(){color});
            {color:#0000ff}mygui.getContentPane().setLayout(layout);{color}
            layout.setHorizontalGroup(
                    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(progressPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent{color:#0000ff}(mygui.jTabbedPane1{color}, javax.swing.GroupLayout.PREFERRED_SIZE, 496, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(100, Short.MAX_VALUE))
            layout.setVerticalGroup(
                    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent({color:#0000ff}mygui.jTabbedPane1{color}, javax.swing.GroupLayout.PREFERRED_SIZE, 362, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(progressPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap())
           {color:#0000ff} mygui.getContentPane().remove(mygui.backgroundImagePanel);
            mygui.getContentPane().add(progressPanel, BorderLayout.SOUTH);
            mygui.getContentPane().add(mygui.backgroundImagePanel);
            mygui.pack();{color}
        public static void StartProgress(){
            ProgressBarTest t = new ProgressBarTest({color:#0000ff}mygui{color});
            new Thread(t).start();
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowPanel();
        public void actionPerformed(ActionEvent ae){
    // signal the worker thread to get crackin
            synchronized(this){notifyAll();}
    // worker thread
        public void run(){
            while(true){
    // wait for the signal from the GUI
                try{synchronized(this){wait();}} catch (InterruptedException e){}
                Dock dock = new Dock();
                int chainArrayLength = dock.PrepareDockEnvironment();
    // start a long-running process -this is a task performed by "Dock.class"
                for (int i = 0; i <= 100; i++){
                    progressBar.setValue(i*100/chainArrayLength);
                    progressTextArea.append("Docking chain No "i".\n");
                    System.out.println("actionPerformed sets progressBar value to: "+i);
                    dock.StartDocking(i);
    }Please notice how I use the GUI object (named "mygui") inside the Progress.class to retrieve components from the main gui (particularly the jTabbedPane1), align them with the additional panel (progressPanel) and add them to the main gui again. I tried to color blue the lines where the GUI instance is used but I'm not sure if they will be visible.
    My questions are:
    1. Is this the right way to add a new panel to a jFrame from an external class? Do I add jTabedPane twice in the above code?
    2. Is this the most efficient way of making the additional panel visible at once, meaning by removing the ImagePanel (backgroundImagePanel) adding the panel (progressPanel) and finally adding again the ImagePanel (backgroundImagePanel)?
    Hope I was perspicuous.
    Tom

  • Help monitoring database uptime

    I have an application whose role is to distribute messages for processing. This application runs as a service and is intended to act as a gatekeeper when parts of the system are down, specifically Oracle. I tried using Oracle Change Notification which didn't do what I need. Loss of network connectivity or shutting down the listener didn't result in change notification. I can certainly employ a polling technique to accomplish tracking Oracle. Does anyone have any suggestions for efficiently monitoring the ability to connect to Oracle?

    Hello,
    What version(s) of Oracle Database will you be monitoring?
    Stopping the listener will not generate a database change notification.
    There is an event generated for instance shutdown and a few tests on my system show that the OracleNotificationEventArgs parameter passed to my change handler has Info of "Shutdown" when I do a shutdown of the instance.
    If you need to verify that the listener is up and running (and if it is not I can understand why that would look like the instance is unavailable to the client), database change notification is not going to help here. A polling mechanism may be your only option.
    Regards,
    Mark

  • Please read "The Forum Rules of Engagement" before posting!  HOT NEWS!!

    Welcome to the SDN ABAP Development Forums!
    Please see the [Forum Rules of Engagement|https://wiki.sdn.sap.com/wiki/display/HOME/RulesofEngagement] before posting to avoid potential problems (e.g. your posts are deleted).
    The [ABAP Development Forums|https://forums.sdn.sap.com/category.jspa?categoryID=42] have dedicated forums for the following ABAP related areas:
    => General questions about the ABAP language and language implementations. If in doubt, use this forum and do not cross-post.
    => Tables, views, structures, data elements, domains, search helps and types in the underlying relational database.
    => SAPscript and Smartforms form generation, editing and printing and the corresponding programs.
    => Classical Dynpro, Screen Painter and Controls Framework (ALV grid, Table Controls).
    => Enhancing ABAP code through techniques as CMOD, SMOD and the newer BADIs, Switch and Enhancement Frameworks.
    => Code quality, ABAP Unit, Testing, Debugging, efficient code techniques and database reads, SQL trace tools and Runtime Analysis.
    => Data Transfer Techniques, Batch Data Communication, Legacy System Migration Workbench, Application Link Enabling, IDOCs, BAPIs.
    => ABAP Object definition and implementation including encapsulation, interfaces and inheritance in ABAP Objects.
    Please...
    - Use the correct or most appropriate forum,
    - Do not cross-post or multiple-post, and
    - Search for information before asking basic questions, again.
    Using these categories will enhance performance in the forums and improve the chances that your questions are answered quickly and more accurately!
    Other relevant blogs and rule related infos are:
    - Michael Schwandt's blog about [Moving to strict rules to improve quality and control|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/10047].
    - Michael Schwandt's blog about [Quality: Invitation To Clean Up Your Forum Threads|https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/11978].
    - Please follow-up on your threads and assign points correctly, as this also contributes to the [UN Food Program|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/7898].
    Enjoy the forums and happy posting!!

    Start of related discussions about the above rules. Feel free to discuss the rules here...
    Dear Jan
    Sometime i found very difficuties and time taking process in putting questions in forum bcos i have to elaborate the whole pictorial process in words.
    Why Cant we make our this forum more Interactive in way of asking questions by allowing us to attach print preview of what we face in the system.
    If you kindly give a glance on this issue and try to implement it for us, forum members like us will be benefited and it will be beneficial for those who are all into in this forum.
    Thanks & Regards
    Saifur Rahaman

  • How to get around a performance issue when dealing with a lot of data

    Hello All,
    This is an academic question really, I'm not sure what I'm going to do with my issue, but I have some options.  I was wondering if anyone would like to throw in their two cents on what they would do.
    I have a report, the users want to see all agreements and all conditions related to the updating of rebates and the affected invoices. From a technical perspective ENT6038-KONV-KONP-KONA-KNA1.  THese are the tables I have to hit.  The problem is that when they retroactively update rebate conditions they can hit thousands of invoices, which blossoms out to thousands of conditions...you see the problem. I simply have too much data to grab, it times out.
    I've tried everything around the code.  If you have a better way to get price conditions and agreement numbers off of thousands of invoices, please let me know what that is.
    I have a couple of options.
    1) Use shared memory to preload the data for the report.  This would work, but I'm not going to know what data is needed to be loaded until report run time. They put in a date. I simply can't preload everything. I don't like this option much. 
    2) Write a function module to do this work. When the user clicks on the button to get this particular data, it will launch the FM in background and e-mail them the results. As you know, the background job won't time out. So far this is my favored option.
    Any other ideas?
    Oh...nope, BI is not an option, we don't have it. I know, I'm not happy about it. We do have a data warehouse, but the prospect of working with that group makes me whince.

    My two cents - firstly totally agree with Derick that its probably a good idea to go back to the business and justify their requirement in regards to reporting and "whether any user can meaningfully process all those results in an aggregate". But having dealt with customers across industries over a long period of time, it would probably be bit fanciful to expect them to change their requirements too much as in my experience neither do they understand (too much) technology nor they want to hear about technical limitations for a system etc. They want what they want if possible yesterday!
    So, about dealing with performance issues within ABAP, I'm sure you must be already using efficient programming techniques like using Hash internal tables with Unique Keys, accessing rows of the table using Field-Symbols and all that but what I was going to suggest to you is probably look at using [Extracts|http://help.sap.com/saphelp_nw04/helpdata/en/9f/db9ed135c111d1829f0000e829fbfe/content.htm]. I've had to deal with this couple of times in the past when dealing with massive amount of data and I found it to be very efficient in regards to performance. A good point to remember when using Extracts that, I quote from SAP Help, "The size of an extract dataset is, in principle, unlimited. Extracts larger than 500KB are stored in operating system files. The practical size of an extract is up to 2GB, as long as there is enough space in the filesystem."
    Hope this helps,
    Cheers,
    Sougata.

  • Creating single page pdfs from a brochure designed in spreads format

    Hi there,
    So I've been asked to take a brochure that is in spreads, and save each panel as a single page pdf. So basically, in document setup, the page size is 17.75 x 8.5).  There are four panels, each panel is roughly 4.3708 x 8.5. The problem is, each panel was not created as a single page in indesign...instead, it's set up as a 17.75 x 8.5 document and the panels are created within that document size.
    I guess I wanted to find out if there is an efficient way of creating these single panel pdfs from what I've been given.
    Anybody know?

    It's either copy/paste into a properly laid out facing pages document (the best choice if it will need editing in the future), or place the pages, each one twice, into a facing pages pages doc and crop the wrong half off each page. In either case, you'll need to rearrange the pages into readers' spreads.

  • Bookmarks, but not in the .pdf sense -

    When I'm working with music score source (for example) or ePub chapters in gVIM, I've become used to setting bookmarks so I can whiz up and down the file. Handy when (for example) I want to compare two variants of the same bar or phrase.  Today's tasks include bringing some order and clarity into an inherited document, where (for example) I'd like to be able to skip between the three widely separated references to the device power supply.
    So the question (after all the brackets and examples) is, does FM have a secret weapon for this? I don't recall ever coming across one, but would welcome finding out I've just been inattentive or observant.
    N

    The page numbers in "Paragraphs: Pages ##-##" above the scrolling target list box indicate the page number of the first and last item in the visible section of the list; the numbers change when the list is scrolled. It's so obvious that I overlooked it for years!
    HTH
    Regards,
    Peter
    Peter Gold
    KnowHow ProServices
    Arnis Gubins wrote:
    Not directly. However, there are two techniques that can be used to give you similar functionality.
    Technique 1: three-step jig
    1. Create a custom marker type (e.g. call it Bookmark).
    2. Then, if that marker type (Bookmark) is the current selection in the Marker panel, all you have to do is highlight the text that you want to bookmark and use the "<esc> m k" shortcut to drop in a Bookmark marker with the selected text as content.
    3.Use either the Find > "Marker of Type:" and/or create a LOM (list of markers) and use the hypertext links from the LOM to find the desired markers (that's where the marker content from step 2 comes in).
    Technique 2: x-ref panel (faster and doesn't add anything to the document - my preference)
    1. Open the Cross-Reference panel (<esc> s c or use the menus/panels, etc.)
    2. Select the paratag for the heading, sub-title or whatever that contains the content that you want to go to.
    3. Select the content (from the paratag content list on the right side of the panel) that you want to go to.
    4. Click on the "Go to Source" button.
    Voilà, you're there.

  • Auto Force Framed Objects to Next Page

    How do I auto force a placed object to the next page? As you can see in the picture, I have two objects almost on top of each other. The bottom object is being forced up because there isn't enough room at the bottom of the page. I know I can force it to the next page using a hard line break, but I want the content to flow on its own as I make changes. I did try playing with the keep options, but to no avail.

    Well, I was hoping to look at the same portion of text in both images, but your first image shows VAC 4, House Plans and the Story Editor shows VAC 4 Wise Builders, which I imagine is a different part of the document. Either way, I don't know of a way to move an anchored object to another page without moving the anchor itself. I assume you are using a custom anchor, as opposed to Inline or Above Line, correct?
    By looking at your Story Editor image, I can see you separate your paragraphs with double paragraph returns, you have a double-tab in the paragraph after the anchor, and a whole string of paragraph returns, possibly as a way to allow space below your last visible paragraph, or to advance to the next page. This isn't what you are asking about, but that isn't the most efficient typesetting technique. You would be better off separating your paragraphs with the "Space After" paragraph attribute, using only one tab (and setting the tab position so you don't need two), and instead of lots of paragraph returns, you can either use a "Next Frame" character, or set the Keep Options of the following paragraph to begin on a new page/frame/column (which ever you have next).
    Personally, I would anchor an object with the text that describes or referrs to the object, so it wouldn't really be a benefit to move the anchored graphic to the next page if the text is going to stay where it is. I would probably move the text and the anchor along with it to the next page (by either replacing the paragraph return that preceeds that paragraph with a "next frame" character, or setting the keep options as described earlier.
    On the other hand, maybe I'm not understanding what you have or what you want. If you think that's true, maybe try describing it in a different way.

  • Method call before visual web jsf page loads

    Hi All.....
    I have written a method in a java class that accesses the mysql backend db to check if a process is still running. If the process is still running, a JOptionPane is produced informing the user of this and offers an <ok> option(to check the process status again) and a <cancel> option(to redirect the user to the homepage). If the process is completed, I want the page to just load as normal. I want this method to be called before the visual web jsf page loads. I have the method call in the super_init() method of the page and everything seemed to be working fine, the problem I have run into is that if I set the value in the db to show the process is running, the JOptionPane is produced(like it should be), and then if I set the value to show the process has completed and choose <ok> from the pane, the page loads.....this is what I want. Now, after the page loads, if I set the value in the db to show the process is running again, the JOptionPane is produced again right after I apply the changes to the db edit!!!!. I don't know why this is happening. Should I be calling the method from somewhere other the super_init()????? I have tried the method call in the prerender(), preprocess(), and destroy() methods all with the same results.
    Anyone have any ideas on what the problem could be??
    Thanks in advance.
    Silgd

    The Java part of a JSP/Servlet based webapplication runs physically at the server machine.
    Only the HTML/CSS/JS part which is generated by the webapplication and sent to the client physically runs at the client machine.
    JOptionPane is a Java Swing component which thus runs at the server machine. So you as client would only see it when both the server and the client runs at physically the same machine. Which is often only the case in development environment and doesn´t occur in real life! There is normally means of two physically different machines connected through the network/internet.
    To solve your actual problem, look for Ajax poll techniques. To display an alert or confirm dialogue in the client side, you use Javascript for this.

  • Another Career Advice thread

    Hi All, I just have a bit of a career question/rant. I'm hoping some of the more experienced members may be able to guide me.
    It seems to me that there are two general "streams" or career paths that a database developer can go down. One can become a BI specialist and work with data warehouses and the ETL processes that come with it, or one can become an expert in transactional processing with high-volume OLTP systems.
    I'm at the stage in my career (having been an oracle developer for 9 years) where I'm actively trying to get the illustrious "investment bank contract". However I'm butting my head against what seem to be (to me, at the moment) unreasonable requirements.
    I regularly see in job advertisements, statements like "must have experience working in a large commercial environment with 5Tb+ OLTP systems", "experience with High volume OLTP systems essential" and the incredibly restrictive: "Must have prior investment banking experience".
    I understand that there is business reasons for wanting to have someone with prior investment banking experience, but my (potentially ignorant) rant is that the coding methodologies for "high-volume" OLTP systems should be the same as "lower-volume" ones. You write the code to the best of your ability and ensure that it is efficient as possible, you keep abreast of the latest additions to PL/SQL and you use all the tools oracle provides as appropriate. As far as I can see, there is no magic wand that instantly makes a programmer "able" to deal with high volume systems.
    An example of a question that frustrates me: my friend (a java programmer) asked me "so if you had a large volume web-driven transactional environment and you needed to ensure that the code was running as efficiently, what techniques would you use". I was speechless, I answered that I couldn't possibly know what techniques to use without seeing the architecture and knowing the data. He tried to prompt me for just examples and I hesitantly spouted off things like "pipelined table functions", "query tuning" and "bulk processing techniques" etc. I felt it was like asking a builder "if you had to build a building, what tools would you use?"..."a spade?, a jackhammer? a bobcat?, blasting equipment? Nails? Hammer?" What's appropriate for the job. they're all just tools and it will depend on if you're building a skyscraper or a cubby house for someone's kid....
    When I get asked "have you created tables before?" at job interviews I tend to look at the interviewer incredulously and say "yes...." waiting for a follow on question and possibly it comes across as hesitation, when they don't follow up or just say "oh, good" I think to myself "of course I have you moron, I wouldn't be much of a database developer if I hadn't", . But I feel like an idiot putting "have created tables, indexes, constraints" on my CV, in just the same way a builder would feel if he put "have hammered nails, screwed screws and cut wood" on their CV. But apparently it is something recruiters want to see?
    ...and so my question is: what's so special about high volume systems? What esoteric coding methodologies am I missing? I guess, more to the point: What skills do I need to demonstrate to a potential interviewer and on my CV?
    Back to the builder analogy: "oh yes, I'm very good at using a spade and I've used a hammer for over 10 years and know some very good hammering techniques. I'm also have experienced of using a nail gun and a saw." What am I missing here?

    Quick one.
    With 9 (continuos) years of development, I think you should not be scared of those adverts as long as you have the technical experience. The business or banking knowledge will come on the job. The recruiters post what they have been given from a list of generic requirements. At some places, they will ask you in details. At some, they will not.
    On Sector knowledge, it is required in most cases, but if a manager wants to give you a start, then they will not bother once you have the experince. They are stated as beginners. No one was born on the job.
    One simple Q&As. The questions are asked to test your ability to respond to requests or tasks. For instance, just answering "Yes" to answer "Have you created a table before", is not enough. I already know that after 9 years, you have created tables, but I would like you to follow it up with an example and a project scenario.
    Another reason I would ask you "what is a table" is to test your patience. We always think is is an insult to be asked cheap questions in an interview, but your to-be manager would like to know how you would support and react your users/clients when they are those common simply end-user questions.
    High volumes of data requires high efficiency processing. Fora instance, your friend wanted to know what you will put in place to ensure efficiency of a "web-driven transactional environment". One simple clue (out of many) is that the user at the Web front end wants to see the data as quickly as possible. So if I have 1000 rows to retrieve on the screen, I do not want to wait to see the 1000 at the same time. I want to see it 100 rows at a time. So at the database level (of session) I can use FIRST_ROWS to tell optimizer to get things fast, set arraysize to 100, create my screen to show 100 rows and provide a Next button. This is one simple answer to let them know that you have an idea. Later you can research the harder ones.
    So, if you see the advert, go for it. Just let them know that you are willing to learn the business sector part of things on the job.
    Goodluck

Maybe you are looking for