<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>StudioWorks - Version 2008-04-30</title> <meta name="keywords" content="omnis studio, raining data, studioworks documentation" /> <link rel="stylesheet" type="text/css" href="http://www.studiotips.net/css/codedoc.css" /> <link rel="stylesheet" type="text/css" href="http://www.studioworks-dev.net/css/codedoc.css" /> </head> <body> <div id="container"> <p><a href = ../index.html > Sw4 </a> &nbsp &gt; &nbsp <a href = index.html > About </a> &nbsp &gt; &nbsp Version 2008-04-30</p> <a name="version20080430" /> <h2>Version 2008-04-30</h2> <p>This release introduces a few significant structural changes to the framework.</p> <ol> <li><span class="nav">Demos!!!</span> - All of the <span class="nav">StartNewApp</span> demo libraries have been combined into a <em>single</em> library named <span class="code">myAppDemos</span>. The classes for each demo has been put in a separate folder within the library. All of the demos show up in the navigation list under a <span class="nav">Demos</span> group.<br /> <br /> New demos which have been added: <span class="nav">Print PDF Demo</span>, <span class="nav">Email Demo</span>, <span class="nav">Field Handler Demo, <nav>List Tab Edit Container Demo</span></li> <li><span class="nav">Field Handling</span> - The field handlings and decorating classes have been completely restructured and rewritten. The new field handlers make it <strong>much</strong> easier for developers to customized and control field handling and decoration. See <span class="nav">Windows > Field Handling</span> for more information.</li> <li><span class="nav">Database Sessions</span> - The <span class="code">oLogon</span> series classes have been replaced by an <span class="code">oDBSession</span> series of classes. The new <span class="code">oDBSession</span> classes remove dependency on the <em>session name</em> and can work with <span class="code">$sessions</span> or <span class="code">$sessionpools</span>. (There appears to be an Omnis Studio bug that currently messes up how I am using <span class="code">$sessionpools</span> - hopefully that will be cleared up in the future.) <br /> <br /> The <span class="code">oDBSessions</span> structure is designed to make it simple for StudioWorks apps to work with multiple databases simultaneously.<br /> <br /> The <span class="code">sessionname</span> property is as an ID for the session as stored in the <span class="code">oSessionManager</span> saved sessions. The <span class="code">sessionname</span> is <strong>not</strong> important for the name of the actual session which is opened with the database. The <span class="code">oDBSession</span> object appends a numbered suffix to the <span class="code">sessionname</span> when it opens a session with the database.<br /> <br /> The database sessions change cascades to the Database Admin classes, Table Classes, Error Handler, and oRefs.<br /> <br /> Database session documentation has been added under the StudioWorks > <span class="nav">SQL</span> section.</li> <li><span class="nav">Base Table Class</span> - All of the <span class="code">tBase</span> methods have been moved to <span class="code">oTableClassMethods_DBMSVENDOR</span> classes. <span class="code">tBase</span> is now a <em>bridge</em> object which instantiates the correct <span class="code">oTableClassMethods</span> object for the current session's DAM and then forwards any messages to the instaniated methods object class. This makes it very easy to override and modify a table class method for a specific DBMS.<br /> <span class="code">tBase</span> first check your main library for an <span class="code">oTableClassMethods_DBMSVENDOR</span> object, making it possible for you subclass any of the <span class="code">oTableClassMethod_DBMSVENOR</span> objects to your main library and override or enhance the StudioWorks object's table class methods.</li> <li><span class="nav">Primary Keys</span> - All primary keys related code has been moved to a set of <span class="code">oPrimaryKeys</span> series objects. This way the same primary keys code can be shared by <span class="code">oTableClassMethods</span> and <span class="code">oDBAdmin</span>. A subclass of <span class="code">oPrimaryKeys_abstract</span> has been created for each DBMS vendor. The <span class="code">oPrimaryKeys_abstract</span> superclass code defaults to creating and using a <span class="code">pkey</span> table for primary key counters. Subclasses override the superclass <span class="code">oPrimaryKeys_abstract</span> methods if the DBMS is used for providing primary keys.<br /> <br /> Both <span class="code">oTableClassMethods</span> and <span class="code">oDBAdmin</span> first check your main library for an <span class="code">oPrimaryKeys_DBMSVENDOR</span> object, making it possible for you subclass any of the <span class="code">oPrimaryKeys_DBMSVENDOR</span> objects to your main library and override or enhance the StudioWorks object's methods.</li> <li><span class="nav">Check Data</span> - All check data code has been moved out to an <span class="code">oCheckData</span> class. <span class="code">oCheckData</span> can be subclassed to the same library as your schema class and named <span class="code">oCheckData_tablename</span>. <span class="code">$check_ColName</span> or <span class="code">$check_BusinessRule</span> methods can be added to the subclass. Any <span class="code">$check_</span> prefixed method will be called by the <span class="code">$checkCurrRow</span> superclass method. By moving all check data related code to a separate set of objects custom check data code can be shared by table classes, window classes, and objects classes. <br /> <br /> A <span class="code">$checkColumn(pColName)</span> method has been added to <span class="code">tBase</span>. This allows you to immediately run a check on a single column on <span class="code">evAfter</span> in a field <span class="code">$event</span> method. See <span class="nav">SQL > Check Data</span> for more information.<br /> <br /> The <span class="code">$checkData</span> method in <span class="code">tBase</span> has been renamed to <span class="code">$checkCurrRow</span> for better clarity on what the method does.<br /> <br /> The <span class="code">$checkCurrRow</span> method of a <span class="code">tBase</span> instance bound to a query class will now call custom <span class="code">oCheckData_tablename</span> <span class="code">$check_</span> prefixed methods of the base table... a problem that we couldn't solve in previous StudioWorks releases.</li> <li><span class="nav">DB Admin Classes</span> - All of the <em>database users</em> related methods have been moved to a separate set of <span class="code">oDBAdminUsers</span> series of classes. This greatly simplifies the <span class="code">oDBAdmin</span> series classes allowing them to focus on create/alter/sync operations on database tables.</li> <li><span class="nav">DB Admin Users</span> - This new series of <span class="code">oDBAdminUser</span> series classes contains all of the <em>database users</em> related methods. <em>Database users</em> are different than <em>App users</em>. App users are in the users we add to the <span class="code">usr</span> table. Database users are in the DBMS. (e.g. root, _system, dbadmin) Databases which support users have GRANT/REVOKE privileges on tables. To the best of my knowledge all StudioWorks developers are logging on to their databases as the tables owner user, so the oDBAdminUsers series of object is not pressing. FrontBase is the only database users code that I've written to date. The code needs to be tested.</li> <li><span class="nav">DB Admin Data Mover</span> - Completely overhauled and tested with OmnisSQL, MySQL, PostgreSQL, FrontBase. You can point to a new database and click <span class="nav">Full Sync and Copy Data</span>, or <span class="nav">Quick Sync and Copy Data</span> in this window. No need to first sync the database in the <span class="nav">Schemas and Tables</span> window. Code has been added to remove the selected <span class="nav">Source Database</span> from the list of <span class="nav">Target Database</span>s preventing you from accidentally selecting the same session as the source and target.</li> <li><span class="nav">DB Admin Interactive SQL</span> - SQL history has been added. Each time you successfully execute a SQL statement it is added to the <strong>end</strong> of the <span class="nav">Unique History</span> list. If you click an item in the history list it is loaded into the SQL text field where you can edit it. Double-clicking on an item loads and immediately executes it. The history list is saved to your <span class="code">local_prefs.df1</span> file.</li> <li><span class="nav">Refs Primary Keys Counter</span> - All of the primary key related methods have been removed from the oRefs object. All primary key related methods are now part of the oPrimaryKeys series of objects. The refs table is no longer used to store primary key counters.</li> <li><span class="nav">Refs Session</span> - The <span class="code">oRefs</span> object no longer opens a second session to the main database. When the <span class="code">oRefs</span> object is initialized it stores a object reference to the specified <span class="code">oDBSession</span> object reference instance. (By default <span class="code">db1sess</span> is passed in.) <span class="code">oRefs</span> methods which increment counters check the session <span class="code">$transactionmode</span> and if <span class="code">kSessionTransManual</span> it temporarily opens a manual transactions session with the database, increments the counter, and closes the temporary session. This ensures that counters won't be rolled back - something that would be a real headache in multi-user environments.</li> <li><span class="nav">Lower Case Table Names, Primary and Foreign Key Names</span> - To make it easier to work with different databases (MySQL in particular) the table names in StartNewApp and in StudioWorks core modules (<span class="code">Errorlog, AppPrefs, LocalPrefs, Webappstat</span>) have been changed to lower case in names. The primary key and foreign key column names have also all been switched to lower case. (<span class="code">Country_pkey</span> becomes <span class="code">country_pkey</span>, <span class="code">Stateprov_fkey</span> becomes <span class="code">stateprov_fkey</span>). This change should not break existing apps. StudioWorks developers are free to continue to use mixed case table names and mixed case pkey and fkey column names.</li> <li><span class="nav">Path Objects</span> - I got tired of requiring StudioWorks developers to copy the <span class="code">oPaths</span> object class to their main library everytime a new method, enhancement, or fix is made to the <span class="code">oPaths</span> object. Several changes to <span class="code">oPaths</span> were made in this release for the unicode version of Omnis Studio. With this release I've reworked the main library methods to make it possible to subclass <span class="code">oPaths_studioworks</span> from <span class="code">swBase4</span> to your main library. See the update notes for more information.</li> <li><span class="nav">String Tables</span> - The string tables structure has been overhauled and improved. The big thing is that the base language is named <span class="code">metadata</span>. As the name indicates is all of the metadata that you have entered in your application, including the <span class="code">_stb</span> schema classes. The metadata in the StudioWorks core libraries in in <span class="code">en-us</span>, but you are free to enter the metadata in your modules in the language of your choice. (<span class="code">fr</span>, <span class="code">it</span>, etc.) Your metadata will then be a mix of <span class="code">en-us</span> and the language you choose to use for the metadata for your modules. You then create <span class="file">stringtables_*.txt</span> files for any languages you want to support (<span class="file">stringtables_fr.txt, stringtables_en-gb.txt</span>). One file for each language. The <span class="file">stringtable_*.txt</span> file only needs to contain the rows where the language text is different than the metadata text. If the metadata in your modules is in French you would only need to provide the French language text for the metadata in the sw core libraries. The <span class="file">stringtables_*.txt</span> files will normally have the metadata langauge columns included in them, but <strong>only</strong> the language specified in the file name suffix will be loaded if the string tables are reloaded.<br /> <br /> You can allow customers to edit the string tables text for any language by giving them access to the <span class="nav">String Tables Editor</span> window. Any changes they make to the string tables text for any language are automatically saved to their database (Special rows in the <span class="code">refs</span> table, one record for each modified language). Only the <em>changed</em> values are saved to the customer's database. When the string tables are rebuilt the changed values for each language stored in the database are loaded last, overwriting any values found loaded from <span class="file">stringtables_*.txt</span> files. The metadata values are never overwritten, they are simply used if the current language value for an <span class="code">stbname.stbid</span> is empty.</li> </ol> <p>Upgrading to this version of StudioWorks will require some changes to existing StudioWorks applications... but the gains should be worth the pains. If you run into difficulties upgrading you app to this version, zip the app and send it to me with an email explaining the problems you are running into.</p> <p>To update to this new release:</p> <ol> <li>Quit Omnis Studio.</li> <li>Backup your application!</li> <li>Follow the <span class="nav">Upgrading oPaths Object</span> instructions in the next section.</li> <li>Follow the <span class="nav">Upgrading oLogon to oDBSession</span> instructions in the next section.</li> <li>If you have <span class="file">stringtables.txt</span> files in your <span class="file">startupitems</span> folder... rename them adding the correct <span class="file">_*.txt</span> language suffix.</li> <li>Toss your <span class="file">app_prefs.df1</span> file in your modules folder to force all cached lists to be rebuilt.</li> <li>Open you application and test it.</li> <li>If you hit any snags, email me a zip of your application with instructions on when and where you are running into problems.</li> </ol>Each library and the modifications in the release are listed below. The modifications are compiled from the <span class="code">@MOD</span> tag comments found in the methods of the classes in the library. <a name="upgradingexistingswapps" /> <h3>Upgrading Existing SW Apps</h3> <p>This section covers upgrading your existing StudioWorks app to this new release.</p> <p>I got tired of requiring StudioWorks developers to copy the <span class="code">oPaths</span> object class to their main library everytime a new method, enhancement, or fix is made to the <span class="code">oPaths</span> object. Several changes to <span class="code">oPaths</span> were made in this release for the unicode version of Omnis Studio. With this release I've reworked the main library methods to make it possible to subclass <span class="code">oPaths_studioworks</span> from <span class="code">swBase4</span> to your main library.</p> <p>In previous versions we used <span class="code">oPaths</span> to tell us the path to the <span class="file">studioworks</span> folder, and then we would open the StudioWorks libraries. This meant that <span class="code">oPaths</span> could not be subclassed from <span class="code">swBase4</span>. This release introduces a self contained <span class="code">oOpenLibraries</span> object who's sole purpose is to find and open the <span class="code">App</span> libraries and find and open the <span class="file">studioworks</span> folder libraries. As soon as <span class="code">swBase4</span> is open the main library <span class="code">oPaths</span> has its superclass and is ready to use. Under the new structure any code fixes or new method I add to <span class="code">oPaths_studioworks</span> in <span class="code">swBase4</span> are automatically inherited by the <span class="code">oPaths</span> object in your main library. If a code change or fix is made to <span class="code">oOpenLibraries</span> you will only need to replace that object, which I doubt you will ever need to customize.</p> <ol> <li>After you have made a backup of your existing application, replace your old StudioWorks core libraries with the new StudioWorks core libraries.</li> <li>Open your existing application's main library without opening the startup task. (Hold down the Ctrl/Cmnd key when you open the library.)</li> <li>Rename the <span class="code">oPaths</span> object in your main library to <span class="code">oPaths_YYYYMMDD</span></li> <li>Open the <span class="code">myAppMain</span> library of the new StudioWorks release.</li> <li>Drag the <span class="code">oPaths</span> object from <span class="code">myAppMain</span> to your main library. The new <span class="code">oPaths</span> object is subclassed from <span class="code">oPaths_studioworks</span> in <span class="code">swBase4</span>.</li> <li>Copy an custom methods added to your old <span class="code">oPaths</span> object to the new <span class="code">oPaths</span> object. Review any modifications you made to the old <span class="code">oPaths</span> object class and add them to the new oPaths object if necessary. Hopefully you won't need to override and modify any of the superclass methods.</li> <li>Drag the <span class="code">oOpenLibraries</span> object from <span class="code">myAppMain</span> to your main library. The <span class="code">oOpenLibraries</span> specializes in opening your App's modules and the StudioWorks core libraries.</li> <li>Drag the <span class="code">oDBSession</span> object from <span class="code">myAppMain</span> to your main library.</li> <li>Rename the <span class="code">Startup_Task</span> in your main library to <span class="code">Startup_Task_YYYYMMDD</span></li> <li>Drag the <span class="code">Startup_Task</span> from <span class="code">myAppMain</span> to your main library.</li> <li>If you have modified the <span class="code">Startup_Task</span> in your main library, copy and modified methods in your original <span class="code">Startup_Task</span> to the <span class="code">Startup_Task</span> you copied from <span class="code">myAppMain</span>. The key changes made in the new <span class="code">Startup_Task</span> are:</li><ul> <li>Addition of the <span class="code">db1sess</span> tvar.</li> <li><span class="code">$construct</span> method calls <span class="code">oOpenLibraries</span> object to open the App and StudioWorks libraries.</li> <li>The <span class="code">$openAppLibraries</span> and <span class="code">$openSWLibraries</span> and <span class="code">openLibrariesInFolder</span> methods have been <strong>removed</strong> from the main library <span class="code">Startup_Task</span>.</li> <li>The <span class="code">_closeLibrariesInFolder</span> method has been renamed to <span class="code">closeLibrariesInFolder</span>.</li> <li><span class="code">$signInOKContinue</span> method defaults to calling the <span class="code">setErrorHandlerDatabaseSession</span> method.</li> <li>The <span class="code">setErrorHandlerDatabaseSession</span> method has been modified to send a <span class="code">$setDatabaseSession(db1sess)</span> message to the error handler.</li> </ul> <li>Open the <span class="file">swGui4.lbs</span> library of the new release.</li> <li>Copy the <span class="code">Startup_Task</span> from <span class="code">swGui4</span> to each of your modules, replacing the existing <span class="code">Startup_Task</span> in each module, so that the <span class="code">db1sess</span> tvar will be visible to the code in all of your modules. (This assumes your modules are not actually using their <span class="code">Startup_Task</span> class.)</li> <li>Delete the <span class="file">app_prefs.df1</span> file in your modules folder. This will force the lists to be rebuilt when you open your app.</li> <li>If you have any <span class="file">stringtables.txt</span> files you will need to add the language ID suffixs to the file name. (e.g. <span class="file">stringtables_fr.txt</span>) If you have more than one language in the same file you will need to copy the file and add the appropriate language ID suffix to each file name.</li> <li>Close all your libraries. </li> <li>Cross your fingers and open your updated app. All going well it will open without any problems. </li> <li>If you have runtimized your windows you <i>might</i> have to re-runtimize.</li> <li>You may need to resync your database. Be sure to backup your database before doing so.</li> <li>If you run into snags and can't resolve them, zip your app email it to me. <doug@venocr.ca></li> </ol> <a name="upgradingfromologontoodbsession" /> <h3>Upgrading from oLogon to oDBSession</h3> <p>This section assumes you have already completed the previous steps in <span class="nav">Upgrading the Main Library</span>.</p> <p>To upgrade your existing application code from <span class="code">oLogon</span> to <span class="code">oDBSession</span>:</p> <ol> <li>If you have not already done so, open your existing application's main library without opening the startup task. (Hold down the Ctrl/Cmnd key when you open the library.)</li> <li>Open all of the modules of your main library and open the <span class="code">swBase4</span> and <span class="code">swGui4</span> libraries.</li> <li>Close the <span class="code">swBase4</span>, <span class="code">swGui4</span>, <span class="code">myAppMain</span> libraries.</li> <li>Open the Omnis Studio <span class="nav">Find and Replace</span> window (Ctrl/Cmnd+F) and do the following:</li><ol> <li>Select all libraries in the <span class="nav">Classes</span> tab. This should be a list of just your application's libraries.</li> <li>Find <span class="code">logn.$:SessionRow</span> - Replace with <span class="code">db1sess.$:SessionRow</span></li> <li>Find <span class="code">logn.$:DAMName</span> - Replace with <span class="code">db1sess.$damname</span></li> <li>Find <span class="code">logn.$:DBMSVendor</span> - Replace with <span class="code">db1sess.$:DBMSVendor</span></li> <li>Find <span class="code">logn.$initialize</span> - Replace with <span class="code">db1sess.$initialize</span></li> <li>Find <span class="code">logn.$:SessionInfo</span> - Replace with <span class="code">db1sess.$:SessionInfo</span></li> <li>Find <span class="code">logn.$:TablesList</span> - Replace with <span class="code">db1sess.$tables</span></li> <li>Find <span class="code">logn.$retDBTablesList</span> - Replace with <span class="code">db1sess.$tables</span></li> <li>Find <span class="code">logn.$refreshSession</span> - Replace with <span class="code">db1sess.$reconnectSession</span></li> <li>Find <span class="code">logn.$log</span> - Replace with <span class="code">db1sess.$log</span> (This takes care of <span class="code">$logon</span> and <span class="code">$logoff</span>)<br /> <br /> Any <span class="code">db1sess.$logon</span> method calls with parameters no longer need the parameters. The <span class="code">oDBSession</span> object uses the initialize session row information for the <span class="code">username</span>, <span class="code">userpassword</span>, etc. If your <span class="code">logn.$logon</span> call was being used to open a <em>tablesowner</em> session with the database, you will need to replace <span class="code">logn.$logon</span> with <span class="code">db1sess.$logon_tablesowner</span>.</li> <li>Find <span class="code">logn.$:DBSetPrimaryKey</span> - Each of these calls need to be removed. This new version of StudioWorks does not use this property to decide whether or not the database is used to set the primary key. That decision is made by the <span class="code">oPrimaryKey</span> series of classes based on the DBMS vendor.</li> <li>Find <span class="code">logn.$:SessionObj</span> - Each of these calls need to be modified. <br /> <br /> If the session object is being fetched in order to then get a <span class="code">$newstatement</span> object from the session object, you should elimate that step completely and get the statement object directly from <span class="code">db1sess</span> using <span class="code">Do db1sess.$getStatementObject(StmntObj) Return FlagOK</span> Returning <span class="code">FlagOK</span> rather than <span class="code">StmntObj</span> make it much easier to immediatetly trap a bad statement object in your code. The <span class="code">$getStatementObject</span> method checks the session state to make sure the client is still connected and the database is still up and running. It will attempt to <span class="code">$reconnectSession</span> if the connection has been lost or logged off for some reason thereby reducing errors caused by lost sessions.<br /> <br /> If the session object is being fetched in order to set the <span class="code">$transactionmode</span> and issue <span class="code">$commit/$rollback</span> you should elimate that step completely and send the <span class="code">$transactionmode</span>, <span class="code">$transactionmode.$assign</span>, <span class="code">$commit</span>, <span class="code">$rollback</span> messages directly to <span class="code">db1sess</span>.<br /> <br /> If you really do need the session object of the <span class="code">db1sess</span> session then you need to <span class="code">Do db1sess.$getSessionObject(SessObj) Return FlagOK</span>. The <span class="code">$getSessionObject</span> method passes the session object to the sender via a field reference parameter, thereby allowing it to return true or false to the sender for easier error checking. The <span class="code">$getSessionObject</span> checks the <span class="code">$state</span> and will attempt to <span class="code">$reconnectSession</span> if the connection has been lost or logged off for some reason thereby reducing errors caused by lost sessions.</li> <li>Find <span class="code">logn.$</span> - Each of these calls need to be checked to see what call is being made.</li> <li>Find <span class="code">$ctask.db1sess</span> - Replace with <span class="code">db1sess</span></li> </ol> <p> <li> Review any changes you made to your main library <span class="code">Startup_Task_YYYYMMDD</span> startup task and copy them over to the <span class="code">Startup_Task</span>.</p> <li> All going well you should be able to open the <span class="code">Startup_Task</span> of your main library and sign-in to your StudioWorks app.<br /> </ol> <a name="myappmain" /> <h3>myAppMain</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Added 'db1sess' tvar and 'db2sess' tvar to the Startup_Task.</p> <p><span class="code">Startup_Task/$closeDemoLibraries</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Send message to 'pths' rather than ioPaths. Delete ioPaths ivar.</p> <p><span class="code">Startup_Task/$construct</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Call the oOpenLibraries object method rather than the Startup_Task method to open the App and StudioWorks libraries. oOpenLibraries is a self-contained object, allowing oPaths in the main library to subclassed from swBase4 rather than copied, making updates affecting oPaths much easier in the future.</p> <p><span class="code">Startup_Task/setErrorHandlerDatabaseSession</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Use the DB session object reference to set the database session in the error handler, rather than the session row.</p> <p><span class="code">oOpenLibraries/$#About</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Created a standalone 'oOpenLibraries' object class to be copied to the main library and called at the start of the $construct method of the Startup_Task. The object has 2 methods: $openAppLibraries and $openStudioWorks libraries. If an error occurs it is sent to the trace log and the trace log is opened.</p> <span class="code">oOpenLibraries/$openDB2SessLibrary</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Added method to open the library located inside the APP/libraries/db2sess/ folder <a name="mysysadmin" /> <h3>mySysAdmin</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Removed the 'logn' tvar. Added tvar 'db1sess'.</p> <p><span class="code">oSecurity_DBAccessor/$:GroupsList</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Removed early exit.</p> <p><span class="code">oSecurity_DBAccessor/$:GroupsList</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Changed 'Grp' table name to 'grp'. Changed 'Grp_pkey' column name to 'grp_pkey'.</p> <p><span class="code">oSecurity_DBAccessor/$:UsersList</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Removed early exit.</p> <p><span class="code">oSecurity_DBAccessor/$:UsersList</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Changed 'Usr' table name to 'usr'. Changed 'Usr_pkey' column name to 'usr_pkey'.</p> <p><span class="code">oSecurity_DBAccessor/$initialize</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Do not define the users and groups lists until they are requested.</p> <p><span class="code">oSecurity_DBAccessor/$updateGroup</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Send $retDefinedList message to oSQLLists to define the DBUsersList rather than copying from iDBUsersList as it might not be defined.</p> <p><span class="code">oSecurity_DBAccessor/$updateGroup</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Changed 'Grp_pkey' column name to 'grp_pkey'.</p> <p><span class="code">oSecurity_DBAccessor/$updateUser</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Send $retDefinedList message to oSQLLists to define the DBUsersList rather than copying from iDBUsersList as it might not be defined.</p> <p><span class="code">oSecurity_DBAccessor/$updateUser</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Changed 'Usr_pkey' column name to 'usr_pkey'.</p> <span class="code">oSpecialMenu/$createAutoSignInFile</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Changed 'Usr_pkey' column name to 'usr_pkey'. <a name="swbase4" /> <h3>swBase4</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-01 Doug K.)</span><br /> Added tvar db1sess which points to oDBSession</p> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-01 Doug K.)</span><br /> Took out the test $construct code which was allowing swBase4's Startup_Task to remain open. Reverted to immediately closing the swBase4 task instance.</p> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Removed the 'logn' tvar. Added tvar 'db1sess'.</p> <p><span class="code">Startup_Task_Module_template/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Deleted 'logn' tvar. Added 'db1sess' tvar. Deleted 'timers' tvar.</p> <p><span class="code">mContext/$control</span> <span class="moddateby">(2008-04-25 Doug K.)</span><br /> Copied the $control method from mContext in swGui4.</p> <p><span class="code">oAppPrefs/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Added sCachedlist_listdef for creating the Cachedlist table using oDBAdmin.</p> <p><span class="code">oAppPrefs/$initialize</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Change 'Do inherited' to 'Do $cinst.$inherited.[$cmethod().$name]' for easier debugging, stepping through code.</p> <p><span class="code">oCachedListsUpdater/$#About</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Added an object class that specialized in getting and setting values in all of the StudioWorks cached lists. This object is used to instantly access and update the cached lists as changes are made in the Programmers Workbench.</p> <p><span class="code">oCheckData_base/$#About</span> <span class="moddateby">(2008-04-04 Doug K.)</span><br /> Added oCheckData_base which can be subclassed to oCheckData_Tablename for custom check data methods.</p> <p><span class="code">oCheckData_base/$#About</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added missing sDatamssg_stb schema class for the check data messages.</p> <p><span class="code">oCreateTablesOwnerLogonFile/$#About</span> <span class="moddateby">(2008-04-19 Doug K.)</span><br /> Created an object class which specialized in creating the tables owner logon file. The method can now be called from the 'Create Tables Owner Logon File' button in the Sessions Manager edit window.</p> <p><span class="code">oDBAdmin/$setUserPassword</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Added $setUserPassword method for compatability with previous releases. The method simply returns kTrue.</p> <p><span class="code">oDBAdminMethods_OMNIS/$renameTable</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Modified the Omnis data file $renameTable method so that it successfully renames the slot.</p> <p><span class="code">oDBAdminMethods_OMNIS/$renameTable</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> The trick was to create file classes for the old and new slot before rename the slot.</p> <p><span class="code">oDBAdminMethods_abstract/$#About</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Massive changes to work with the oDBSession objects. Too many changes to note. This is a complete refactoring. Previous @MOD notes have been removed. This is a fresh start.</p> <p><span class="code">oDBAdminMethods_abstract/$#About</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Moved all 'superuser' and 'users' related methods to the new 'oDBAdminUsers' objects. This simplifies the oDBAdminMethods objects allowing them to specialize on tables, columns, indexes, constraints. FrontBase and SQLServer are the only DBMS vendors we've written 'user' related code for. The Omnis data file doesn't support 'users'. To date 'users' related code has only been written FrontBase and SQLServer. The Omnis data file doesn't support 'users'.</p> <p><span class="code">oDBAdminMethods_abstract/$closeSession_TablesOwner</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Delete the ioTablesOwnerDBSession object ref each time the session is closed.</p> <p><span class="code">oDBAdminMethods_abstract/$insertEmptyRecords</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Pass in the oDBSession object rather than the session row to $retDefinedList</p> <p><span class="code">oDBAdminMethods_abstract/$openSession_TablesOwner</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Set the ioTablesOwnerDBSession object ref $newref each time the session is opened. An object ref is needed so that ioTableOwnerDBSession can be passed to $retDefinedList.</p> <p><span class="code">oDBAdminMethods_abstract/$retDAMColsList</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Using the new oDBSession object to return the table columns list so all the code is in one place</p> <p><span class="code">oDBAdminMethods_abstract/$retDAMTablesAndViewsList</span> <span class="moddateby">(2008-04-28 Josh L.)</span><br /> Using the new oDBSession object to return the tables list so all the code is in one place</p> <p><span class="code">oDBAdminSQLText_MYSQL/$retSQL_CreateTable</span> <span class="moddateby">(2008-03-14 Doug K.)</span><br /> Reversed the @MOD:1 change. Table names are case-sensitive in other SQL statements as well on the Linux platform. Therefore it is up to the developer to use all lower case names in their schema classes to avoid the mysqldump problems. I recommend you include "lower_case_table_names = 1" in the MySQL my.cnf file.</p> <p><span class="code">oDBAdminSQLText_abstract/$#About</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Removed all of the 'user' related SQL text methods. Moved the code to the applicable oDBAdminUsers subclass objects.</p> <p><span class="code">oDBAdminSQLText_abstract/$_retDefinedList</span> <span class="moddateby">(2008-04-04 Doug K.)</span><br /> Added new method which binds the list to the schema class. No need for a table class for this object.</p> <p><span class="code">oDBAdminSQLText_abstract/$initialize</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Discovered that we don't need a 'live' logged on session object for the oDBAdminSQLText methods. Modified the initialize method to set ioSessObj to a static session external object. Parameter changed to pDAMName.</p> <p><span class="code">oDBAdminSQLText_abstract/$retSQL_CreateTable</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Call the new $_retDefinedList method.</p> <p><span class="code">oDBAdminSQLText_abstract/$retSQL_SQLDataType</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Call the new $_retDefinedList method.</p> <p><span class="code">oDBAdminUsers/$#About</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Moved all of the 'database users' related DBAdmin methods to a separater set of oDBAdminUsers set of classes.</p> <p><span class="code">oDBAdminUsers_abstract/$#About</span> <span class="moddateby">(2008-04-08 Doug K.)</span><br /> Moved all 'database users' releated methods from oDBAdminMethods to oDBAdminUsers series objects.</p> <p><span class="code">oDBSessionMethods_PGSQLDAM/$tables</span> <span class="moddateby">(2008-04-28 Josh L.)</span><br /> PGSQLDAM wasn't returning the correct list for kStatementServerAll (0) so to get around that, I accumulated the list of tables and views to make the correct list</p> <p><span class="code">oDBSessionMethods_base/$columns</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Added check to make sure pTableName is not empty.</p> <p><span class="code">oEmail/$initialize</span> <span class="moddateby">(2008-03-07 Doug K.)</span><br /> If a password is provided, automatically set ibUseAuthentication to true.</p> <p><span class="code">oEmail/pingSMTPServer</span> <span class="moddateby">(2008-03-07 Doug K.)</span><br /> Loop the TCPReceive multiple times till we get something into the buffer.</p> <p><span class="code">oErrorHandler/$setDatabaseSession</span> <span class="moddateby">(2008-03-14 Doug K.)</span><br /> Changed the $servertablename in 'sErrorlog' to lowercase 'errorlog'. Lower case table names work best with all databases.</p> <p><span class="code">oErrorHandler/$setDatabaseSession</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Change parameter to pfDBSessionObjectRef from pSessionRow and modify the method to use the new DBSession object.</p> <p><span class="code">oErrorHandler/_openDatabaseErrorLogViewer</span> <span class="moddateby">(2008-04-01 Doug K.)</span><br /> Pass ioDBSessionObjectRef rather than iSessionRow to $retDefinedList</p> <p><span class="code">oFunctions/$retListFromTextString</span> <span class="moddateby">(2008-03-10 Doug K per Josh L.)</span><br /> Added replaceall for kCr+kLF and then kLf for cross-platform compatibility.</p> <p><span class="code">oObjectClassErrorHandlerMethods/$#About</span> <span class="moddateby">(2008-03-19 Doug K.)</span><br /> Added an error handler template methods object class. The methods can be copied to objects which can operate independent of oErrorHandler and 'errhndlr'.</p> <p><span class="code">oOpenLibraries/$#About</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Created a standalone 'oOpenLibraries' object class to be copied to the main library and called at the start of the $construct method of the Startup_Task. The object has 2 methods: $openAppLibraries and $openStudioWorks libraries. If an error occurs it is sent to the trace log and the trace log is opened.</p> <p><span class="code">oOpenLibraries/retPathOmnisStartupFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Call ioPaths_PlatformFolders to get the 'Application' or 'Program Files' folder path.</p> <p><span class="code">oPaths_StudioWorks/$:ERRORSTOTRACELOG</span> <span class="moddateby">(2008-03-17 Doug K.)</span><br /> Deprecated $:ErrorsToTraceLog methods. oPaths_ automatically tests the errhndlr tvar with $cando and sends to trace log if it can't.</p> <p><span class="code">oPaths_StudioWorks/$:PathApplicationsFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathOmnisStartupFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Call ioPaths_PlatformFolders to get the 'Application' or 'Program Files' folder path.</p> <p><span class="code">oPaths_StudioWorks/$:PathOmnisStudioFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathProgramFilesFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathTempFilesFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathUserDesktop</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathUserDocuments</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathUserHome</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$:PathUserPreferencesFolder</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Redirect the call to the oPaths_PlatformFolder object class.</p> <p><span class="code">oPaths_StudioWorks/$_logError</span> <span class="moddateby">(2008-03-17 Doug K.)</span><br /> Call private method 'logError' which automatically tests errhndler and automatically sends error to trace log if errhndlr is not available.</p> <p><span class="code">oPrefs_abstract/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Switch from using oLogon to oDBSession. Use oDBAdmin for creating tables so that switch/case is not required for different DBMSs.</p> <p><span class="code">oPrefs_abstract/$_init_preparePrefsTable</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Use 'sPrefstable_listdef' and oDBAdmin to get the CREATE TABLE text instead of Switch/Case in this method.</p> <p><span class="code">oPrefs_abstract/$_init_preparePrefsTable</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Check for exact case match table name for Omnis data file. Rename if the case does not match.</p> <p><span class="code">oPrefs_abstract/$_retSQLText_CreateTable</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Added method which prepares the CREATE TABLE text using sPreftable_listdef and oDBAdmin.</p> <p><span class="code">oPrefs_abstract/$initialize</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Check the session row, if the DAM is OMSQLDAM, then make sure the df1 file has been created.</p> <p><span class="code">oPrefs_abstract/$initialize</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Expand the code which calculates the table name based on the schema class name. Go with a lower case table name.</p> <p><span class="code">oPrepareNewDatabase/$#About</span> <span class="moddateby">(2008-04-15 Doug K.)</span><br /> Rewrote the object after overhauling the oDBSession, oDBAdmin, tBase, oPrimaryKeys, oRefs classes in StudioWorks.</p> <p><span class="code">oRebuildCachedLists/rebuildRefs</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Use db1sess instead of logn task variable.</p> <p><span class="code">oSQLChildRecords/$DELETECHILDRECORDS</span> <span class="moddateby">(2008-04-07 Doug K.)</span><br /> Deprecated the $deleteChildRecords method. Superceded by the $deleteCascadeDeleteChildRecords method.</p> <p><span class="code">oSQLChildRecords/$deleteCascadeDeleteChildRecords</span> <span class="moddateby">(2008-04-07 Doug K.)</span><br /> Added a method which will very quickly delete any cascadedelete child records using a statement object and minimal SQL.</p> <p><span class="code">oSQLChildRecords/$doesRestrictedDeleteChildRecordExist</span> <span class="moddateby">(2008-04-07 Doug K.)</span><br /> Added a method which will very quickly find the first cascadedelete child record using a statement object and minimal SQL.</p> <p><span class="code">oSQLLists/$:DEFAULTSESSIONROW.$assign</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Deprecated the $:DefaultSessionRow.$assign method. Superceded by the $:DefaultDBSessionObjectRef.$assign method.</p> <p><span class="code">oSQLLists/$:DefaultDBSessionObjectRef</span> <span class="moddateby">(2008-03-27 Doug K.)</span><br /> Added method for the new oDBSession classes structure.</p> <p><span class="code">oSQLLists/$:DefaultDBSessionObjectRef.$assign</span> <span class="moddateby">(2008-03-27 Doug K.)</span><br /> Added method for the new oDBSession classes structure.</p> <p><span class="code">oSQLLists/$SETTABLESESSIONROW</span> <span class="moddateby">(2008-04-01 Doug K.)</span><br /> Deprecated the $setTableSessionRow method.</p> <p><span class="code">oSQLLists/$initialize</span> <span class="moddateby">(2008-03-27 Doug K.)</span><br /> Added 'sessionobjectref' column to the SQL lists master list. Set the $coltype to kObjectref. This column is used to store the object reference to the session object of any SQL classes that are to use a different session than the default session.</p> <p><span class="code">oSQLLists/$retDefinedList</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Added code to use the oDBSession object reference. The method still supports previous versions using the session row.</p> <p><span class="code">oSQLLists/$setTableDBSessionObjectRef</span> <span class="moddateby">(2008-04-01 Doug K.)</span><br /> Added a method to set the 'dbsessionobjectref' column to a specified 'oDBSession' object reference for a specified table.</p> <p><span class="code">oSQLLists/retDefinedListForCurrLine</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Moved initialization of the defined list to the $retDefinedList method.</p> <p><span class="code">oSQLTextJoinTables/retFromTableJoinText</span> <span class="moddateby">(2008-04-24 Doug K. per Andy H.)</span><br /> Include the table name prefix for all column names, not just non-unique column names. Left a hook for the option to change back in the future, by setting ibAlwaysIncludeTableNamePrefix.</p> <p><span class="code">oSecurity/$addDefaultSysAdminUser</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Calculate Urs_pkey and usr_pkey to cover both cases.</p> <p><span class="code">oSecurity/$addDefaultSysAdminUser</span> <span class="moddateby">(2008-04-23 Doug K.)</span><br /> Call $setDefault to make sure the 'usr' columns are set properly.</p> <p><span class="code">oSessionsManager/$#About</span> <span class="moddateby">(2008-04-10 Doug K.)</span><br /> Removed the $openSession and $pingDatabase methods from this object. Those are better handled by oDBSession. Removed the $retOpenSessions method. With session pools session we can't 'see' the sessions anymore.</p> <p><span class="code">oSessionsManager/$:DefaultSessionRow</span> <span class="moddateby">(2008-04-09 Doug K.)</span><br /> Added 'pingtimeoutseconds' column and default to 5 seconds. The 'pingdbserver' column is deprecated.</p> <p><span class="code">oStartupTaskDefaultMethods/$logoffDatabase</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Removed code dealing with a separate 'Refs' session.</p> <p><span class="code">oStartupTaskDefaultMethods/autoSignIn</span> <span class="moddateby">(2008-04-19 Doug K.)</span><br /> Switch to setting the oSQLLists $:DefaultDBSessionObjRef rather than the session row.</p> <p><span class="code">oStartupTaskVarsTool/$#About</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Removed initialization of the oLogon object. Now using oDBSession object.</p> <p><span class="code">oStartupTaskVarsTool/$INITIALIZEERRORHANDLER</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Deprecated the $initializeErrorHandler method.</p> <p><span class="code">oStartupTaskVarsTool/$INITIALIZE_LOGN</span> <span class="moddateby">(2008-03-25 Doug K.)</span><br /> Moved all of the code which figured out the starting session row to a separate method, retStartupSessionRow. so that the code can be used by the new tvar 'db1sess'.</p> <p><span class="code">oStartupTaskVarsTool/$_initializeAppPrefs_localdatafile</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Revised the method so that it passes an OMNISQLDAM sessionrow to oAppPrefs, rather than the path name.</p> <p><span class="code">oStartupTaskVarsTool/$_pingVar</span> <span class="moddateby">(2008-03-25 Doug K.)</span><br /> Added $cando test to avoid notation errors. Removed the OK message as this object is non-visual.</p> <p><span class="code">oStartupTaskVarsTool/$constructTaskVars</span> <span class="moddateby">(2008-03-25 Doug K.)</span><br /> Added 'db1sess' and 'db2sess' to the tvars string.</p> <p><span class="code">oStartupTaskVarsTool/$initializeBeforeSignIn</span> <span class="moddateby">(2008-03-25 Doug K.)</span><br /> Added called to $initialize_db1sess, removed the call to $initialize_logn</p> <p><span class="code">oStartupTaskVarsTool/$initialize_db1sess</span> <span class="moddateby">(2008-03-25 Doug K.)</span><br /> Added new method to initialize the new 'db1sess' task variable if it exists.</p> <p><span class="code">oStartupTaskVarsTool/$initialize_local_prefs</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Check for the unicode version of Omnis Studio, if so, set the local prefs data file name to 'local_prefs_unicode.df1' The local prefs data file is in a common location which could be opened by both unicode or non-unicode versions of the app, so it is important to have separate data files for each or the non-unicode version will fail after the unicode version opens the df1 file.</p> <p><span class="code">oStartupTaskVarsTool/$initialize_local_prefs</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Revised the method so that it passes an OMNISQLDAM sessionrow to oAppPrefs, rather than the path name.</p> <p><span class="code">oStartupTaskVarsTool/$initialize_lsts</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Added setting the $:DBSessionObjectRef if the db1sess.$validref.</p> <p><span class="code">oStartupTaskVarsTool/$initialize_refs</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Initialize the Refs object by passing in the 'db1sess' object rather than a session row.</p> <p><span class="code">oStartupTaskVarsTool/$saveTaskVarPropertiesOnSignOut</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Check and use the 'db1sess' tvar rather than 'logn' if it exists.</p> <p><span class="code">oStartupTaskVarsTool/$saveTaskVarPropertiesOnSignOut</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Set the session object ref rather than the session row in the oSQLLists object.</p> <p><span class="code">oStartupTaskVarsTool/$setTaskVarPropertiesAfterSignIn</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Removed 'logn' based code, replaced with 'db1sess' based code. If 'db1sess' is a validref, then check $state with 'db1sess'.</p> <p><span class="code">oStartupTaskVarsTool/retStartupSessionRow</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> To avoid initialization error, check the 'damname' in the session row, if not set, default it to OMSQLDAM.</p> <p><span class="code">oStringTables/$#About</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Overhauled oStringTables to use stringtable file name suffixes. e.g. stringtable_it.txt, stringtables_fr.txt Only the language columns specified by the string table file name suffix will be loaded, others will be ignored. Only exceptions for each additional language need to be included in the string table file. Overhauled oStringTables to save and load database string table lists separately for each language. Only exceptions for each additional language need to be included in the string table saved to the database. Added 'source' column to master list for each language. This tells where the language text came from. Examples of text sources: stringtable_de.txt, database, myAppMain.sMn_stb,</p> <p><span class="code">oStringTables/$:LanguagesList_Database</span> <span class="moddateby">(2008-04-30 Doug K.)</span><br /> Added a property method which returns a list of the string tables languages stored in the database.</p> <p><span class="code">oStringTables/$:LanguagesList_TextFiles</span> <span class="moddateby">(2008-04-30 Doug K.)</span><br /> Added a property method which returns a list of the string tables languages in text files in the startupitems folder.</p> <p><span class="code">oStringTables/retStringTablesListFromTextFile</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Modify the method to remove 'other' language columns, and add a 'source_*' column.</p> <p><span class="code">oTableClassMethods_MYSQL/$setPrimaryKey</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Overrode the $setPrimaryKey method. Check for manual transactions, if so temporarily open an automatic transactions session and pass a statement object from that session to the oPrimaryKey.$getNextPrimaryKey method.</p> <p><span class="code">oTableClassMethods_base/$_retSelectWhereSQLText</span> <span class="moddateby">(2008-04-25 Doug K.)</span><br /> Added setting iExtraBindRow reference in the tBase table class if the extra bind row is used.</p> <p><span class="code">oTableClassMethods_base/$_retSelectWhereSQLText</span> <span class="moddateby">(2008-04-29 Josh L.)</span><br /> Changed ExtraQueryText to ExtraSQL so the column numbers will be processed correctly.</p> <p><span class="code">oTableClassMethods_base/$dodeletesBatch</span> <span class="moddateby">(2008-04-07 Doug K.)</span><br /> Reworked the method so that is only looks for one non-cascadedelete record, and if one is found, logs a check data error.</p> <p><span class="code">oTableClassMethods_base/$getActiveRecords</span> <span class="moddateby">(2008-04-30 Doug K.)</span><br /> Added error checking/loging to $fetch.</p> <p><span class="code">oTableClassMethods_base/$getAllRecords</span> <span class="moddateby">(2008-04-30 Doug K.)</span><br /> Added error checking/loging to $fetch.</p> <p><span class="code">oTableClassMethods_base/$getOperatorRecords</span> <span class="moddateby">(2008-04-30 Doug K.)</span><br /> Added error checking/loging to $fetch.</p> <p><span class="code">oTableClassMethods_base/$getPrimaryKeyRecord</span> <span class="moddateby">(2008-04-30 Doug K.)</span><br /> Added error checking/loging to $select and $fetch.</p> <p><span class="code">oTableClassMethods_base/$getWhere</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Log SQL error if fetch error.</p> <p><span class="code">oTableClassMethods_base/$initialize</span> <span class="moddateby">(2008-04-23 Doug K.)</span><br /> Use the cap() of the table name when looking classname suffix on the oCheckData_Tablename object.</p> <p><span class="code">oTableClassMethods_base/$insertEmptyRecord</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Refactored the method in an attempt to make it stronger.</p> <p><span class="code">oTableClassMethods_base/$selectCustom</span> <span class="moddateby">(2008-04-29 Josh L.)</span><br /> Added a parameter pExtraSQLRowOrString so that GROUP BY, HAVING, etc could be used. Modified the code to process and include it in the right place</p> <p><span class="code">oTableClassMethods_base/$selectWhere</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added log SQL error because the $sqlerror method has been overridden in tBase to allow $fetchBatch to intercept an error and attempt to retry the select fetch.</p> <p><span class="code">oTableClassMethods_base/$setDefaults</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Added error check on the return value from the ref.$retNextCounterNum</p> <p><span class="code">oTableClassMethods_base/$updateRow</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Bug fix. Change $insertnames to $updatenames</p> <p><span class="code">owcStringTablesSchemasEditor/$addNewLine</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added method to add a new line. Called by the context menu.</p> <p><span class="code">owcStringTablesSchemasEditor/saveColsListChanges</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Set the colident value after adding a new row to the schema class.</p> <p><span class="code">tBase/$_setTableClassExtraBindRowRef</span> <span class="moddateby">(2008-04-25 Doug K.)</span><br /> Added method for setting the iExtraBindRow reference in the tBase table class if the extra bind row is used.</p> <p><span class="code">tBase/$selectCustom</span> <span class="moddateby">(2008-04-29 Josh L.)</span><br /> Extra SQL so GROUP BY, HAVING can be used</p> <p><span class="code">wDBAdmin/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminConstraints/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminDataMover/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin.</p> <p><span class="code">wDBAdminDataViewer/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminDataViewer/setDisplay</span> <span class="moddateby">(2008-04-23 Doug K.)</span><br /> Add exception for OMSQLDAM which doesn't return $rowcount from the statement object.</p> <p><span class="code">wDBAdminIndexes/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminInteractiveSQL/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminPrimaryKeys/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminSchemas/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminSyncDatabaseToSchemas/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminSyncUsers/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdminUsers rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdminTables/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Reviewed and cleaned up code in all methods, especially error checking. Initialize and use ioDBAdmin rather than irDBAdmin and ioDBSession rather than ioLogon as applicable.</p> <p><span class="code">wDBAdmin_abstract/$#About</span> <span class="moddateby">(2008-04-11 Doug K.)</span><br /> Remove $setDBAdminRef methods and irDBAdmin ivar. Subwindow switched to having their own instance of ioDBAdmin.</p> <p><span class="code">wSQLMetaDataColsEditor_abstract/$_fixNullValues</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added check for $linecount to prevent infinite loop.</p> <p><span class="code">wSQLQueryBuilder/$destruct</span> <span class="moddateby">(2008-04-11 Doug K per Matthias H.)</span><br /> Changed Queries treelist container so that it can be resized. Added code to save the width to the class on $destruct</p> <p><span class="code">wSQLQueryBuilder/addSchemaCols</span> <span class="moddateby">(2008-03-18 Doug K.)</span><br /> Set LineNum var to pLineNum so that drag and drop for schemas list ends up in the dropped location.</p> <p><span class="code">wSQLQueryBuilder/addSchemaCols</span> <span class="moddateby">(2008-03-24 Doug K. per Chuck M.)</span><br /> Loop through the drop list from end to start so that columns are added in the right order.</p> <p><span class="code">wSecurityTimeoutSignIn/$construct</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">wSessionEdit/$#About</span> <span class="moddateby">(2008-04-10 Doug K.)</span><br /> Complete overhaul of the session edit subwindow. Made it 'dumb'. Moved the intelligence to the parent window.</p> <p><span class="code">wSessionEdit/createTablesOwnerLogonFile</span> <span class="moddateby">(2008-04-19 Doug K.)</span><br /> Added button and method to wSessionEdit to create a tablesowner logon file.</p> <p><span class="code">wSessionList/$#About</span> <span class="moddateby">(2008-04-10 Doug K.)</span><br /> Overhauled the session lists window. Made it 'dumb'. Move the smarts to the parent.</p> <p><span class="code">wSessionPicker_abstract/$#About</span> <span class="moddateby">(2008-04-12 Doug K.)</span><br /> Created superclass for the session picker series windows.</p> <p><span class="code">wSessionsManager/$#About - Sessions Manager</span> <span class="moddateby">(2008-04-10 Doug K.)</span><br /> Total overhaul of the sessions manager windows. Removed the 'Open Sessions' tab. Session pool sessions are hidden, so there isn't much purpose in having this tab. Removed the 'Open Sessions' tab. Session pool sessions are hidden, so there isn't much purpose in having this tab. Changed the window behavior so that the user is always in edit mode and that changes are automatically saved. Users are no longer required to first press Edit, then Save, before they can Test a session. Changed the parent/subwin structure so that the sessions list is in the parent and the subwindows reference the parent list.</p> <span class="code">wToolbar/$#About</span> <span class="moddateby">(2008-04-10 Doug K.)</span><br /> Added error checking and prompt to the $control method. <a name="swdocs4" /> <h3>swDocs4</h3> <p><span class="code">@00 User Documentation/@00 About</span> <span class="moddateby">(2008-03-18 Doug K.)</span><br /> Added StudioWorks documentation target to end users of applications written using the StudioWorks framework.</p> <p><span class="code">@20 Converting Data/@11 Data Converter Demo</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Added documentation on the new 'db2sess' myDataConverterDemo library.</p> <p><span class="code">@20 Converting Data/@15 Data Converter Instructions</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added instructions for setting up the data converter library.</p> <p><span class="code">@20 Converting Data/@21 Data Conversion Advice</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Added data conversion advice documentation.</p> <p><span class="code">@20 Quick Start Tutorial/@07 Adding a Table</span> <span class="moddateby">(2008-03-24 Doug K per Matthias H.)</span><br /> Removed the reference to the 'Collate-case-insensitive' checkbox. This has been removed from the meta-data editor.</p> <p><span class="code">@20 Quick Start Tutorial/@12 Adding a Child Table</span> <span class="moddateby">(2008-03-24 Doug K per Matthias H.)</span><br /> Removed the reference to the 'Collate-case-insensitive' checkbox. This has been removed from the meta-data editor.</p> <p><span class="code">@31 Database Sessions/@00 About</span> <span class="moddateby">(2008-03-25 Doug K.)</span><br /> Added documentation on the new oDBSession series of objects which replace the oLogon series objects.</p> <p><span class="code">@50 Field Handling/@00 About</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> Added documentation on the new field handling introduced 2008-03</p> <p><span class="code">@50 Lookups/@25 Intercepting Lookups</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added documentation for '$promptLookupRecordNotFound' method to intercept lookups.</p> <p><span class="code">@50 Lookups/@25 Intercepting Lookups</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added documentation for '$setMainListValues' method to intercept the field handler setting the main list values.</p> <p><span class="code">@61 Database Administration/@00 About</span> <span class="moddateby">(2008-04-17 Doug K.)</span><br /> Added documentation on the DB Admin tools.</p> <p><span class="code">@61 Database Administration/@61 Interactive SQL</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Added documentation for Interactive SQL window.</p> <p><span class="code">@72 Table Class Structure/@00 About</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> 1 Added documentation on the oTableClassMethods_DBMSVENDOR series of object classes.</p> <p><span class="code">@85 Manual Transactions/@00 About</span> <span class="moddateby">(2008-03-24 Doug K per Chuck M.)</span><br /> Modified sample code to set the transactionmode back to its original setting.</p> <p><span class="code">@85 Manual Transactions/@00 About</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Updated the sample code to work directly with 'db1sess' instead of 'logn'.</p> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Removed the 'logn' tvar.</p> <p><span class="code">Startup_Task/$initialize</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Renamed the swDocs4 startup_task $construct method to $initialize as it was causing startup trouble.</p> <span class="code">x-@00 DB Admin/@50 Interactive SQL</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Added documentation for Interactive SQL window. <a name="swgui4" /> <h3>swGui4</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Added the 'db1sess' tvar and removed the 'logn' tvar.</p> <p><span class="code">mCommands/$construct</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">mCommands/$construct</span> <span class="moddateby">(2008-04-28 Doug K.)</span><br /> Default the mCommands menu to disabled shortcut keys for developers.</p> <p><span class="code">mMainMenu/$construct</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">oConcretizer/$RUNTIMIZE</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Get the field properties list from the oFieldHandlerPropertiesList object class of the new field handler classes.</p> <p><span class="code">oConcretizer/$addFieldsAndLabels</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use the new oFieldHandlerPropertiesList object to build the list.</p> <p><span class="code">oConcretizer/addWindowClass</span> <span class="moddateby">(2008-04-21 Doug K.)</span><br /> Added 'Save class' command in an attempt to solve the problem with inconsistent runtimizing.</p> <p><span class="code">oConcretizer/createRuntimeWinClass</span> <span class="moddateby">(2008-04-21 Doug K.)</span><br /> Added 'Save class' command in an attempt to solve the problem with inconsistent runtimizing.</p> <p><span class="code">oConcretizer/retDecoratorTypesList</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Added method to work with the new oFieldHandlerProperitesList object class.</p> <p><span class="code">oConcretizer/retFieldHandlersFactoryRef</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Added method to work with the new oFieldHandlerProperitesList object class.</p> <p><span class="code">oConcretizer/retFieldPropertiesList</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Added method to work with the new oFieldHandlerProperitesList object class.</p> <p><span class="code">oConcretizer/setRuntimeFieldsAndFieldPropertiesList</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Remove early exits. Get the field properties list from the oFieldHandlerPropertiesList object class of the new field handler classes.</p> <p><span class="code">oConcretizer/setRuntimeFieldsAndFieldPropertiesList</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">oFieldHandlerLookupTypeAhead/$control</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> Changed code from using On ev... to Switch pEventCode/Case ev.../Case ev.../End Switch. For easier formatting.</p> <p><span class="code">oFieldHandlerLookupTypeAhead/$control</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> If the user hits the return key in a lookup field with the lookup list open, discard the event and queue a tab + queue OK to cleaning finish the lookup and then do the default kReturn action.</p> <p><span class="code">oFieldHandlerLookupTypeAhead/selectfetchMasterListRecords</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Tighten up error checking in the method. Add a prompt last error so that lookup errors won't go unnoticed.</p> <p><span class="code">oMenus/$installMainMenu</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">oReportsMenuObserver_abstract/$modifyReportProperties</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Cleaned up error checking.</p> <p><span class="code">oWindows/$retWinTitle</span> <span class="moddateby">(2008-04-21 Doug K.)</span><br /> Use the cap(BaseTable) for the stbid for the window instance title translation.</p> <p><span class="code">oWindows/checkRequiredProperties</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version. Removed early exits.</p> <p><span class="code">oWindows/setIconIDinRow</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Added bLogErrors=kFalse to suppress errors which we don't care about.</p> <p><span class="code">wComplexGrid_abstract/$#About</span> <span class="moddateby">(2008-04-24 Doug K. per Josh L.)</span><br /> Added wComplexGrid_abstract class. Copy the wComplexGrid_template to your application to use.</p> <p><span class="code">wComplexGrid_abstract/$_removeEmptyLines</span> <span class="moddateby">(2008-04-24 Josh L.)</span><br /> Removed the body of this method because it could be dangerous to someone who doesn't know about it.</p> <p><span class="code">wComplexGrid_abstract/$_setMode</span> <span class="moddateby">(2008-04-21 Josh L.)</span><br /> Changed from do inherited to the notation with the parameter</p> <p><span class="code">wComplexGrid_abstract/$_setNewLineDefaults</span> <span class="moddateby">(2008-04-24 Josh L.)</span><br /> Added this method to set default on an Extend Event.</p> <p><span class="code">wComplexGrid_abstract/$new</span> <span class="moddateby">(2008-04-24 Josh L.)</span><br /> Added the SetNewLineDefaults here so the defaults are set when a line is added.</p> <p><span class="code">wComplexGrid_template/$#About</span> <span class="moddateby">(2008-04-24 Doug K. per Josh L.)</span><br /> Added wComplexGrid_template a subclass of wComplexGrid_abstract which you would copy to your application to use.</p> <p><span class="code">wComplexGrid_template/$event</span> <span class="moddateby">(2008-04-24 Josh L.)</span><br /> Added the $_setNewLineDefaults method here to apply defaults when a line is added.</p> <p><span class="code">wEditList_abstract/$#About</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> Point the ifld ivar from oFieldHandler to the new oFieldHandlerController.</p> <p><span class="code">wEdit_abstract/$#About wEdit_abstract</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> Point the ifld ivar from oFieldHandler to the new oFieldHandlerController.</p> <p><span class="code">wHeadedList_autoconfig/$constructListObj</span> <span class="moddateby">(2008-03-15 Doug K. per Matthias H.)</span><br /> Set ivar iText_yes for the treatasboolean column so that other languages can be used.</p> <p><span class="code">wHeadedList_autoconfig/buildListObjFromMetaData</span> <span class="moddateby">(2008-03-15 Doug K. per Matthias H.)</span><br /> Use ivar iText_yes in the treatasboolean column rather than 'Yes', so that other languages can be used.</p> <p><span class="code">wList_abstract/$fetchRecords</span> <span class="moddateby">(2008-04-22 Doug K.)</span><br /> Clean up FlagOK error handling. Get rid of promptonce last error.</p> <p><span class="code">wList_autoconfig/$find</span> <span class="moddateby">(2008-04-22 Doug K.)</span><br /> Clean up FlagOK error handling.</p> <p><span class="code">wMainWindow/$eventClose</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">wMainWindow_NoShowHideNavList/$eventClose</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">wNavigationListEditor/$addWinInstIDs</span> <span class="moddateby">(2008-03-17 Doug K.)</span><br /> Modify method to allow the user to add multiple wininstids to be added to the navigation list at once.</p> <p><span class="code">wNavigationListEditor/$addWinInstIDs_continue</span> <span class="moddateby">(2008-03-17 Doug K.)</span><br /> Modify method to allow multiple wininstids to be added.</p> <p><span class="code">wPromptFindMultiCriteria_subwin/$#About</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> Deleted ivar ifld since it was not being used by this window.</p> <p><span class="code">wPromptModelessSubWin/$#About</span> <span class="moddateby">(2008-03-11 Doug K.)</span><br /> Point the ifld ivar from oFieldHandler to the new oFieldHandlerController.</p> <p><span class="code">wPromptShell/$event</span> <span class="moddateby">(2008-04-10 Doug K.)</span><br /> Make sure there is an OK button before setting the iButtonPressedNamed ivar.</p> <p><span class="code">wShell/$_flipSubWin</span> <span class="moddateby">(2008-03-24 Doug K per Andy H.)</span><br /> Moved the prToWin.$eventShow to AFTER the prToWin.$visible kTrue to solve a problem with setting the scrollbars to redraw correctly.</p> <p><span class="code">wShell_Lookup/$showSubWin</span> <span class="moddateby">(2008-03-05 Doug K.)</span><br /> Added $cando test before sending $:Mode message to the previous subwindow.</p> <p><span class="code">wSignIn/$construct</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for runtime version.</p> <p><span class="code">wSignIn/$signIn</span> <span class="moddateby">(2008-03-24 Doug K per Matthias H.)</span><br /> If the only session in the sessions list is the 'EditSessions' row, open the sessions manager window.</p> <p><span class="code">wSignIn/$signIn</span> <span class="moddateby">(2008-03-31 Doug K.)</span><br /> Check for $validref of the 'db1sess' object. If it exists, nothing to do, otherwise set the $:DefaultSessionRow in oSQLLists.</p> <p><span class="code">wSignIn/_retUsersList</span> <span class="moddateby">(2008-04-23 Doug K.)</span><br /> Changed from setting the default session row to setting the session object ref in 'lsts'.</p> <p><span class="code">wSignIn/insertDefaultSysAdminUser</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Calculate Urs_pkey and usr_pkey to cover both cases.</p> <p><span class="code">wSignIn/loadSessionsList</span> <span class="moddateby">(2008-03-24 Doug K per Matthias H.)</span><br /> Get language translation for 'EditSessions'. Added 'EditSessions' to sMn_stb_SessionsManager</p> <p><span class="code">wSignIn_20071124/insertDefaultSysAdminUser</span> <span class="moddateby">(2008-04-18 Doug K.)</span><br /> Calculate Urs_pkey and usr_pkey to cover both cases.</p> <p><span class="code">wWindowInstancesListEditor/$event</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Add a blank SQL class name line to the top of the list so that the user can clear the sqlclassname property.</p> <span class="code">wWindowInstancesListEditor/setEditFields</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Added bLogError=kFalse to suppress annoying error messages. <a name="swicons4" /> <h3>swIcons4</h3> No modifications <a name="swrefs4" /> <h3>swRefs4</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Removed the 'logn' tvar. Added tvar 'db1sess'.</p> <p><span class="code">oMenusList/$addNavigationMenuLines</span> <span class="moddateby">(2008-03-12 Doug K.)</span><br /> Commented out the code which was adding the RefsList and RefsLookupList navigation menu items. These window instances are to be added by the developer's SysAdmin module.</p> <p><span class="code">oRefs/$#About</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Overhaul the oRefs object so that it uses oDBSession instead of oLogon and only temporarily opens uses and close a second session for inserts/updates if the specified oDBSession is set to manual transactions.</p> <p><span class="code">oRefs/$:DBSessionObjectRef</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Added new method to return the ioRefsDBSessionObjectRef.</p> <p><span class="code">oRefs/$:DBSessionObjectRef.$assign</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Added new method to set the ioRefsDBSessionObjectRef.</p> <p><span class="code">oRefs/$destruct</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Added $destruct method with code to $deleteref ioRefsDBSessionObjectRef</p> <p><span class="code">oRefs/$initialize</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Receive the DBSession object reference rather than the session row as the parameter. Copy to ioRefsDBSessObjRef.</p> <p><span class="code">oRefs/$retListOfDatabaseStringTableLanguages</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added method which returns a list of the languages of string tables stored in the database (refs table).</p> <p><span class="code">oRefs/$retLookupList</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Speed the method by just fetching the specified 'lookup' records, not all records. (Some of the other records have large blobs)</p> <p><span class="code">oRefs/$retNextCounterNum</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Check the main session object if manual transactions, then open up our own session and assign it to the Refs Row variable.</p> <p><span class="code">oRefs/$retStringTablesList</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Use ioRefsDBSessionObjectRef instead of ioRefsLogonObj.</p> <p><span class="code">oRefs/$retStringTablesList</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added pLangaugeID parameter. A stringtable refs records is stored for each language with just the exceptions for that language. The 'RefsSubGroup' column is used to store the pLanguageID.</p> <p><span class="code">oRefs/$saveRefsRecord</span> <span class="moddateby">(2008-04-14 Doug K.)</span><br /> Check the main session object if manual transactions, then open up our own session and assign it to the Refs Row variable.</p> <p><span class="code">oRefs/$saveRefsRecord</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Removed the calls to $_setFixNulls. We should not be calling protected methods.</p> <p><span class="code">oRefs/$saveStringTablesList</span> <span class="moddateby">(2008-04-29 Doug K.)</span><br /> Added pLangaugeID parameter. A stringtable refs records is stored for each language with just the exceptions for that language. The 'RefsSubGroup' column is used to store the pLanguageID.</p> <p><span class="code">oRefs/$setCounterNum</span> <span class="moddateby">(2008-04-17 Doug K.)</span><br /> Added method to allow a sender to set the counter number.</p> <span class="code">oRefs/retMaxColValue</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Use ioRefsDBSessionObjectRef rather than ioRefsLogonObj <a name="swreports4" /> <h3>swReports4</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Removed the 'logn' tvar. Added tvar 'db1sess'.</p> <span class="code">oReports/$editReportProperties</span> <span class="moddateby">(2008-04-24 Doug K.)</span><br /> Removed early exits and error checking. <a name="swweb4" /> <h3>swWeb4</h3> <p><span class="code">Startup_Task/$#About</span> <span class="moddateby">(2008-04-16 Doug K.)</span><br /> Removed the 'logn' tvar. Added tvar 'db1sess'.</p> <p><span class="code">oHTMLTemplates/$:CSSLinks</span> <span class="moddateby">(2008-03-24 Doug K.)</span><br /> Use mod() function to test for developer version.</p> <p><span class="code">oRemoteTaskMethods/$initializeAllTaskVars</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Added initialize 'db1sess' to the task vars to change/set to object reference type variables</p> <p><span class="code">oRemoteTaskMethods/$initializePublicSearchTaskVars</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Added initialize 'db1sess' to the task vars to change/set to object reference type variables</p> <p><span class="code">oWebMonitor/$initialize</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Modified the code to use 'db1sess' instead of 'logn'.</p> <p><span class="code">oWebMonitor/$retWebStatsList</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Use 'db1sess' instead of 'logn'</p> <p><span class="code">rtDispatcher/$#About</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Added 'db1sess' tvar.</p> <span class="code">rtPublicSearch/$#About</span> <span class="moddateby">(2008-04-02 Doug K.)</span><br /> Added 'db1sess' tvar. <p class="footer">StudioWorks Documentation - Copyright 2005 Vencor Software </p></div> </body> </html>