Modernising the writing, debugging and management of Symbolic Code – Scheduled for OI 10.0.4.


youtubeoi10-e1529069260513.pngI was recently working on a new application and I came across an issue with one of my symbolic dictionary items.  The code was pretty simple, but not being a professional developer, I just could not see what the issue was.

Now, I would usually have dropped in a simple debug statement to see what variables were being set when and with what values.  This would have quickly told me where I had gone wrong in my code.  So, I dropped a Debug statement into my symbolic code, saved the table, ran the form and we dropped into the debugger.

Alas, no variable information is displayed in the debugger for the symbolic code and I was none the wiser for my efforts.  Back to the very simple Symbolic Code editor and I had to work things out for myself.  With only three lines of code, I actually managed to find the error pretty quickly, but just imagine if that was a 100 lines of code, a thousand lines of code or more – yes I have seen this on more than a few occasions.

I was talking to Bob Carten during one of our exploratory and (for me) learning sessions and I mentioned how difficult the symbolic editor is to work in.  He laughed and asked if I’d be interested in a new feature coming in OpenInsight 10.0.4 and which specifically addressed my issue.

In fact, Bob told me excitedly that this new method of writing symbolic code, opens up a whole host of other possibilities.  He touched on them, but I am afraid that he quickly left me scratching my head.  For example, why would you want to have a three part conversion, at least that’s what I think we were talking about?  Anyway, that’s for another time.

For now, you can see this new technique in my latest OI10 Quick Start Video which has just finished uploading to my YouTube channel.

Advertisements

Catch Up Time


Firstly, I am sorry for having been so quiet recently.  As many of you will know, I have been heavily involved with learning OpenInsight 10, planning and then producing the OpenInsight 10 Quick Start Videos.  I have now produced and published 46 individual lesson videos on my OpenInsight 10 YouTube Channel and I still have reporting and a few other topics to cover over the next few weeks.

However, I wanted to share some wonderful news that came to my attention a couple of weeks ago.  Every year Database Trends and Applications (DBTA) publish their annual industry awards and this year OpenInsight 10 was voted the Reader’ Choice Award Winner in the Best MultiValue Database category.  This is quite the accolade considering that OpenInsight 10 has only been released for a very short time and it is a very welcome acknowledgement of the fantastic work undertaken by Mike, Carl and the whole developer team at Revelation Software.

If you would like to experience OpenInsight 10 for yourself, please drop me a line via www.revsoft.co.uk and I will get back to you as quickly as possible with details of the OpenInsight 10 evaluation.

 

New OpenInsight 10 YouTube Training Video Playlist


YouTubeOI10

Several of you have been chasing me about the OpenInsight 10 (OI10) training videos recently and the need for these was highlighted recently with the news that we have several non-OpenInsight MultiValue developers taking an interest in the tool set.

I have just finished producing the first three videos in the training series and I have published them to my new OI10 YouTube Channel and in a new playlist which will be added to as I get to finish more videos.

These first three videos are fairly light weight:

  1. The first touches on what OpenInsight is, where is came from and there is a quick overview of the OI10 development environment.  The overview is a reproduction of one of my earlier videos but it is included here for people who are new to OpenInsight and it is therefore conveniently placed in the Lesson playlist.
  2. The second video looks at installing the OI10 evaluation software and making some initial configuration changes ready for the training videos to be followed.
  3. The third video looks at how to create your first application and how to add an application level user into the system using the enhanced security.

I have also added a link to my earlier OpenInsight 9.x tutorial video playlist and which is located on a totally separate YouTube channel.

As usual, access to the video series is 100% free and I hope that existing and new OpenInsight developers and users will find the series of videos useful.

If you have not already, please be sure to subscribe to the channel to get notification of when additional videos are uploaded.  I expect this to be fairly frequently initially and then things will slow up as I have to learn more about the massive changes that have been delivered in OpenInsight 10.

As always, please comment below the videos to let me know that they are being watched and whether you find them useful or not.

An Introduction to the Features and Benefits of OpenInsight 10.


didyouknowoi

An Introduction to the Features and Benefits of OpenInsight 10

Thursday, June 7th, 2018
11:00 am PT / 2:00 pm ET / 7:00 pm BST

REGISTER NOW for this complimentary webcast.

As a reader and subscriber of this blog, you will not have failed to notice that in April  2018, Revelation Software proudly announced the long anticipated official release of OpenInsight Development Suite (OI) 10.0.  This ground breaking released has been completely re-engineered for 64-bit and there are a wealth of new features and benefits which make application development in OpenInsight easier and faster than ever.

Nearly every bit of code in the product has been rewritten, from the user’s interface, to the various reporting tools and the speed of the indexing routines.  Revelation Software have listened to their user base and delivered in this release.

If you are a WORKS subscriber, OpenInsight application developer, MultiValue application developer, or simply someone looking for an easier application development tool set – This is a FREE Webinar that you cannot afford to miss.

To just touch the surface, OpenInsight 10 provides the following new and/or improved components:

  • New IDE
    OpenInsight 10 delivers a brand new Integrated Development Environment (IDE) to developers.  It is visually similar to modern application development tools, it is intuitive and yet it is still designed for the MultiValue developer in mind.  Each of the product’s designers, for forms, tables, reports and all others are now contained into a single, cohesive and dynamic work space.
  • Arev64
    The next generation of the Advanced Revelation emulator, utilising the full power and capabilities of modern 64-bit architectures.  Yet again, Revelation have extended the life of their legacy DOS applications.
  • User and Data Security
    With increased concerns about security and privacy, including the current GDPR requirements, a number of enhancements and changes have been made to further   strengthen data security within OpenInsight and to provide system manager (DBA’s) with greater user management controls.
  • Management Console
    The OpenInsight Management Console is a powerful browser-based database management tool for system administrators.  It provides an overview of your system and the ability to send useful and timely messages to workstations.
  • Git Integration
    For small, medium and large development team, managing your code is a must and OpenInsight’s repository based environment is now tightly integrated to the Git   source code management system and thereby giving you access to one of the leading application development management tools for teams.
  • Universal Driver 5.1
  • This latest version of the ever popular Universal Driver supports 64-bit operating systems and Volume Snap Shot (VSS) capability.  Together, these technologies provide the highest levels of reliability and the facility to quickly recover if something should go bad.

In this webinar Mike, Bob and Bryan will provide an overview of these new features and
benefits of OpenInsight 10 and more.

REGISTER NOW for this complimentary webcast.

If you are unable to attend at this time, register today and attend the archived event at your convenience!

Renaming a Table


didyouknowoiSo, I build most of my applications without much planning and preparation.  Yeah, yeah, I know P*** poor planning = P*** poor performance, but I am not a professional and I don’t pretend to be, I just quickly knock systems together for a hobby, as a learning process and also for demo purposes.

In the the following case, I had a table called MP_OPPORTUNITIES, named thus for historical reasons and so that I could easily copy and paste code from another application into this one.  However, the application that I am working on ‘might’ make it into OpenInsight 10, or I might release it on a case by case basis to OI WORKS developers, I’ve not decided yet, and for that reason I’d like to have table names and form names that make some sense.

Anyway, the form would be better named MP_ORDER_ENTRY and therefore the corresponding data table would also benefit from being called MP_ORDERS (following my naming convention).  So, I dropped into the Database Manager, changed the table name and was prompted with the Impact Analysis report.  I noted the items and duly renamed the table.

Problem 1 – The form now opens as read only and I cannot change the data bindings, as I had expected I would :(.

Plan B: Restore from backup and this time I’ll clear out all of the data bindings in the form, save it and then rename the table.

Problem 2 – OI will now not save the form because I appear to have a rogue data binding and OI cannot find column ” “.  I checked all of the data bindings and even removed a couple of edit tables, alas no joy!!

A quick call to support and once again the guys put me on the right track.
It is always easier to do things the right way, instead of blindly ploughing into self made problems.

So, if you have a badly named table, this is the best way that ‘I’ have found to put your system right:

  • Design the database and system properly from the outset ;-).

    This should be a given,  but if you are like me, you’ll need to do the following:

  1. Firstly take a good backup of your system, right before you try this and not the day before, like me (will I ever learn?).
  2. Open the Database Manager, select the table that you wish to rename and rename it to your new table name.

    renametable

  3. When you rename the table, OpenInsight will conveniently run an Impact Analysis check on the system and report entities that you might (will) need to look at following the renaming of the table.  OpenInsight does not (at this stage in the OpenInsight 10 development) rename all of the values throughout the system for you.  That’s currently a manual process.

    impactanalysis
    In my case, this means looking at two forms.  For a system that might be a little older, it gets a little more difficult and you might have popups, reports and other entities to consider.  It might even be worth sticking with your badly named table.  After all, the only time that end users are likely to see the table name is if you have exposed any report writing tools to your users.

    I should also point out that, I have previously chosen bad table names and I have renamed them before creating any forms, popups, reports, etc. against the data tables.  Those rename perfectly and with no extra worries or work involved.

  4.  So, we now have our renamed table and list of problem forms.  Lets sort those out by opening a record (Ctrl+R, or Open Record), selecting SYSREPOSWINS as the Table Name and locating our required Record/s.  In my case it is the form called SYPHERSPOS**MP_OPPORTUNITY_ENTRY (as shown below).

    openrecord

  5. This will open up the record in the OpenInsight Integrated Development Environment (IDE) using the appropriate tool, the System Editor ++ in this instance.  For the uninitiated (like me), this is a daunting screen and one in which (I think) someone with only a little knowledge can do a lot of damage – so be careful and get advice if you don’t know what you are doing.

    openrecord1

  6. Thankfully, OpenInsight’s ‘Find and Replace’ feature comes to the rescue.  From the Search menu, we select Replace and we are prompted with the dialogue window shown below.  Simply enter the value that we want to search for in the ‘Find what’ prompt (our old table name in this instance) and the new new table name in the ‘Replace with’ prompt.  All very straight forward.

    findandreplace2

    OpenInsight will then trawl through the record and let you know how many instances of the value have been found.  Click Replace All (as above) and the System Editor makes the changes and reports the replacements accordingly.

  7. So, we now have a renamed table and a form with an old name and new data bindings.  We can now launch and run the form and it’ll work just fine, pulling data from the newly named table.  However, one last step is needed to put our system right.

    We open the MP_OPPORTUNITY_ENTRY form in the Forms Designer and simply select ‘Save As’ from the File menu and save the form with the new name – MP_ORDERS.

    renameform

    This will leave you with both our new MP_ORDERS form and the old MP_OPPORTUNITIES form.  Open the old form and select Delete from the File menu and you are done.

Of course, all of this hard work could have been avoided if I’d spent a few minutes properly planning my system.  However, it is nice to know that OpenInsight and the guys at Revelation Software still have my back and if I get myself into, they can help me to get out of that mess again.

Note to self – It really is time to get some proper training 😉

Thank you to Andrew and Bob for helping through this.

 

 

 

Index Rebuilding in OI10


dbmindexrebuild
The Database Manager as seen in OpenInsight 10

This is another of my ‘reminder to self’ blog postings but something that one or two of you might find useful.

In OpenInsight 10 you can view the Database Manager panel and simply select a data table, right mouse click to open the context menu and from there you can do a whole host of things, including rebuilding the index for that table (see the image to the left).

That is great, but what if you want to rebuild all of your indexes.  It’s going to be a little cumbersome and time consuming selecting each table, then right mouse clicking, then selecting rebuild index, then waiting for it to rebuild and then repeat, repeat, repeat …

Following a quick conversation with Bob, I had the solution.  For the moment, the option to rebuild all indexes in an application from a menu is not available.  A convenient menu option might well come in an update, but for now it is as easy as launching the System Monitor (but you’ll have that running already in development mode) and typing ‘update_index””,””,1’ and hitting return to execute the command (as shown below).

indexrebuild
The System Monitor, running under OpenInsight 10.

You will get a message to let you know how many tables you will be rebuilding the indexes for and a reminder that this “could take a long time”.  Click Yes to continue and OpenInsight will go away and index all of your tables.  There is no progress bar at the moment, so watch the OpenInsight 10 Main IDE’s status line for messages about the indexing.  You’ll see OpenInsight run through your tables and (assuming all goes well, which it will) you will be presented with a “Processing Completed” note in the status line.  Job done.

Thank you to Bob Carten for this tip.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Controlling TCL


tcl

I have recently been asked if OpenInsight 10 can be enhanced to enable developers to filter TCL commands, or in other words, to only show TCL commands that the developer wishes to expose to their end users.  For example, it is often a requirement or wish, for DELETE to be removed or screened from the users because it can cause issues.  However, it would be useful if LIST could be exposed so that knowledgeable end users could run list commands for quickly produced ad-hoc reports.

During one of my catch-up sessions with Mike, I put this to him and found that this is actually something that was introduced back in 2009.  Most likely following a customer request at tone the RUG meetings that Mike holds from time to time.

As Mike has detailed for me, configuring the system to filter TCL commands it pretty straight forward:

  1. As an OpenInsight developer, you initially need to make a record in the SYSENV file.  This record should have a key with one of the options noted below:
    • TCLCMDS*APPNAME*USERNAME
    • TCLCMDS**USERNAME
    • TCLCMDS*APPNAME
    • TCLCMDS
  2. In this record, you should enter a command that you want your users to have access to and be able to use from TCL (as shown below).  The user will then be limited to using only those those commands by typing the commands into the TCL as normal.  The TCL Assistant will also then only show those commands that are available to the users.
TCL-SYSENV
Configuration record as seen in OpenInsight 10

Now, with the options set as above, when the TCL Assistant button is pressed the user will be given a filtered list of available commands (as shown below).

tcl
Filtered TCL Assistant as shown in OpenInsight 10

If the user tries to be clever and force a command that has been filtered out of the available options (for example, DELETE or COPY_ROW), OpenInsight will return a ‘command not supported’ message and the command will not run.

This now enables developers to safely expose TCL with the controls that ensure that their systems are safe and that end users cannot run a command that is not unsupported by the developer in their application.

I no longer maintain an OpenInsight version 9 system on my machine for testing this (I’m fully OI10) and although the screen shots within this posting are taken from an OpenInsight 10 system, the above should be possible in most of the OpenInsight 9.x versions released since 2009.

Finally, thank you to Mike for helping me to put this blog posting together.